
Ads Manager says 3x. Your finance sheet says something closer to 2.5x. The gap is the COD orders that left the warehouse and came back.
Shipway's FY25 ShipNotes data, as reported by the Amazon Shipping blog, puts RTO at about 26% on COD orders and under 2% on prepaid. Meta still counts every one of those COD orders as a purchase. RTO adjusted ROAS fixes the number by counting only revenue that reached a customer.
This guide gives you the formula, a worked ₹ example and a weekly method to track it by campaign.
RTO adjusted ROAS is delivered revenue divided by ad spend. It removes orders that went back to origin (refused, unreachable or undeliverable) from the revenue side, so you see what your ads returned in money you actually collected.
Platform ROAS answers "how many orders did this ad get credit for?". RTO adjusted ROAS answers "how much of that revenue landed?". For a prepaid-heavy brand the two numbers sit close together. For a COD-heavy Indian D2C brand they can drift far apart.
A quick note on terms:
RTO adjusted ROAS takes out RTO, and most teams take out pre-dispatch cancellations too. Customer returns belong in a separate returns adjustment, because the cost and the fix are different.
Platform ROAS ignores RTO because the ad platform records the sale at checkout, days before the courier knows whether the parcel will be accepted. Meta's own pixel reference defines the Purchase event as firing "when a purchase is made or checkout flow is completed."
So a COD order placed on Monday counts as a purchase on Monday. If the customer refuses it on Friday, nothing travels back to Ads Manager on its own. The campaign keeps the credit, and the algorithm keeps finding more buyers who look like that customer. It is one reason Meta purchases rarely match Shopify orders.
Shopify adds a second layer of fog. Merchants on the Shopify Community have asked for a separate RTO status because RTO and customer returns get mixed together in reporting. One reply in that thread said about 60% of one brand's "return rate" turned out to be RTO linked to bad pin codes, not product issues.
The RTO adjusted ROAS formula is delivered revenue divided by ad spend, where delivered revenue is gross order revenue minus the revenue of RTO and cancelled orders. There are two versions worth tracking.
Version 1: delivered ROAS
RTO adjusted ROAS = (Gross order revenue − RTO revenue − cancelled revenue) ÷ Ad spend
Version 2: delivered ROAS net of RTO cost
RTO adjusted ROAS (net) = (Delivered revenue − RTO logistics cost) ÷ Ad spend
Version 1 tells you how much revenue your ads truly brought in. Version 2 also charges each campaign for the shipping and packaging it burned on parcels that came back. The cost per RTO includes forward shipping, return shipping, packaging and, if you track it, damage and blocked capital.
These numbers are illustrative, not data from any brand. Say a brand spends ₹5L on Meta in a month and gets 1,000 orders at a ₹1,500 AOV.
| Line | Value |
|---|---|
| Ad spend | ₹5,00,000 |
| Orders (platform view) | 1,000 |
| Gross revenue | ₹15,00,000 |
| Platform ROAS | 3.0 |
| COD orders (60%) | 600 |
| Prepaid orders (40%) | 400 |
| RTO at 26% COD, 2% prepaid | 156 + 8 = 164 orders |
| Delivered revenue (836 × ₹1,500) | ₹12,54,000 |
| RTO adjusted ROAS | 2.51 |
| RTO logistics cost (164 × ₹200) | ₹32,800 |
| RTO adjusted ROAS, net of RTO cost | 2.44 |
The RTO rates here borrow Shipway's 26% COD and under 2% prepaid figures, and the ₹200 per RTO sits inside the ₹180 to ₹240 logistics-only range the Amazon Shipping blog gives as illustrative. Your own numbers will differ.
The point is the size of the drop. A 3.0 becomes 2.44 without a single setting changing in Ads Manager.
COD is where almost all of the gap comes from, because COD orders return to origin far more often than prepaid ones. The more of your revenue that is COD, the further your RTO adjusted ROAS falls below platform ROAS.
India leans heavily on COD. Razorpay, citing ET Prime Research (2024), says 60 to 65% of Indian e-commerce orders are placed via COD. Here is what the public data says about how those orders behave:
| Source | Finding |
|---|---|
| Shipway ShipNotes FY25 (via Amazon Shipping blog) | About 26% RTO on COD orders, under 2% on prepaid |
| Shipway ShipNotes FY25 (via Amazon Shipping blog) | 22% RTO when delivery is attempted in 1 to 2 days, 35% after 5+ days |
| Unicommerce India D2C Report 2026 | Overall RTO at 39.2% at the November 2025 festive peak, 25.6% in January 2026 |
| Unicommerce India D2C Report 2026 | Festive quarter: COD orders returned at 58%, prepaid under 15% |
Two things follow. First, a campaign that pulls a higher COD share will show a bigger gap, even at the same platform ROAS. Second, the gap moves with the season. A target ROAS that works in January can lose money in November, when RTO peaks.
Track RTO adjusted ROAS by joining each order to the campaign that drove it, waiting for delivery outcomes, then recomputing ROAS on delivered revenue only. Account-level numbers hide the real problem, because RTO is rarely spread evenly across campaigns.
Here is a weekly routine a lean team can run:
The ranking often flips once you do this. An illustrative example, not real data:
| Campaign | Spend | Platform ROAS | RTO share of revenue | RTO adjusted ROAS |
|---|---|---|---|---|
| Broad prospecting | ₹2,00,000 | 3.2 | 30% | 2.24 |
| Lookalike, prepaid offer | ₹2,00,000 | 2.8 | 8% | 2.58 |
On the platform view, broad prospecting wins and gets the next budget bump. On delivered revenue, the lookalike campaign returns more per rupee.
When RTO adjusted ROAS sits well below platform ROAS, fix the inputs that create RTO and change what you tell the ad platform to optimise for. Start with the campaigns where the gap is widest.
Then recheck the gap weekly. A falling gap tells you the fixes are working, even if platform ROAS barely moves.
If you want a quick sense of how much RTO costs you, the free RTO Simulator takes your monthly orders, AOV, COD share and RTO rates and shows the revenue and shipping lost each month.
Clevrr AI goes a step further inside your account. It reads delivery outcomes from Shiprocket, Delhivery and other logistics partners alongside your Meta and Google spend, so channels get credit for delivered revenue, not just booked orders. You see which campaign's ROAS is lying before you scale it.
RTO adjusted ROAS is the number your ad spend actually earned: delivered revenue over spend, ideally net of what RTO cost you in shipping. For a COD-heavy brand, it can sit well below what Ads Manager reports, and it can reorder which campaigns deserve more budget. It is also a first step towards judging ads on profit rather than ROAS alone.
Compute it weekly, per campaign, on orders old enough to have a final status. Judge targets against break-even ROAS on delivered revenue, and watch the festive season closely.
Want to size the leak first? Run your numbers through the RTO Simulator, or start free with 500 credits and let Clevrr flag the campaigns where RTO is eating your ROAS.
A good RTO adjusted ROAS is any figure comfortably above your break-even ROAS, which is roughly 1 ÷ your contribution margin %. At a 42% contribution margin, break-even sits near 2.4x. There is no universal benchmark, because margins, AOV and COD share vary by brand. Compare against your own break-even, not against another brand's platform ROAS.
Yes. Meta's pixel fires the Purchase event when a purchase is made or checkout is completed, which happens before delivery. A COD order that is later refused still counts as a purchase in Ads Manager unless you send delivery outcomes back yourself. That is why platform ROAS runs higher than RTO adjusted ROAS for COD-heavy brands.
RTO means the parcel never reached the customer and went back to you, so no payment was collected on a COD order. A customer return happens after delivery, when the buyer sends the product back. Keep them separate in Shopify. Mixing them makes product quality look worse than it is and hides courier, address and fake-COD problems.
Join hundreds of D2C brands using Clevrr AI to automate their growth and efficiency.
Join 500+ D2C founders using Clevrr AI to automate their operations and scale faster.
Get Started Free