ProfitBox360ProfitBox360
Indian Ecommerce research
India · Ecommerce

Real ROAS After RTO: Why 3.3x on Meta Can Still Lose Money

Rajesh8 min read

What we found

Only about 80% of orders from Meta ads get delivered in Profitbox360's client data. At 30% margin, real breakeven moves from 3.33x to about 4.2x reported — between those two numbers the dashboard says profit and the bank account says loss.

Meta counts a purchase the moment the order is placed. You make money only when the parcel is delivered and the cash comes in.

In Profitbox360's client data, only about 80% of the orders that come from Meta ads actually get delivered. That changes your breakeven math. At a 30% margin, breakeven ROAS is 3.33x. But if only 80% of reported orders get delivered, the dashboard has to show 3.33 ÷ 0.80 = 4.17x — call it 4.2x — before you actually break even.

So there is a gap. Between 3.3x and 4.2x reported ROAS, the dashboard says you are profitable. After delivery, you are not.

The numbers here come from 50+ Indian D2C brands and roughly 156,000 shipped orders analysed by Profitbox360 between January and July 2026 — COD-heavy brands at ₹1,200–1,800 AOV. In that client base, COD orders from Meta ads averaged 24% RTO, and about 80% of reported orders got delivered.

Why is Meta's ROAS higher than what you actually earn?#

Meta reports the purchase at checkout. But a COD order can still cancel before dispatch, come back as RTO, or get refused at the door. Meta never finds out. It counted the sale, charged you for the ad, and moved on.

For prepaid-heavy brands this barely matters — orders placed and orders delivered are almost the same number. For COD-heavy Indian brands they are not. In Profitbox360's client base, about 20% of the orders Meta reported never got delivered.

This spoils more than reporting. You scale campaigns, pick winning creatives and choose audiences based on people who clicked Buy — not people who accepted the parcel. The cost of each undelivered order shows up weeks later in your logistics numbers, where nobody connects it back to the campaign that caused it.

How much worse is RTO on orders from ads?#

In Profitbox360's client data:

NumberWhat it isCounted on
20%orders Meta reported that never got deliveredeverything Meta called a purchase
24%COD orders from ads that came backshipped COD orders from ads
17%orders that failed across the whole businessall shipped orders, all channels

Why are ad orders worse? Three reasons. Cold audiences trust you less and refuse more at the door. Ads push impulse buys, and impulse buys get refused three days later. And Meta's algorithm chases cheap purchases — and the cheapest buyers are low-commitment COD buyers. The same thing inflates fake orders on advertised products.

Simple read: your average RTO understates the RTO on your next rupee of ad spend.

How can 20%, 24% and 17% all be true?#

Because each one is counted on a different base. Follow 100 orders from Meta, rounded to whole orders:

  • 100 orders reported by Meta
  • 6 cancel before shipping
  • 94 ship: 52 COD, 42 prepaid
  • 13 COD orders come back (13 ÷ 52 = 25%; the client-base average is 24%)
  • 1 prepaid order comes back (1 ÷ 42 ≈ 2%; the average is 3%)
  • 80 get delivered

Now the numbers:

The 20%: 20 undelivered ÷ 100 reported = 20%. The 24%: 13 returns ÷ 52 shipped COD orders ≈ 24%.

The 17% is not in this walk at all. It covers the whole business — organic and repeat orders get delivered better than ad orders, and they pull the overall average down to about 17%.

No contradiction. Three numbers, three bases.

What is your real ROAS after RTO?#

One line: real ROAS = reported ROAS × delivery rate.

At an 80% delivery rate: 3.0x × 0.80 = 2.4x real.

Run it on ₹1 lakh of spend:

MetricReportedReal after delivery
ROAS3.0x2.4x
Revenue₹3,00,000₹2,40,000
Contribution at 30% margin₹90,000₹72,000
Contribution after ₹1L ad spend−₹10,000−₹28,000

At 3.0x reported, this account thought it was near breakeven. It was losing ₹28,000 per lakh of spend. And the table is still kind — each returned order also cost about ₹275 in shipping and handling, which is not counted above.

What breakeven ROAS should you actually target?#

At 30% margin: breakeven on delivered revenue = 1 ÷ 0.30 = 3.33x. At an 80% delivery rate: the dashboard must show 3.33 ÷ 0.80 = 4.17x.

Reported ROASReal at ×0.80At 30% margin
3.0x2.4xlosing
3.3x2.64xlosing
3.5x2.8xlosing
4.0x3.2xstill below breakeven
4.17x3.33xbreakeven
4.5x3.6xprofit

A campaign at 3.5x reported passes a 3.3x target easily. After delivery it is at 2.8x — losing. The campaign did not get worse after shipping. The dashboard was just counting the wrong thing from the start.

Two notes. Set the delivery rate from your ad traffic, not your overall numbers — ad orders deliver worse. And set it per campaign type: a warm retargeting campaign has more prepaid buyers and may honestly need only 3.5x reported, while a cold COD-heavy campaign needs 4.3x. One target for both misprices both.

Calculate your own RTO-adjusted ROAS#

Three numbers needed: reported ROAS, delivery rate (delivered orders ÷ orders Meta reported), and contribution margin.

Real ROAS = reported ROAS × delivery rate Required reported ROAS = (1 ÷ margin) ÷ delivery rate

Example. Reported ROAS 3.8x, delivery rate 76%, margin 32%:

  • Real ROAS: 3.8 × 0.76 = 2.89x
  • Breakeven on delivered revenue: 1 ÷ 0.32 = 3.13x
  • Required on the dashboard: 3.13 ÷ 0.76 = 4.12x

So a campaign showing 3.8x is still losing money.

How do you fix the measurement?#

Count a sale when the order is delivered and the cash is collected. Checkout is a fast signal for the algorithm, not final revenue. Three changes:

  1. Send delivery results back to Meta. Push delivery confirmations as server-side or offline events. Meta starts optimising toward buyers who actually accept parcels, not just buyers who click Buy.
  2. Compare the two revenues every week. Money the courier remitted ÷ revenue Meta reported, same period. If Meta says ₹10 lakh and ₹8 lakh came in, your factor is ×0.80. Keep this number next to ROAS in the same review — not in a logistics report weeks later.
  3. Use your own factor, not ours. Across Profitbox360's client base, ad traffic averages about ×0.80 and organic about ×0.95. Those are reference points. If your Meta traffic delivers at ×0.76, use ×0.76.

Meta counts the order when somebody clicks Buy. Your P&L counts it when somebody opens the door. For COD-heavy brands those are different events — and every undelivered order charges you twice, once in ad spend and once in shipping.

FAQ#

Does Meta know which orders became RTO? No, not on its own. Meta sees the checkout. It learns about delivery only if you send delivery results back as server-side or offline events.

Why is RTO 24% on ad orders if the delivery gap is 20%? Different bases. The 24% is counted on shipped COD orders from ads. The 20% is counted on everything Meta reported, cancellations included.

Why is the overall number 17%? Because the whole business is not ad traffic. Organic and repeat orders get delivered better, and they pull the overall average down to about 17% while COD ad orders sit near 24%.

Is 2.4x real ROAS good? Not at a 30% margin. Breakeven is 3.33x on delivered revenue, so 2.4x loses money.

How do I calculate my delivery rate? Delivered orders ÷ orders Meta reported, same period, with enough time for orders to reach delivered or returned status.

What reported ROAS do I need after RTO? (1 ÷ margin) ÷ delivery rate. At 30% margin and 80% delivery: about 4.2x on the dashboard to actually break even.

Rajesh

More research

Want these numbers read against your own?