Guide

COD RTO in India: What It Really Costs and How to Cut It

Cash on Delivery keeps Indian D2C orders flowing. It also hides a cost that most dashboards never show. This guide explains what COD RTO is, why it happens, how to put a real number on it, and the practical steps that cut it.

What is COD RTO?

RTO means return to origin. A buyer places a Cash on Delivery order. You pack it and hand it to the courier. Then the parcel is refused at the door, or the courier cannot reach the buyer, or the address cannot be found. After a few attempts the parcel travels back to your warehouse.

An RTO is different from a normal return. In a normal return the buyer paid, received the product, and sent it back. In an RTO the buyer never paid at all. No money ever entered your account, but you still paid to ship the parcel out and to bring it back.

RTO is mostly a COD problem. With prepaid orders the buyer has already committed money, so far fewer parcels are refused.

Why RTO happens so often with COD in India

A COD order costs the buyer nothing to place. That is why it converts well, and also why some of those orders never become sales. The common reasons:

  • Impulse orders. A buyer taps an ad, orders on COD in a few seconds, and has changed their mind by the time the parcel arrives.
  • Bought elsewhere. The buyer found the same product cheaper or faster and refuses yours.
  • Incomplete or wrong addresses. No house number, no landmark, a pin code that does not match the city. The courier gives up.
  • Unreachable phones. The number is switched off, wrong by one digit, or the buyer does not pick up calls from unknown numbers.
  • Fake and prank orders. Orders placed with no intent to buy, sometimes several from the same phone.
  • Slow delivery. The longer the wait, the more time a buyer has to lose interest.
  • Hard-to-serve pin codes. Some areas see more failed deliveries for your products than others.

Most of these signals are visible on the order before you ship it. That is the key idea behind cutting RTO: catch the risky order before it costs you courier fees.

What one RTO really costs

The obvious cost is shipping. The full cost is larger. For each RTO parcel, add up:

  • Forward shipping to the buyer.
  • Return shipping back to you. Many courier plans charge RTO freight at or close to the forward rate.
  • Packaging that is usually not reusable.
  • Damaged or unsellable stock, especially for fragile, perishable or seasonal items.
  • Stock locked in transit for days, which can mean missed sales to real buyers.
  • The ad spend that bought the order. You paid to acquire a buyer who never paid you.
  • Team time spent packing, tracking and restocking.

Check your own courier invoice for the exact forward and RTO rates. They vary by courier, weight and zone.

Worked example: true RTO cost and real ROAS

All numbers below are hypothetical. They show the method. Use your own numbers from Shopify, your courier and Ads Manager.

Say a store spends ₹1,00,000 on Meta ads in a month. The ads bring 250 COD orders at an average of ₹1,200.

StageOrdersRevenue
Booked250₹3,00,000
Cancelled before shipping20₹24,000
Shipped230₹2,76,000
Returned (RTO), 20% of shipped46₹55,200
Delivered and kept184₹2,20,800

Ads Manager reports ₹3,00,000 / ₹1,00,000 = 3.0x ROAS, because it counts every booked order as a sale.

The money that actually reached the store tells a different story:

Real ROAS = kept revenue / ad spend = 2,20,800 / 1,00,000 = 2.21x

Now add what the 46 RTO parcels cost. Assume forward shipping of ₹70, return shipping of ₹70 and packaging of ₹20 per parcel, and that 3 of the returned items are damaged, at a product cost of ₹400 each.

RTO cost itemAmount
Shipping and packaging: 46 × (₹70 + ₹70 + ₹20)₹7,360
Damaged stock: 3 × ₹400₹1,200
Direct RTO cost₹8,560
Real ROAS after RTO cost = (2,20,800 − 8,560) / 1,00,000 = 2.12x

Two more numbers worth knowing:

  • RTO rate = RTO orders / shipped orders = 46 / 230 = 20%.
  • Ad spend that bought RTO orders = 46 orders × (₹1,00,000 / 250 orders) = ₹18,400. Almost a fifth of the budget paid for orders that never paid back.

The store thought it was running at 3.0x. It was really running at about 2.1x. If its break-even ROAS is 2.5x, it was losing money on ads it believed were profitable. For more on this, read how to calculate real ROAS after RTO and returns.

Practical steps to cut COD RTO

1. Call risky orders before you ship

A short call is the cheapest RTO check there is. You do not need to call every order. Call the ones with risk signals: a new buyer with a high order value, a pin code that often returns, several COD orders from one phone, or an incomplete address.

Keep the call short: confirm the order, the amount, the address and a good time for delivery. Log the outcome every time (confirmed, cancelled, not reachable, call back) so you can see what works. If the buyer cancels, cancel the order before it ships. A cancelled order costs you nothing in freight.

2. Fix addresses before the courier sees them

Look for a missing house or flat number, no landmark, a pin code that does not match the city, or an address that is just a locality name. Confirm these on the call. A complete address is one of the easiest ways to stop a parcel from coming back as undeliverable.

3. Exclude the pin codes that keep returning

Look at your own RTO by pin code over the last few months. If a small set of pin codes keeps returning COD orders for your products, exclude them from your Meta ad targeting. You stop paying to acquire buyers in areas where parcels rarely get accepted. Review the list every month, because patterns change. Base it on your own data, not on a list from someone else.

4. Nudge buyers towards prepaid

Prepaid orders are refused far less often. Give buyers a reason to pay online: a small prepaid discount, free shipping on prepaid, or faster dispatch. Keep COD available for buyers who need it, but make prepaid the easy choice. For high-value COD orders from new buyers, asking for a part payment in advance is another option some stores use.

5. Track RTO per ad, not just per store

Some ads attract buyers who accept the parcel. Others attract impulse orders that come back. Store-wide RTO rates hide the difference. Add UTM tags to your Meta ads so every Shopify order carries its campaign, ad set and ad. Then compare kept revenue, not booked revenue, per ad. Pause or rework the ads that bring returns, and scale the ones that bring buyers who pay.

6. Watch discount codes and products

Deep discounts and freebies can bring buyers who are less committed. Some products also come back more than others because of sizing, expectations or price. Check RTO by discount code and by product every month. Sometimes the fix is a better product page, not a better courier.

7. Measure every week

Track four numbers weekly: RTO rate, cancelled before shipping, kept revenue, and real ROAS. If you only look at booked revenue, RTO stays invisible until the courier invoice arrives.

Where RTOGuard fits

RTOGuard is a Shopify app that does the routine parts of this for you. It scores every COD order from 0 to 100 the moment it is placed, puts risky orders on a Call list with the reason and a short script, and shows booked, cancelled, returned and kept revenue with real ROAS per campaign, ad set and ad. On the Starter plan it also breaks down RTO by discount code, product, order value, day, time and pin code, and gives you a pin-code exclusion list to copy into Meta ads. You decide what ships. It never changes your ads.