B2B measurement tool
ROAS calculation: formula, examples and B2B calculator
Divide the revenue from your ads by what you spent on them. $40,000 of revenue on $10,000 of spend is 4.00x, or 400%. See the steps.
Quick calculator
Calculate or solve a target
$75,000 ÷ $19,500
- Status
- Quick calculation
- Cohort and evidence
- Not reconciled
- Provenance
- Manual inputs
Import a record or exact build-prompt response
Paste a canonical record, a COMPLETE build-prompt response, or a hash-bound export envelope. Existing decisions are recomputed.
On this page
- How to calculate ROAS
- Use the calculator
- Which return should a B2B company use?
- Reconcile one cohort before trusting the ratio
- Apply spend and revenue adjustments explicitly
- Check source and join coverage
- Result states
- Synthetic example: mature B2B cohort
- Synthetic example: cohort still open
- Synthetic example: partial finance join
- How to hand the calculation to finance and revenue operations
- Quick answers
- Related resources
- Sources and viewing notes
How to calculate ROAS
ROAS formula
ROAS = ad revenue / ad spend
- Choose the campaigns and dates you are measuring.
- Add up the ad spend for those campaigns and dates, after any credits or refunds.
- Add up the revenue from the customers those same campaigns produced, after refunds.
- Divide revenue by spend. The result is your ROAS as a multiple.
- Multiply by 100 if you want a percentage.
| Ad spend | Revenue | Calculation | ROAS | Percentage |
|---|---|---|---|---|
| $2,000 | $1,000 | $1,000 / $2,000 | 0.50x | 50% |
| $5,000 | $15,000 | $15,000 / $5,000 | 3.00x | 300% |
| $10,000 | $40,000 | $40,000 / $10,000 | 4.00x | 400% |
| $19,500 | $75,000 | $75,000 / $19,500 | 3.85x | 384.62% |
4:1, 4.00x and 400% are the same result written three ways. Google Ads sets targets as a percentage: $5 in sales for each $1 of ad spend is a 500% target ROAS.
A 4:1 ROAS means the selected return basis contains $4 for every $1 of matching ad spend. It does not say that the company earned $3 of profit. Payroll, agency fees, software, cost of service and other expenses may sit outside this calculation.
In B2B, a deal can close months after the click, so the ad platform and finance may report different revenue for the same spend. The division stays the same. What changes is which return you put on top, and this page counts only recognized revenue or collected cash as realized ROAS.
Mistakes that change the answer
- Mismatched dates: dividing June revenue by June spend when those deals came from a March campaign. Compare them with March spend.
- Mismatched campaigns: dividing all company revenue by the spend of one channel.
- Counting open deals: adding pipeline to revenue before those deals close.
- Mixing sources: using the platform's conversion value and calling it finance revenue.
- Small samples: at low spend, one deal can swing ROAS, so name the deal count.
Solve for a target
The same arithmetic works in reverse:
required return = target ROAS × net ad spend
allowed ad spend = return / target ROAS
With a $25,000 budget and a 2.5x target, the required return is $62,500. With $62,500 of return and a 2.5x target, the allowed spend is $25,000.
Break-even ROAS
Break-even ROAS is the point where gross profit from the revenue covers the ad spend and nothing else.
break-even ROAS = 1 / gross margin
At a 70% gross margin, break-even is 1 / 0.70 = 1.43x, or 143%. At a 40% margin, it is 2.50x. Below that level, the ads lose money before payroll, agency fees or software. To turn it into a revenue goal, choose Required return in the calculator and enter 1.43 as the target: a $10,000 budget needs $14,300.
This uses only the revenue counted so far. If customers renew later, a low early ROAS can still pay back, so state how many months of revenue you included.
ROAS vs. ROI
ROAS compares revenue with ad spend. ROI takes costs out of the return and compares what is left with the investment. ROI definitions vary, so state which costs you included.
ROI = (gross profit - investment) / investment
Take $40,000 of revenue, a 70% gross margin and $10,000 of ad spend. ROAS is 4.00x. Gross profit is $28,000, so ROI on ad spend alone is ($28,000 - $10,000) / $10,000 = 180%. Add $8,000 of agency fees to the investment and ROI falls to ($28,000 - $18,000) / $18,000 = 55.56%. ROAS stays at 4.00x, because this example leaves agency fees out of ad spend.
Use the calculator
Choose what you want to solve:
- ROAS from ad spend and return
- Required return from ad spend and target ROAS
- Allowed ad spend from return and target ROAS
Then choose the return basis. The calculator keeps four values separate:
- Recognized revenue ROAS: net recognized revenue divided by matching net ad spend
- Collected cash ROAS: cash collected divided by matching net ad spend
- Platform-attributed value multiple: the ad platform's attributed conversion value divided by matching platform spend
- Open pipeline multiple: open opportunity value divided by matching spend
Open pipeline is never labeled ROAS. It describes deals that may still change or never close.
The workspace shows the calculated result beside its evidence state. It also names the next missing input or source, so a valid ratio cannot hide an immature cohort or incomplete record.
Zero spend has no valid ROAS denominator. The calculator returns INVALID instead of infinity. A missing return stays Unknown; it never becomes $0. An observed $0 return remains a real zero and produces 0.00x when spend is valid.
Which return should a B2B company use?
Choose the return number that answers the question under review, then name that basis in the result.
Use recognized revenue when the question is how much revenue finance has recognized from the cohort. Finance must apply the company's accounting policy, and the spend must cover the same customers and time period. The IFRS 15 overview explains at a high level that revenue recognition follows performance obligations and the transfer of promised goods or services. Your finance team decides which policy applies to your company and contract.
Collected cash answers a different question: how much cash from the cohort has arrived by the cutoff? Cash timing can differ from revenue timing. IRS Publication 538 gives a narrow US federal tax explanation of cash and accrual methods. It is not a replacement for your accounting policy.
Platform-attributed conversion value is an advertising measurement value. Google Ads explains that advertisers configure conversion values, and that the selected attribution model changes how credit is assigned. Record the platform, conversion actions, attribution model and conversion window beside this number. Keep it separate from finance-confirmed revenue and cash.
Open pipeline is a forecast of opportunities that remain open. Show it as open pipeline / spend. Do not add it to recognized revenue, collected cash or platform value.
Reconcile one cohort before trusting the ratio
Start with one population. Freeze these fields before comparing spend with return:
- Cohort: the accounts, leads, opportunities or customers included.
- Spend window: the dates and campaigns that created the matching spend.
- Attribution window: the period in which the platform assigns conversion credit.
- Outcome cutoff: the last date included for CRM and finance outcomes.
- Revenue rule: the exact finance basis used for recognized revenue or cash.
- Currency: one currency for every value in the calculation. Normalize foreign-currency amounts before import and record the conversion provenance.
Google Ads defines a conversion window as the period after an ad interaction in which a conversion can be recorded. That window does not tell you when a B2B sales cohort is mature. Use your documented sales-cycle horizon and finance close rule. Show the outcome cutoff and the next observation date.
When the cohort is still open, the calculator can display valid arithmetic as PENDING_MATURITY. It cannot call the result review-ready.
Apply spend and revenue adjustments explicitly
Start with gross values. Record each adjustment and its source, then calculate the net basis.
net ad spend = gross platform spend + included fees - spend credits - spend refunds
net recognized revenue = gross recognized revenue - revenue refunds + approved revenue adjustments
Keep fees outside net ad spend when your review policy excludes them. State the fee rule in the record and apply the same rule to every cohort you compare.
Google Ads documents conversion adjustments that can restate a conversion value after a partial return or retract a conversion after events such as a cancellation. This supports keeping adjustments visible. It does not decide how finance should account for a refund.
Negative net spend or negative net revenue requires review. The tool preserves the values and returns an exact repair request instead of silently forcing them to zero.
Check source and join coverage
List the source for each lane:
| Lane | Typical owner | Evidence to record |
|---|---|---|
| Ad spend | Paid media | Platform or invoice source, campaign scope, spend dates, currency |
| Platform value | Paid media or analytics | Platform, conversion actions, model, window and reporting date |
| Open pipeline | Revenue operations | CRM source, stage definition, cohort join key and cutoff |
| Recognized revenue | Finance | Ledger or revenue system, recognition rule, cohort join key and cutoff |
| Collected cash | Finance | Payment or ledger source, currency, cohort join key and cutoff |
This calculator defines join coverage as:
join coverage = eligible source records with a validated match / eligible source records
Show the numerator, denominator, unmatched count, join key, date coverage and exclusions. A 90% match rate does not prove that attribution is correct. A missing source also cannot prove a measured zero.
For example, 90 matched finance records out of 100 eligible CRM records produces 90% join coverage and 10 unmatched records. The result stays provisional until the reviewer accepts the missing population or repairs the join.
Result states
The calculator uses five states. The ratio remains visible when the arithmetic is valid, while the state records whether the evidence supports a decision.
| State | Meaning | What to do next |
|---|---|---|
REVIEW_READY | The selected realized-return lane has matching scope, mature cutoff, compatible currency, required sources and valid nonzero spend. | Send the exported record to finance, revenue operations and paid media for review. |
PROVISIONAL | The arithmetic is valid, but a reconciliation field prevents a final conclusion. | Complete the named field or accept the documented exclusion. |
PENDING_MATURITY | The cohort's outcome window remains open. | Keep the result frozen and repeat it after the next observation date. |
INSUFFICIENT_EVIDENCE | A required value or source is Unknown. | Collect the exact source named in the evidence request. |
INVALID | Spend is zero, currencies conflict, dates are impossible or scope definitions disagree. | Repair the conflicting input before using the ratio. |
A missing pipeline value does not block recognized-revenue ROAS. A missing finance source does block a finance-confirmed result. Platform value cannot fill that gap.
Synthetic example: mature B2B cohort
Synthetic example. No client or Maestro performance data is used.
A company freezes one paid-search cohort in USD. The campaign ran from 1 January through 31 January. The company's documented outcome horizon has passed, and the outcome cutoff is 30 June.
| Input | Value |
|---|---|
| Gross ad spend | $20,000 |
| Spend credit | $1,000 |
| Included fee | $500 |
| Net ad spend | $19,500 |
| Gross recognized revenue | $78,000 |
| Revenue refund | $3,000 |
| Net recognized revenue | $75,000 |
| Collected cash | $60,000 |
| Platform-attributed value | $92,000 |
| Open pipeline | $25,000 |
The four lanes remain separate:
recognized revenue ROAS = $75,000 / $19,500 = 3.85x
collected cash ROAS = $60,000 / $19,500 = 3.08x
platform-attributed value multiple = $92,000 / $19,500 = 4.72x
open pipeline multiple = $25,000 / $19,500 = 1.28x
The 4.72x platform value does not replace the 3.85x recognized-revenue result. The 1.28x pipeline multiple remains open pipeline.
If the finance and CRM records use the declared join key, every required source is present, and the join coverage passes the company's review rule, the recognized-revenue lane can reach REVIEW_READY.
Synthetic example: cohort still open
Synthetic example.
A February cohort has $12,000 of net spend, $8,000 of recognized revenue, $18,000 of collected cash and $140,000 of open pipeline at a 31 March cutoff. The company's documented outcome horizon has not passed.
The tool can show 0.67x recognized-revenue ROAS and 1.50x collected-cash ROAS as provisional arithmetic. The result state is PENDING_MATURITY. The $140,000 pipeline value appears only as an 11.67x open-pipeline multiple.
The next action is to preserve the frozen February cohort and repeat the calculation after the named observation date. Do not move later leads into the old cohort.
Synthetic example: partial finance join
Synthetic example.
A mature cohort has $30,000 of net spend. CRM contains 120 eligible closed records, but only 96 have a validated match in the finance export.
join coverage = 96 / 120 = 80%
unmatched records = 24
Finance-confirmed revenue for the unmatched records is Unknown. The calculator preserves the available arithmetic and returns PROVISIONAL or INSUFFICIENT_EVIDENCE, based on the selected review rule. It does not turn the 24 unmatched records into $0.
The repair request names the missing join source, the expected key, the 24 unmatched records and the cutoff used for both systems.
How to hand the calculation to finance and revenue operations
- Freeze the cohort and cutoff.
- Export the hash-bound JSON handoff. It contains the canonical input record and recomputed output, including every state, source, adjustment, request and calculation lane.
- Export CSV or Markdown for a readable review.
- Ask paid media to confirm spend scope, platform settings and conversion values.
- Ask revenue operations to confirm the CRM population, stage rules, join key and unmatched records.
- Ask finance to confirm the revenue or cash basis, adjustments, currency and cutoff.
- Reimport the accepted JSON and require the same normalized result before making a budget decision.
The export should answer four questions without opening the calculator: Which population was measured? Which return basis was selected? What evidence remains missing? What action comes next?
Quick answers
What is a good ROAS?
There is no universal target. A viable target depends on gross margin, sales and service costs, payback timing, cash constraints and which return basis you selected. Set the target from your economics and label the basis. Break-even ROAS gives you the floor.
Is 2.5 ROAS the same as 250%?
Yes. A 2.5x ROAS equals 250% of spend returned on the selected basis. It does not mean 250% profit.
Can pipeline count as ROAS?
No. Show open pipeline as an open-pipeline multiple. Calculate realized ROAS from recognized revenue or collected cash with the matching cohort and spend.
Should I use platform revenue or finance revenue?
Use platform-attributed value for platform measurement and optimization. Use the approved finance source for finance-confirmed realized ROAS. Keep both visible so reviewers can explain the gap.
What happens when spend is zero?
The result is INVALID. Division by zero does not produce a usable ROAS.
What happens when revenue is missing?
The value remains Unknown, and the result becomes INSUFFICIENT_EVIDENCE. A missing value is never treated as zero.
Can I calculate target ROAS in Excel?
Yes. Use =Return/Spend for ROAS, =TargetROAS*Spend for required return, and =Return/TargetROAS for allowed spend. Add explicit checks for blank values, zero spend, currency mismatches and scope. The downloadable record from this page keeps those checks and the evidence fields together.
Related resources
- Facebook Ads Cost Calculator
- Facebook Ads Reporting Template
- LinkedIn Ads Cost Guide
- Facebook Ads Audit
- LinkedIn Ads Audit
Sources and viewing notes
- Google Ads: conversion tracking data
- Google Ads: conversion values
- Google Ads: attribution models
- Google Ads: conversion windows
- Google Ads: conversion adjustments
- Google Ads: about Target ROAS bidding
- IFRS Foundation: IFRS 15 overview
- IRS Publication 538
- JEMSU: ROAS Calculator, 00:13 to 00:28, for the simple arithmetic explanation
- Ordway: Revenue Recognition for SaaS Contracts under ASC 606, 10:44 to 11:20, for the bundled-service recognition illustration
Sources were accessed on 1 October 2026, and the Target ROAS page on 31 October 2026. The break-even, ROI and mistakes sections are Maestro's arithmetic and recommendations. Platform documentation and interfaces can change. The calculator records the measurement rule you supply; it does not choose an accounting policy for your company.
Two short explanations to watch
Simple ROAS arithmetic
JEMSU, 00:13–00:28. Use this for the division, then return to the calculator to name the return basis. Watch the passage on YouTube.
Why recognized revenue can follow delivery
Ordway, 10:44–11:20. This is a practitioner illustration, not accounting advice. Watch the passage on YouTube.
Download the complete handoff kit
The review prompt needs a receipt from the shipped evaluator. Keep the evaluator and verifier in one folder, then run node verify-roas-envelope.mjs EXPORTED-ENVELOPE.json > evaluator-receipt.json.