Cash on Delivery and RTO: The Numbers Indian D2C Brands Get Wrong
Short answer
An order that returns to origin costs you forward freight, return freight, packaging, handling and the ad spend that produced it, while the ad platform still records it as a purchase. That is why reported return on ad spend routinely overstates what a COD-heavy brand actually banks. Set targets on delivered, paid orders and on contribution per delivered order instead, and bring returns down with prepaid incentives, address and number verification, confirmation before dispatch, and by treating high-return pincodes and cart profiles as a media decision rather than only a logistics one.
Published 2026-09-28 · Updated 2026-09-28
What a returned order actually costs
Count all of it rather than only the freight. A COD order that is refused or undeliverable carries the forward shipping charge, the return leg, packaging that cannot be reused, warehouse handling at both ends, the collection fee where one applies, and any damage or shrinkage on the unit that comes back. The product itself is recoverable inventory. Nothing else on that list is.
Then add the acquisition cost, which is usually the largest single item and the one most often left out of the conversation. You paid for that order at exactly the same rate as every delivered one. Pull a month of courier invoices and work out the real per-order figure for your own operation rather than borrowing an industry number, because it varies enormously with weight, category and courier mix.
Why reported ROAS is not your ROAS
Meta and Google record a purchase when the order is placed. Your bank records revenue when the cash is collected. Between those two moments sit every cancellation, failed delivery and refusal at the door, and nothing reports the difference back to the ad platform. A brand with a fifth of its orders coming back is reading a figure roughly a fifth too high before reverse costs are counted at all.
The correction is ordinary arithmetic. Take reported revenue, apply your delivered rate to get collected revenue, subtract reverse logistics on the failed orders, then divide by spend. Do it once split by payment method and the gap between prepaid and COD performance usually settles a budget argument that has been circling the business for months, because the prepaid campaigns generally turn out to be carrying the profitable half of the account.
The optimisation problem underneath
If your conversion event fires the moment an order is placed, the algorithm is being trained to find people who place orders rather than people who pay for them. Where COD-inclined buyers are cheaper to reach, which they generally are, delivery gets steered toward precisely the audience that returns most. This is not a targeting error. It is the system doing exactly what it was told to do.
The fix is to feed the real outcome back. Send a delivered or paid event alongside the order event, or update order values through offline conversion import once delivery status is known, and optimise on that instead. Brands that make the change often watch reported performance fall while banked contribution rises, which needs explaining internally and is worth the conversation it causes.
Prepaid conversion is the strongest lever you have
Every order moved from COD to prepaid removes the risk rather than reducing it. The mechanisms are well known and badly used: a modest discount or free shipping for paying online, a small handling charge that makes prepaid the obvious choice, UPI presented first at checkout, and the saving shown in rupees at the moment of decision rather than described somewhere in a policy page.
Model the incentive before setting it. If a returned order costs you several hundred rupees once everything is counted, a discount comfortably below that figure is profitable even when a share of the people taking it would have paid online regardless. The leakage comes from offering the same incentive to everybody, so target it at the carts and pincodes that genuinely return.
- A prepaid discount priced below your true cost of a returned order
- A COD handling fee shown at checkout rather than buried in terms
- UPI as the first and most prominent payment option
- Partial advance collection on higher-value carts
- The saving stated in rupees, beside the payment choice
Verification before the parcel leaves
A large share of returns is decided before dispatch, in bad data. Incomplete addresses, mistyped phone numbers, duplicate orders placed by the same person and deliberate nuisance orders all convert into a return with near certainty. A confirmation step on WhatsApp or by one-time password, with a short window to respond, catches a good deal of it and costs very little per order.
Keep a blocklist of numbers and addresses that have refused repeatedly, and treat unconfirmed high-value COD orders differently by asking for a part payment or a confirmation call. Several apps score orders for return risk before dispatch; accuracy varies considerably, so trial them against your own historical data rather than accepting the claims in their store listings, and expect to tune the threshold yourself afterwards.
The patterns worth acting on
Returns are never evenly distributed, and the concentration is usually obvious once somebody looks. Break your own history down by pincode, cart value, payment method, first-time against repeat customer, campaign, creative and time of day. Most brands find a small set of pincodes, one or two campaigns and a particular cart range carrying a disproportionate share of the damage, and that the rest of the business is performing perfectly well.
Then act in the right place. Pincodes with a persistent problem can be restricted to prepaid rather than blocked outright, which keeps the demand while removing the risk. Campaigns producing high-return orders can be excluded or bid down. Festive periods and heavy discounting both raise impulse ordering and refusal rates, so plan for a worse delivered rate during a sale instead of being surprised by it afterwards.
What belongs on the weekly report
Four numbers, tracked as a trend rather than as a snapshot: delivered rate, return rate split by payment method, prepaid share of orders, and contribution margin per delivered order. The last of those is the one that actually matters and the one almost no dashboard shows unless somebody has deliberately built it, because it needs courier costs and delivery status sitting alongside the order value.
Attribute delivery outcomes back to campaign and creative wherever your systems allow. A campaign with a strong reported return on spend and a poor delivered rate is worse for the business than an average campaign with clean delivery, and that difference is invisible on every platform report you will ever be shown, which is why the delivered view has to be assembled outside the ad accounts.
Illustrative arithmetic on a ₹1,000 COD order — substitute your own figures
| Line | Delivered and paid | Returned to origin |
|---|---|---|
| Revenue collected | ₹1,000 | Nothing |
| Packaging | Consumed in a sale | Consumed, nothing sold |
| Forward shipping | Paid once | Paid once |
| Return leg and handling | None | Paid again |
| Collection fee | Applies | Not applicable |
| Acquisition cost | Paid, and earned back | Paid, with nothing to show |
| Counted by the ad platform | Yes | Yes |
Related questions
Should we simply switch COD off?
Only if you can afford the order volume you would lose, which in most Indian categories is considerable. The more useful framing is making COD the more expensive and less convenient option rather than removing it. Brands that switch it off entirely tend to see a sharp drop in orders alongside much cleaner numbers, then reintroduce it selectively for repeat customers and low-risk pincodes.
Does charging a COD fee actually work?
It does two useful things at once: it moves a share of orders to prepaid and it recovers part of the cost of those that stay. The amount matters less than where it appears, which should be at the payment step directly beside the prepaid alternative. A fee disclosed only on a terms page irritates customers without changing any behaviour.
Is RTO the courier's fault?
Partly, and less often than brands assume. Genuine courier failures such as deliveries never attempted do happen and should be challenged with attempt data in hand. Most returns trace back to the order itself: a wrong number, an impulse purchase, a customer who ordered the same thing from three brands, or a category where people expected to inspect before paying.
How should we set ROAS targets with COD in the mix?
Set them on delivered revenue, then translate into a reported target for the platform to optimise against. If your delivered rate sits around seventy percent, the reported figure you must hit is proportionally higher than the one you actually need. Writing that translation down once stops the weekly argument about whether a campaign is performing.
Do prepaid discounts cost more than the returns they prevent?
Not if the discount is priced below your true cost of a returned order, which many brands have never worked out. The leakage comes from handing the same incentive to customers who would have paid online anyway. Target it at the segments with a real problem, and review the numbers quarterly, because the mix shifts as your traffic sources change.