ROAS or CPA? In most PPC blogs this is an e-commerce question: pick the metric, set the bid cap, scale the winner. For agencies running Meta ads in forex, crypto, iGaming and signals, the question is harder, because the thing you actually care about — a first-time deposit, a funded account, a paid Telegram join — usually happens days after the click, off-platform, and well outside Meta’s attribution window.
Choose the wrong primary metric and you will scale campaigns that look profitable inside Ads Manager while bleeding money at the broker or operator level. This guide reframes ROAS vs CPA for regulated finance verticals, where the conversion is delayed, the value is uneven, and the attribution is broken by default.
Why the standard ROAS playbook breaks in finance
In e-commerce, the purchase happens on-site, fires a pixel, and reports a clean revenue value back to Meta within seconds. ROAS is trustworthy because the numerator (revenue) is real and immediate.
Finance funnels violate every one of those assumptions:
- The conversion is delayed. A Meta click leads to a landing page, then a Telegram channel, then a broker sign-up, then KYC, then a deposit. The FTD can land a week after the click.
- The conversion happens off Meta. Deposits occur on the broker’s platform or the exchange, not on a page Meta can see. The pixel never fires for the event that matters.
- The value is wildly uneven. One funded forex account might deposit 250 EUR; another deposits 25,000 EUR. A single whale distorts blended ROAS for an entire ad set.
- Accounts get banned. Regulated-niche advertisers run across multiple Business Managers precisely because bans are routine. When a BM dies, so does its in-platform ROAS history.
So the real choice is not “ROAS or CPA” in the abstract. It is “which metric can I measure accurately given a delayed, off-platform, uneven conversion.” For most finance agencies, the honest answer starts with a cost metric, not a return metric.
ROAS in a finance context
ROAS (Return on Ad Spend) = Revenue / Ad Spend. Spend 1,000 EUR, drive 3,000 EUR in attributed deposit value, and you have 3x ROAS.
ROAS is the right north star when you can reliably attribute revenue back to the ad — and in finance that requires deliberate plumbing:
- Deposit values must flow back from the broker/operator CRM to the ad level.
- Those values must be matched to the original click, usually via the Facebook Click ID (fbclid) captured at the Telegram or landing-page step.
- The match has to survive the multi-day gap between click and deposit.
When that pipe exists, ROAS is powerful because it respects the uneven value problem: it lets Meta’s value optimisation chase the whale, not just the cheap sign-up. But ROAS computed from a half-connected pipe is worse than useless — it tells a confident story built on the 40% of deposits you happened to attribute.
A few finance-specific traps:
- Gross revenue is not your margin. A broker paying you a 30% revenue share means a 3x “ROAS” on gross deposits is really closer to break-even for you.
- Bonus and churn. iGaming first deposits triggered purely by a bonus often churn before they are profitable. High day-one ROAS can mask negative day-30 ROAS.
- Single-Business-Manager blind spots. If you run five BMs and only two report deposit values cleanly, your “account ROAS” is a fiction.
CPA in a finance context
CPA (Cost Per Acquisition) = Ad Spend / Conversions. The catch is the definition of “acquisition.” In finance you have a stack of them, and they are not interchangeable:
- Cost per landing-page lead — cheap, abundant, weakly correlated with revenue.
- Cost per Telegram join — the key mid-funnel signal for signals providers and many crypto/iGaming funnels. Measurable per ad if you attribute joins via fbclid.
- Cost per FTD (first-time deposit) — the metric the client actually pays for.
- Cost per funded/qualified account — for prop firms and brokers with KYC gates.
CPA is the more honest default for finance precisely because cost is something you can always measure cleanly — you know what you spent — and you can attach it to whichever real conversion you have managed to track. You do not need broker revenue values to compute cost-per-Telegram-join; you only need accurate join attribution.
Where CPA misleads:
- A flat CPA hides value spread. A 40 EUR cost-per-FTD looks identical whether those FTDs deposit 200 EUR or 5,000 EUR. CPA alone cannot tell a media buyer they are buying small fish efficiently.
- Wrong-rung optimisation. Optimising to cost-per-Telegram-join is only safe if joins reliably convert to deposits. If join-to-FTD rates differ across creatives, cheap joins can be expensive deposits.
So which one should you optimise for?
A practical decision framework for regulated finance verticals:
Lead with cost-per-FTD (or cost-per-funded-account) when
- You can log FTDs but cannot yet pipe accurate deposit values back per ad.
- Deposit sizes are relatively consistent (common for fixed-bonus iGaming offers or standardised prop-firm challenge fees).
- The client’s contract is priced per acquisition (CPA deals, hybrid deals).
This is the most common starting point. Cost-per-FTD is concrete, defensible to the client, and survives account bans because you are tracking it in your own system, not Meta’s.
Lead with ROAS (deposit-value-based) when
- You have a working revenue-back pipeline from broker/operator to ad level.
- Deposit values vary enough that average CPA hides who is actually profitable.
- You are scaling a proven funnel and want Meta’s value optimisation to find depositors, not just sign-ups.
Lead with cost-per-Telegram-join when
- Telegram is the core funnel step (signals channels, many crypto/iGaming offers) and you have proven a stable join-to-FTD rate.
- You need a fast optimisation signal because FTDs are too sparse or too delayed to optimise on directly.
In finance, mid-funnel join data is often the only signal dense enough to actually steer Meta. The trick is to optimise to joins while watching cost-per-FTD as the guardrail.
Whichever metric you lead with, feed it back to the algorithm
The metric you optimise on is only as good as the events Meta actually receives. A conversion that never reaches the bidding engine cannot be optimised toward, so the algorithm keeps buying the cheap clicks it can see rather than the deposits you care about. If you have decided cost-per-FTD is your number, the FTD has to be logged and matched back to the click that caused it; if it is deposit ROAS, the deposit value has to make the same journey.
That plumbing is the work behind any honest metric in this niche, and it is the reason cost-per-FTD is the safer default: cost is something you always know, whereas a return figure is only as trustworthy as the share of conversions you managed to attribute.
Read both metrics together
Optimising on one number does not mean reporting on one number. The clearest finance dashboards put the cost metric and the value metric side by side per ad:
- Cost-per-FTD tells you efficiency — are you buying depositors cheaply.
- Deposit ROAS tells you quality — are those depositors worth anything.
An ad with a 35 EUR cost-per-FTD and 1.4x deposit ROAS is a quietly losing campaign that a CPA-only view would have praised. An ad with a 90 EUR cost-per-FTD and 6x ROAS is a winner that a CPA-only view would have paused. You need both rungs visible on the same screen to make that call, so the underperformers surface before you have spent another week on them.
Common mistakes in finance PPC measurement
- Trusting Meta’s in-platform ROAS for off-platform deposits. Meta cannot see the broker. Any ROAS it reports is a proxy at best.
- Optimising to cheap mid-funnel events with no FTD guardrail. Cheap Telegram joins or leads that never deposit will happily scale forever.
- Using gross deposit revenue instead of your revenue share. A 30% rev-share deal needs roughly 3.3x gross ROAS just to break even on spend, before your own costs.
- Ignoring the value spread. Averages hide whales and minnows. Look at the distribution, not just the mean.
- Losing measurement when a Business Manager dies. Track FTDs and joins in a system you own across all your BMs, not inside any single Meta account, so a ban does not erase your history.
The bottom line
For finance ad agencies, the ROAS vs CPA debate resolves differently than it does for e-commerce. Cost-per-FTD (or cost-per-funded-account) is the most honest default because cost is always measurable and the conversion is one you control. Deposit-based ROAS is the upgrade you graduate to once you have a reliable revenue-back pipeline. And cost-per-Telegram-join is the dense mid-funnel signal that often does the actual steering — as long as cost-per-FTD stays the guardrail.
The hard part was never the formula. It is getting a delayed, off-platform, uneven conversion attributed back to the ad that caused it, and keeping that history when an account gets banned. Solve attribution first, and the metric choice gets easy.
Want to track cost-per-FTD and cost-per-Telegram-join per ad, with deposits fed back to Meta via CAPI? Start a free trial or talk to us about your funnel.