Calculating ROAS, MER and Blended CAC (MBA DM)
Use this reference in Week 4 (paid search budgets) and Weeks 7–8 (analytics and the capstone pitch). Session 1 set the module’s health check: LTV ≥ 3× CAC (Week 1 notes). This page shows how to calculate the numbers behind that check without fooling yourself.
What you should be able to do
- Calculate ROAS, break-even ROAS, MER, channel CAC, blended CAC and fully loaded CAC from a monthly P&L and ad reports.
- Calculate contribution margin, a contribution-based LTV, LTV:CAC and CAC payback.
- Explain why platform-reported, analytics-attributed and incremental results differ, and which to use for which decision.
- Avoid the common mistakes that make a Nepali D2C brand look profitable when it is not.
1. Definitions and formulas
ROAS (return on ad spend) = revenue attributed to ads ÷ ad spend
(Google Ads shows this as "Conv. value / cost"; × 100 for a %)
Gross margin % = (revenue − cost of goods sold) ÷ revenue
Contribution margin % = (revenue − COGS − variable order costs) ÷ revenue
variable order costs: delivery, packaging, payment fees, COD returns
Break-even ROAS = 1 ÷ margin % (use contribution margin for a realistic floor)
MER (marketing efficiency) = total revenue ÷ total marketing spend
Blended ROAS = total revenue ÷ total paid media spend
Channel (paid) CAC = channel spend ÷ new customers attributed to that channel
Blended CAC = total paid media spend ÷ ALL new customers (paid + organic + referral)
Fully loaded CAC = all acquisition costs ÷ all new customers
(media + creative + agency + influencers + marketing salaries + tools)
LTV (contribution basis) = contribution per customer over a stated period (e.g. 12 months)
LTV:CAC = LTV ÷ CAC (module target: ≥ 3)
CAC payback (months) = months until cumulative contribution per customer ≥ CAC
Three definitions need a decision before you calculate:
- “Revenue.” Use delivered revenue excluding 13% VAT and after returns. Order value on the day of purchase overstates revenue when cash-on-delivery (COD) orders are refused.
- “Marketing spend” in MER. Practitioners use MER in more than one way; there is no standards body for it. In this module, MER uses all marketing spend, and “blended ROAS” uses paid media only. State your definition on every slide.
- “New customer.” CAC counts first-time buyers, not orders and not leads. A cost per lead is a different metric (see the CAC vs CPA self-check in Week 4).
Why break-even ROAS = 1 ÷ margin: if each NPR 1 of revenue leaves NPR 0.40 after product and order costs, you need NPR 2.50 of revenue to pay back NPR 1 of ads (2.50 × 0.40 = 1.00). Below that ROAS every sale loses money. For a full COD and return-to-origin version, use the break-even ROAS calculator for Nepali sellers.
2. Worked example: a Nepali D2C brand (illustrative numbers)
Pahadi Organics is a hypothetical Kathmandu brand selling tea and spice boxes on its own website, delivered nationwide. Every number below is illustrative for one month, chosen to make the arithmetic clear. None is a benchmark.
Inputs
| Item | NPR / value |
|---|---|
| Delivered revenue, excluding VAT, after returns | 2,400,000 |
| Orders | 1,600 |
| New (first-time) customers | 1,000 |
| Cost of goods sold | 45% of revenue |
| Variable order costs (delivery, packaging, payment fees, COD returns) | 15% of revenue |
| Paid media: Meta 300,000; Google 120,000; TikTok 60,000 | 480,000 |
| Other marketing: influencers 80,000; creative/agency 90,000; marketing salaries 150,000 | 320,000 |
| Total marketing spend | 800,000 |
Attribution views of the same month
| Channel | Spend | Platform-reported revenue | GA4-attributed revenue | GA4 new customers |
|---|---|---|---|---|
| Meta | 300,000 | 1,650,000 | 1,080,000 | 420 |
| 120,000 | 720,000 | 640,000 | 230 | |
| TikTok | 60,000 | 240,000 | 120,000 | 70 |
The other NPR 560,000 of GA4 revenue came from organic search, direct, email and WhatsApp.
Step-by-step results
| Metric | Calculation | Result |
|---|---|---|
| AOV | 2,400,000 ÷ 1,600 | NPR 1,500 |
| Gross margin | 1 − 0.45 | 55% |
| Contribution margin | 55% − 15% | 40% |
| Break-even ROAS (gross) | 1 ÷ 0.55 | 1.82 |
| Break-even ROAS (contribution) | 1 ÷ 0.40 | 2.50 |
| Meta ROAS: platform vs GA4 | 1,650,000 ÷ 300,000 vs 1,080,000 ÷ 300,000 | 5.50 vs 3.60 |
| Google ROAS: platform vs GA4 | 720,000 ÷ 120,000 vs 640,000 ÷ 120,000 | 6.00 vs 5.33 |
| TikTok ROAS: platform vs GA4 | 240,000 ÷ 60,000 vs 120,000 ÷ 60,000 | 4.00 vs 2.00 |
| Blended ROAS (paid media) | 2,400,000 ÷ 480,000 | 5.00 |
| MER (all marketing) | 2,400,000 ÷ 800,000 | 3.00 |
| Blended CAC (paid media) | 480,000 ÷ 1,000 | NPR 480 |
| Fully loaded CAC | 800,000 ÷ 1,000 | NPR 800 |
| Contribution after marketing | 2,400,000 × 0.40 − 800,000 | NPR 160,000 |
Customer value. Assume each new customer’s first order contributes 1,500 × 0.40 = NPR 600, and customers then place on average 0.15 repeat orders a month at the same AOV, worth 0.15 × 1,500 × 0.40 = NPR 90 a month.
- 12-month LTV = 600 + 12 × 90 = NPR 1,680
- LTV:CAC (fully loaded) = 1,680 ÷ 800 = 2.10, below the module’s 3× target
- CAC payback: 600 after the first order, then +90 a month → 690, 780, 870. Contribution passes CAC (NPR 800) in month 3 after the first order.
What a manager should conclude
- The business is profitable this month (NPR 160,000 after marketing) and the MER of 3.00 clears the contribution break-even of 2.50, but not by much.
- TikTok looks fine on its own platform (4.00) but sits below break-even (2.00) in GA4. It needs an incrementality test before more budget, not an automatic cut: upper-funnel channels are under-credited by last-click-style views.
- Platforms together claim NPR 2,610,000, more than the brand’s total revenue of 2,400,000. That is double counting, not extra sales.
- LTV:CAC of 2.1 says the growth engine is fragile. Levers: raise repeat purchase (email and WhatsApp flows, subscriptions), raise contribution margin (fewer COD refusals, better delivery rates), or lower fully loaded CAC. More ad spend alone does not fix it.
3. Attribution caveats: three lenses on the same sale
| Lens | What it measures | Strength | Blind spot |
|---|---|---|---|
| Platform-reported | Conversions the ad platform credits to itself within its attribution window | Fast; needed for in-platform optimisation | Each platform credits itself, so totals overlap; includes view-through credit |
| Analytics-attributed (GA4) | One credit per key event, shared across channels by the property’s model | De-duplicated across channels; one source of truth | Misses offline closes (WhatsApp, phone, COD refusals) unless imported; depends on tagging |
| Incrementality (lift tests) | Extra conversions caused by ads, versus a holdout group or region that saw none | Closest to cause and effect | Needs volume, time and budget; results describe one period and one setup |
Facts to keep straight:
- Meta reports by an attribution setting chosen in Ads Manager (click and view windows); the default is commonly 7-day click and 1-day view. Check the setting in the account before comparing numbers.
- GA4 offers three attribution models: data-driven, paid and organic last click, and Google paid channels last click. First click, linear, time decay and position-based were removed in November 2023. Direct visits get credit only when the whole path is direct.
- Google Ads Conversion Lift compares a group that saw ads with a held-back control group and reports incremental conversions, incremental cost per action (iCPA) and incremental ROAS (iROAS). It is not available to every account. A simpler alternative is a geo holdout: pause a channel in comparable districts for a few weeks and compare sales with districts where it kept running.
Which number for which decision:
- Daily bidding and creative tests → platform numbers (that is what the algorithm optimises).
- Channel budget split → GA4 plus offline conversions, cross-checked with MER.
- “Should we spend more at all?” → MER and contribution after marketing, plus a lift test for the largest or most disputed channel.
See the Analytics & CRO Reference for the GA4 reports and the attribution model table used in class.
4. Python calculator
Paste this into any Python 3 environment (Google Colab works); it uses no libraries. Replace the inputs with your sandbox or client numbers.
"""ROAS, MER and blended CAC calculator. All figures are illustrative NPR for a
hypothetical Nepali D2C brand for one month; replace them with your own."""
revenue_net = 2_400_000 # delivered sales, excluding 13% VAT, after returns
orders = 1_600
new_customers = 1_000 # first-time buyers this month
cogs_pct = 0.45 # product cost as a share of net revenue
variable_pct = 0.15 # delivery, packaging, payment fees, COD returns
paid_media = {"Meta": 300_000, "Google": 120_000, "TikTok": 60_000}
other_marketing = {"Influencers": 80_000, "Creative/agency": 90_000, "Marketing salaries": 150_000}
platform_reported = {"Meta": 1_650_000, "Google": 720_000, "TikTok": 240_000}
ga4_revenue = {"Meta": 1_080_000, "Google": 640_000, "TikTok": 120_000}
ga4_new_customers = {"Meta": 420, "Google": 230, "TikTok": 70}
paid_total = sum(paid_media.values())
marketing_total = paid_total + sum(other_marketing.values())
aov = revenue_net / orders
gross_margin = 1 - cogs_pct
contribution_margin = gross_margin - variable_pct
print(f"AOV NPR {aov:,.0f}")
print(f"Gross margin {gross_margin:.0%} break-even ROAS {1 / gross_margin:.2f}")
print(f"Contribution margin {contribution_margin:.0%} break-even ROAS {1 / contribution_margin:.2f}")
print()
print(f"{'Channel':8} {'Spend':>9} {'Platform ROAS':>14} {'GA4 ROAS':>9} {'GA4 CAC':>8}")
for ch, spend in paid_media.items():
print(f"{ch:8} {spend:>9,} {platform_reported[ch] / spend:>14.2f} "
f"{ga4_revenue[ch] / spend:>9.2f} {spend / ga4_new_customers[ch]:>8,.0f}")
print(f"Platforms claim NPR {sum(platform_reported.values()):,} vs actual revenue NPR {revenue_net:,}")
print()
print(f"Blended ROAS (paid media) {revenue_net / paid_total:.2f}")
print(f"MER (all marketing) {revenue_net / marketing_total:.2f}")
print(f"Blended CAC (paid media) NPR {paid_total / new_customers:,.0f}")
print(f"Fully loaded CAC NPR {marketing_total / new_customers:,.0f}")
profit_after_marketing = revenue_net * contribution_margin - marketing_total
print(f"Contribution after marketing NPR {profit_after_marketing:,.0f}")
print()
# Customer value: first order now, then 0.15 repeat orders per month at the same AOV.
cac = marketing_total / new_customers
first_order_cm = aov * contribution_margin
monthly_repeat_cm = 0.15 * aov * contribution_margin
ltv_12m = first_order_cm + 12 * monthly_repeat_cm
print(f"12-month LTV (contribution) NPR {ltv_12m:,.0f} LTV:CAC {ltv_12m / cac:.2f}")
month, cumulative = 0, first_order_cm
while cumulative < cac:
month += 1
cumulative += monthly_repeat_cm
print(f"CAC payback: month {month} after the first order "
f"(cumulative contribution NPR {cumulative:,.0f} >= CAC NPR {cac:,.0f})")
print()
# Exercise answers
print("Ex1 break-even ROAS at 35% contribution margin:", round(1 / 0.35, 2))
print("Ex2 MER:", round(1_800_000 / 450_000, 2), "| fully loaded CAC:", round(450_000 / 600))
print("Ex3 Meta ROAS platform vs GA4:", round(900_000 / 200_000, 2), round(520_000 / 200_000, 2))
print("Ex4 iROAS:", round((3_100_000 - 2_800_000) / 150_000, 2))
print("Ex5 payback months:", -(-(1_200 - 500) // 100))
Output (Python 3.11):
AOV NPR 1,500
Gross margin 55% break-even ROAS 1.82
Contribution margin 40% break-even ROAS 2.50
Channel Spend Platform ROAS GA4 ROAS GA4 CAC
Meta 300,000 5.50 3.60 714
Google 120,000 6.00 5.33 522
TikTok 60,000 4.00 2.00 857
Platforms claim NPR 2,610,000 vs actual revenue NPR 2,400,000
Blended ROAS (paid media) 5.00
MER (all marketing) 3.00
Blended CAC (paid media) NPR 480
Fully loaded CAC NPR 800
Contribution after marketing NPR 160,000
12-month LTV (contribution) NPR 1,680 LTV:CAC 2.10
CAC payback: month 3 after the first order (cumulative contribution NPR 870 >= CAC NPR 800)
Ex1 break-even ROAS at 35% contribution margin: 2.86
Ex2 MER: 4.0 | fully loaded CAC: 750
Ex3 Meta ROAS platform vs GA4: 4.5 2.6
Ex4 iROAS: 2.0
Ex5 payback months: 7
Channel CAC uses GA4 new customers: Meta 300,000 ÷ 420 ≈ NPR 714. Notice that every channel CAC is higher than the blended CAC of NPR 480, because blended CAC also counts the customers who arrived through organic search, referrals and WhatsApp.
5. Common mistakes
| Mistake | Why it misleads | Fix |
|---|---|---|
| Comparing ROAS with a target that ignores margin | A 3× ROAS can lose money at a 30% contribution margin | Compare with break-even ROAS = 1 ÷ contribution margin |
| Using order value including VAT and before COD refusals | Inflates revenue and ROAS | Delivered revenue, excluding 13% VAT, after returns |
| Adding up platform-reported revenue | Platforms overlap; totals can exceed real revenue | Reconcile with the P&L; use MER as the reality check |
| Calling paid CAC “blended CAC” | Hides how much growth depends on organic and repeat channels | Label which customers and which costs are in the formula |
| Leaving salaries, agency and creative out of CAC | CAC looks far cheaper than the business really pays | Report fully loaded CAC alongside media-only CAC |
| LTV on revenue, not contribution | Overstates LTV:CAC | Calculate LTV on gross or contribution margin (Week 1 rule) |
| Counting leads or orders as customers | Repeat orders and unqualified leads shrink “CAC” | CAC = cost ÷ new paying customers |
| Cutting upper-funnel channels on last-click data alone | They may drive searches that other channels get credit for | Test with a holdout before cutting |
| Mixing months | Spend in Dashain, sales in Tihar | Use the same period; note festival seasonality |
6. Exercises (answers below)
- A brand’s contribution margin is 35%. What is its break-even ROAS?
- Monthly revenue is NPR 1,800,000, total marketing spend is NPR 450,000 (all costs), and 600 new customers were acquired. Calculate MER and fully loaded CAC.
- Meta spend is NPR 200,000. Ads Manager reports NPR 900,000 of purchase value; GA4 attributes NPR 520,000 to Meta. Calculate both ROAS figures and say which you would use for the budget meeting.
- A geo holdout runs Meta ads in test districts costing NPR 150,000. Sales there are NPR 3,100,000, against NPR 2,800,000 expected from matched control districts. Calculate iROAS and decide whether the spend was profitable for a brand with a 2.50 break-even ROAS.
- Fully loaded CAC is NPR 1,200. A customer’s first order contributes NPR 500 and each later month contributes NPR 100. How many months after the first order until payback?
Answers
1. 1 ÷ 0.35 = **2.86**. Any ROAS below 2.86 loses money on contribution. 2. MER = 1,800,000 ÷ 450,000 = **4.0**. Fully loaded CAC = 450,000 ÷ 600 = **NPR 750**. 3. Platform ROAS = 900,000 ÷ 200,000 = **4.5**; GA4 ROAS = 520,000 ÷ 200,000 = **2.6**. Use GA4 (de-duplicated, consistent across channels) for budget allocation and quote the platform figure only as Meta's own view. If Meta is a major channel, propose a lift test to settle the gap. 4. Incremental revenue = 3,100,000 − 2,800,000 = 300,000. iROAS = 300,000 ÷ 150,000 = **2.0**, below the 2.50 break-even, so the incremental sales did not pay for the ads at this spend level. Test lower budgets, better creative or different audiences before scaling. 5. Remaining after the first order: 1,200 − 500 = 700. 700 ÷ 100 = **7 months**.Further reading
- Course notes: Google Ads Reference (max CPC from target CAC), Week 7 notes (LTV:CAC calculator), Analytics & CRO Reference.
- Practitioner guides on this site: ROAS Calculator & Guide (2026), Break-even ROAS Calculator for Nepali Online Sellers, How to Calculate CAC and LTV.
- Google Ads Help, About Target ROAS bidding (ROAS as conversion value ÷ cost): support.google.com/google-ads/answer/6268637
- Google Analytics Help, Get started with attribution (available models, deprecated models): support.google.com/analytics/answer/10596866
- Google Ads Help, About Conversion Lift (incremental conversions, iCPA, iROAS): support.google.com/google-ads/answer/12003020
- Meta Business Help Center, About attribution settings: facebook.com/business/help/2198119873776795
- The Value Added Tax Act, 2052 (1996), Section 7 (13% rate), via ird.gov.np

