How to Reduce RTO on COD Orders From Meta Ads: A Playbook for Indian D2C Brands
RTO on cash-on-delivery orders quietly eats D2C profits, and Meta keeps finding more buyers who refuse delivery. How to confirm orders, nudge prepaid, block risky pincodes and teach Meta to optimise for delivered orders.

For many Indian D2C brands, cash on delivery is how first-time customers feel safe enough to buy. It's also where profit leaks. When a COD order is refused or the address is wrong, the parcel comes back, which is RTO (return to origin). You pay shipping both ways, the product may come back damaged, and you've already paid for the ad.
The worst part is what it does to your ads. Meta sees a "purchase" when the order is placed, so it counts the refused order as a success and goes looking for more buyers like that.
This playbook covers both halves: stopping bad orders, and teaching Meta to find buyers who actually accept delivery.
Why RTO is an advertising problem
When a COD order goes RTO:
- The ad cost is already spent.
- You pay forward and return shipping, plus packing.
- The order inflates your ROAS in Ads Manager, so a campaign looks better than it is.
- Meta learns from it. If refused orders come from a certain kind of audience or creative, the algorithm will happily find more of them.
That last point is why RTO should be fixed at the ad level, not only in operations. My break-even ROAS guide shows how RTO losses raise the ROAS you need to be profitable.
Step 1: Confirm every COD order

Send an automatic WhatsApp message as soon as a COD order comes in, asking the customer to confirm, cancel or fix the address. Hold unconfirmed orders for a day, then call the ones that still haven't replied.
This catches fake orders, accidental orders and wrong addresses before you've paid to ship them. Many Shopify apps in India do this automatically.
Step 2: Nudge customers to prepay
Don't remove COD completely. Many first-time buyers won't buy without it. Instead, give them a reason to pay now:
- A small prepaid discount or free shipping on prepaid orders.
- A payment link in the confirmation message: "Pay now and get it a day faster."
- Partial COD for high-value orders, where a small advance is paid online.
Every COD order that becomes prepaid is an order very unlikely to go RTO.
Step 3: Restrict COD where it fails
Look at your RTO rate by pincode, by order value and by product. You'll usually find a few patterns: certain areas, very high order values, or one product that gets ordered on impulse and refused. Turn COD off for those, or require a small advance. Most checkout apps for Indian Shopify stores can block COD by pincode.
Step 4: Give Meta a better signal

This is the step most brands skip.
- Send a separate event for delivered orders. When your shipping partner marks an order delivered, send an event (a custom "Delivered Purchase", for example) to Meta through the Conversions API, with the order value.
- Send prepaid purchases as their own event if you want to push prepaid buyers.
- Test campaigns that optimise for the better event. Meta needs enough of those events each week to learn, so this works best once you have a steady volume of orders.
- Build lookalikes from delivered customers only. A lookalike built from every buyer includes people who refused their parcels.
If your account is small and the new event is rare, Meta may stay stuck in learning. My guide to Meta ads stuck in learning limited explains the trade-off. The same idea of feeding real outcomes back to Meta is covered in sending CRM data to the Conversions API.
Step 5: Report ROAS on delivered revenue
Stop judging campaigns on Ads Manager ROAS alone. Every week, compare:
- Revenue Meta reported.
- Revenue from orders that were actually delivered.
The gap is your RTO cost, campaign by campaign. Some campaigns that look like winners turn out to be average once refused orders are removed. Others hold up perfectly. Move budget accordingly.
Creative can cause RTO too
Ads that oversell create buyers who change their mind. Heavy "70% off" messages, misleading product shots and fake urgency bring impulse orders, and impulse orders get refused. Clear photos, honest sizing, real prices and reviews bring fewer orders that are more likely to be accepted. If you're moving to automated campaigns, read Advantage+ sales campaigns for small D2C brands first, because automation amplifies whatever signal you give it.
Frequently asked questions
What is RTO in ecommerce?
RTO means return to origin. It's when a parcel can't be delivered, usually because a COD customer refuses it or isn't reachable, and it's shipped back to the seller.
Should I stop offering cash on delivery?
Usually not. COD helps first-time buyers trust you. It's better to confirm COD orders, encourage prepaid with a small benefit, and restrict COD only where RTO is high.
Can Meta optimise for delivered orders?
Yes, if you send a delivered-order event through the Conversions API and use it as the campaign's optimisation event. You need enough of those events each week for it to work.
Want your D2C ads judged on delivered revenue? Request a quote.
Ads, a website that converts, or both: get a custom quote.