Why High Reported ROAS Can Hide Ecommerce Losses in India
Anupriya Das, Ecommerce Analytics Associate11 min read
Indian D2C brands see an average Meta-reported ROAS of 3.65x, but Meta reports about 25% more purchases than stores can match, and 26.5% of its orders come from existing customers. Judge ads on the new-customer revenue you keep after cancellations, RTO and returns, and compare it with a break-even ROAS of 1 ÷ CM2, about 2.41x at the 41.5% average CM2.
Can a high reported ROAS still lose money?#
Yes: the average Meta-reported ROAS of 3.65x can drop below break-even once over-counted purchases, existing customers and lost orders are removed. These benchmarks come from ProfitBox360 research, 2025 (client data and shopper surveys).
| Measure | Benchmark |
|---|---|
| Meta-reported ROAS | 3.65x |
| Google Ads-reported ROAS | 4.5x |
| Meta purchases above matched store orders | 25% |
| Meta-attributed orders from existing customers | 26.5% |
| CM1: net revenue minus product cost | 63.5% |
| CM2: after shipping, packaging, payment fees, RTO and returns | 41.5% |
| CM3: after marketing | 13% |
What one beauty brand's audit found#
A beauty brand with ₹30 crore of annual revenue saw its platform-reported ROAS fall from 4.2x to 2.45x in a 2025 audit. The figures come from ProfitBox360 client audit, 2025 (beauty brand, ₹30 crore annual revenue).
| Measure | Result |
|---|---|
| Platform-reported ROAS | 4.2x |
| ROAS after removing view-through conversions and repeat buyers | 2.45x |
| CM3 | 4% of net revenue |
The two corrections removed about 41.7% of the revenue credited to the ads. For every ₹1,00,000 of ad spend, the dashboard claimed ₹4,20,000 of revenue. Only ₹2,45,000 came from new customers after a click. The other ₹1,75,000 came from people who had only seen an ad or had bought before.
The brand kept ₹4 of contribution from every ₹100 of net revenue. After marketing, the average Indian D2C brand keeps ₹13 and the average beauty brand keeps ₹20.
The audit corrected for those two things only. Cancelled, refused and returned orders would take the 2.45x lower still.
Why dashboard ROAS runs high#
Four gaps sit between a platform's ROAS and the money a brand keeps.
- Over-reporting: Meta reports about 25% more purchases than brands can match to store orders. For every ₹1,00,000 of matched orders, Meta shows about ₹1,25,000. Meta can credit a sale to someone who only saw the ad, and may use statistical modelling where data is missing.
- Existing customers: 26.5% of Meta-attributed orders come from people who had bought before. Of every ₹1,00,000 of matched Meta revenue, about ₹26,500 comes from them. Some would have bought anyway.
- Orders that never become revenue: ad platforms count an order when it's placed. Indian COD orders are cancelled before dispatch 8.3% of the time, come back as RTO on 24.3% of shipments and are returned on 17% of deliveries. For prepaid orders the rates are 3.5%, 2.8% and 11.5%.
- Margin: ROAS measures revenue, not profit. After product cost, shipping, packaging, payment fees, RTO and returns, the average brand keeps 41.5% of net revenue.
What ROAS do you need to break even?#
Divide 1 by your CM2: at the 41.5% Indian average, you need 2.41x on the revenue you keep.
Break-even ROAS = 1 ÷ CM2
1 ÷ 41.5% = 2.41x, so every ₹1,00,000 of ad spend needs ₹2,40,964 of kept revenue just to pay for itself.
Use your own category's CM2. At the beauty benchmark CM2 of 54%, break-even is 1.85x. At the fashion benchmark of 34%, it's 2.94x.
Measure ROAS against net revenue: what's left after cancellations, RTO and returns. If your ad platform's purchase value includes GST and your margin figures don't, remove GST first.
How much booked revenue you keep#
Expect to keep about 69.5% of the order value an ad platform counts, at Indian benchmark rates.
Illustrative example: 1,000 orders at the benchmark payment mix and order values.
- 625 COD orders at ₹850 (62.5% of orders) and 375 prepaid orders at ₹1,250
- Cancellation, RTO and return rates apply evenly across order values
- Returned orders are refunded in full
Share kept = (100% − cancelled before dispatch) × (100% − RTO) × (100% − returned after delivery)
| Payment | Booked value | Not cancelled | Delivered (not RTO) | Not returned | Share kept | Value kept |
|---|---|---|---|---|---|---|
| COD | ₹5,31,250 | 91.7% | 75.7% | 83% | 57.6% | ₹3,06,000 |
| Prepaid | ₹4,68,750 | 96.5% | 97.2% | 88.5% | 83% | ₹3,89,062.50 |
| Total | ₹10,00,000 | 69.5% | ₹6,95,062.50 |
- COD: 91.7% × 75.7% × 83% = 57.6%
- Prepaid: 96.5% × 97.2% × 88.5% = 83%
- Total kept: ₹6,95,062.50 ÷ ₹10,00,000 × 100 = 69.5%
So ₹3,04,937.50 of every ₹10,00,000 an ad platform counts never stays with the brand. COD causes most of that gap.
How far does a 3.65x Meta ROAS really fall?#
At benchmark rates, it falls to about 1.49x on the new-customer revenue a brand keeps, below the 2.41x break-even.
Illustrative example: a brand spends ₹2,85,000 a month on Meta ads, its only marketing cost. Ads Manager shows ₹10,40,250 of purchases, the benchmark 3.65x.
- Over-reported and existing-customer purchases have the same average value as other purchases
- Meta's orders follow the benchmark payment mix, so 69.5% of their booked value is kept
- The whole business runs at the benchmark CM2 of 41.5% and CM3 of 13%
| Step | Revenue | Removed | ROAS |
|---|---|---|---|
| Reported by Meta | ₹10,40,250 | — | 3.65x |
| Match to store orders (÷ 1.25) | ₹8,32,200 | ₹2,08,050 | 2.92x |
| Remove existing customers (× 73.5%) | ₹6,11,667 | ₹2,20,533 | 2.15x |
| Keep only revenue that stays (× 69.5%) | ₹4,25,109 | ₹1,86,558 | 1.49x |
- Contribution before ads: ₹4,25,109 × 41.5% = ₹1,76,420
- Result after ads: ₹1,76,420 − ₹2,85,000 = −₹1,08,580 a month
- Kept revenue needed to break even: ₹2,85,000 ÷ 41.5% = ₹6,86,747, so the ads fall ₹2,61,638 short
Only 40.9% of the revenue Meta reported (80% × 73.5% × 69.5%) is new-customer revenue the brand keeps. So Meta's dashboard would need to show about 5.9x (2.41 ÷ 40.9%) before new-customer orders pay for their ads.
The real figure is probably lower still. New customers are first-time buyers, and first-time COD buyers come back as RTO 30% of the time, against 24.3% overall. At 30%, COD keeps 53.3% of booked value instead of 57.6%, if cancellations and returns stay the same.
Removing every existing customer is deliberate, because the question is what the ads caused. Meta itself calls incrementality experiments, such as Conversion Lift, the best way to measure that. A lift test shows how many existing-customer orders the ads really moved.
Why the business can still show a profit#
Repeat and organic orders carry little or no ad cost, so they cover the loss on new customers.
In the same example, marketing costs CM2 − CM3 = 41.5% − 13% = 28.5% of net revenue. So ₹2,85,000 of marketing means ₹10,00,000 of net revenue.
| Orders | Net revenue | Contribution before ads | Ad cost | Contribution after ads |
|---|---|---|---|---|
| New customers from Meta | ₹4,25,109 | ₹1,76,420 | ₹2,85,000 | −₹1,08,580 |
| Repeat, organic and other orders | ₹5,74,891 | ₹2,38,580 | ₹0 | ₹2,38,580 |
| Whole business | ₹10,00,000 | ₹4,15,000 | ₹2,85,000 | ₹1,30,000 |
The P&L shows a healthy 13% CM3, and Meta shows 3.65x. Both look fine, yet the new-customer ads lose ₹1,08,580 a month. Whether that loss is worth carrying depends on how often those customers buy again.
Which attribution settings and delays should you check?#
Check each platform's attribution setting, its conversion window and how long recent data takes to settle, then match its orders to your store's.
| Platform | Where to check | Setting to note | Reporting delay |
|---|---|---|---|
| Meta Ads Manager | Ad set attribution setting; Compare attribution settings | 7-day click, 1-day view and 1-day engagement by default | Purchases can be credited up to 7 days after a link click |
| Google Ads | Each conversion action's settings | Data-driven or last click; 30-day click window by default | 3 hours for last click, 15 hours for other models; dated by ad impression |
| GA4 | Admin > Data display > Events > Attribution settings | Reporting attribution model; 90-day lookback for purchases | 24–48 hours to process; credit can shift for 12 days |
Meta Ads Manager#
- Windows: by default, Meta counts purchases within 7 days of a click, 1 day of a view and 1 day of an engagement. Click-through counts purchases within 1 or 7 days of a link click. View-through counts purchases within 1 day of an ad impression. Engage-through counts purchases within 1 day of a non-link click, or of a 5-second video play.
- The 2026 click change: in March 2026, Meta announced that click-through attribution for website and in-store conversions would count link clicks only. Shares, saves and other non-link clicks moved into engaged-view, renamed engage-through. Meta also cut an engaged video view from 10 seconds to 5 seconds. Some accounts may still use the earlier definitions while the change rolls out.
- Comparing windows: in Ads Manager, open the Columns: Performance menu and select Compare attribution settings. You can compare 1-day view, 1-day click, 7-day click and 28-day click. Put 7-day click next to the default: the gap is the sales that views and engagements claim.
- Removed API windows: from 12 January 2026, the Ads Insights API stopped returning 7-day view and 28-day view results. A dashboard tool that used them shows fewer conversions from that date, even though sales didn't change.
- Delay: Meta can credit a purchase up to 7 days after a link click, so give a week's results at least 7 more days to settle.
Google Ads#
- Attribution model: data-driven is the default for most conversion actions, and last click is the only alternative. The default conversion window is 30 days after an ad click. First click, linear, time decay and position-based are no longer supported, and actions that used them were moved to data-driven.
- Dates: Google Ads reports conversions on the ad impression date, while other tools use the conversion date. Conversions can be reported up to 90 days after the click. So last week's ROAS keeps rising as late orders arrive, and recent days look worse than they are.
- Processing time: conversion tracking data is ready within 3 hours under last click and 15 hours under other models.
- Matching store dates: add the "All conv. (by conv. time)" column when comparing with store data by order date.
- Same checks: apply the kept-revenue cut to Google's 4.5x benchmark too. That gives 4.5 × 69.5% = 3.13x, before any check for over-counting or existing customers. Report brand-name search campaigns separately, because people searching your brand already know you.
GA4#
- Where: in Admin, under Data display, click Events, then Attribution settings. You need the Marketer role or above.
- Reporting attribution model: GA4 offers data-driven, paid and organic last click, and Google paid channels last click. Changing the model applies to historical and future data. First click, linear, time decay and position-based models were removed in November 2023.
- Lookback window: purchases and other key events use a 90-day lookback by default, with 30 or 60 days as options. Acquisition key events use 30 days, or 7. Lookback changes apply only going forward.
- Processing time: data processing can take 24–48 hours, and report data may change during that time. Attribution credit for key events can change for up to 12 days.
A monthly check that catches the gap#
- Close the period first: wait at least 7 days after it ends for Meta and 12 days for GA4 attribution.
- Match platform purchases with store orders by order ID, and record the gap.
- Split the matched orders into new and existing customers.
- Apply your own cancellation, RTO and return rates by payment method.
- Compare the result with 1 ÷ your CM2.
- Note any change to attribution settings or models, because a settings change moves ROAS without any change in sales.
FAQ#
Should you turn off view-through attribution in Meta?#
Keep the setting and read view-through results separately. Meta uses an ad set's attribution setting for delivery as well as reporting. Use Compare attribution settings in Ads Manager to place 7-day click beside the default. Treat the gap as sales that views and engagements claim, and confirm their real effect with a lift test.
Why doesn't Meta's purchase count match Shopify orders?#
Meta's number is an attribution estimate, while Shopify records actual orders. Meta can credit people who only saw an ad, link purchases across devices and model missing data. Indian D2C brands see Meta report about 25% more purchases than they can match to store orders, so reconcile the two by order ID every month.
Does break-even ROAS change by product category?#
Yes, because break-even ROAS equals 1 ÷ CM2, and CM2 varies widely by category. At the benchmark CM2 of 54%, an Indian beauty brand breaks even at 1.85x on kept revenue. A fashion brand, with a CM2 of 34% after heavier returns and RTO, needs 2.94x. Use your own CM2 rather than an average.
How much does COD lower the revenue a brand keeps?#
At Indian benchmark rates, a COD order keeps about 57.6% of its booked value, against 83% for a prepaid order. COD loses 8.3% to cancellations before dispatch, 24.3% of shipments to RTO and 17% of deliveries to returns. On an ₹850 COD order, that leaves about ₹490 of kept revenue.
Can a campaign below break-even ROAS still be worth running?#
Yes, if the new customers it brings buy again soon enough to repay the first-order loss. Repeat orders carry little ad cost, so they can turn a loss-making first sale into profit. Check payback before scaling. If first orders lose money and few customers return, cut spend rather than chase a higher dashboard ROAS.
Is GA4 revenue a safer number to judge ads on?#
GA4 is a useful cross-check, but it isn't a profit figure. Its purchase event fires when the order is placed, so COD orders later cancelled, refused or returned still count as revenue. Its data-driven model also splits credit across channels. Use GA4 to compare channels, and store and courier data for kept revenue.
Anupriya Das
Ecommerce Analytics Associate, ProfitBox360Anupriya writes about ecommerce tracking, attribution and profitability. Her articles explain how to interpret store and advertising data, calculate acquisition costs and contribution margins, and recognise gaps that affect business decisions.
How this research is checked, and corrected