If you sell on Shopify in India and offer cash on delivery, some of those orders will come back. The customer wasn't home, typed the wrong address, changed their mind, or never meant to buy. The courier returns the parcel and you pay for the trip both ways: that's RTO, return to origin.
This guide is for D2C brands that want to keep COD open and still cut RTO. It covers where RTO comes from, which fixes catch which kind of return, and the exact six-step setup on Shopify, with every figure linked to its source.
Shipway reported an RTO rate of 26% on COD orders against under 2% on prepaid across its platform in FY2025 (via Mediabrief). Meesho's 2025 prospectus implies a similar gap: about 22–24% of COD orders went undelivered against about 3% of prepaid. More figures, each with its source, are on our COD & RTO benchmarks page.
COD Returns vs RTO: Why Reducing COD Returns Means Reducing RTO
In Indian ecommerce, “COD returns” and “RTO” usually describe the same thing: a cash-on-delivery parcel that never gets paid for and travels back to your warehouse. So the work to reduce COD returns is the work to reduce RTO, and it happens before dispatch, not after delivery.
COD is still how a large share of India pays. ET Prime Research put it at 60–65% of ecommerce orders in 2024 (as cited by Dazeinfo), and growth keeps coming from Tier 2 and 3 cities: Unicommerce's India D2C Report 2026 attributes 66% of incremental D2C order volume to them (Unicommerce). Turning COD off is rarely an option. Making COD orders reliable is.
Where Your RTOs Come From
Not every return has the same cause, and each cause has a different fix. Most fall into four buckets:
1. Fake or impulse orders
A buyer taps “order” on a social ad with little intent, or someone places an order they never meant to accept. These were never going to be delivered; you just don't know it yet.
2. Wrong or incomplete address
A missing landmark, a wrong pincode, an address the courier can't find. The order is real but undeliverable as typed.
3. Customer not available
A genuine order, but nobody is home when the courier comes, or the customer doesn't pick up the courier's call. These are usually recoverable if someone talks to the customer in time.
4. Changed their mind
The customer had second thoughts before the parcel arrived. Some of this is product or pricing fit, which no call will fix.
The first three are the avoidable ones, and all three can be caught by talking to the customer before you ship: is the order real, is the address right, will they be there. That's what the setup below is built around.
Why Shopify's Default COD Setup Leaks Money
Out of the box, Shopify treats every order the same way. That works for prepaid. For COD it leaves three gaps:
- No confirmation step before dispatch. A COD order is “unfulfilled” and your team packs and ships it. Nobody has checked the customer wants it.
- No risk filter. A customer who has refused two parcels gets the same treatment as one who accepts every order.
- No address check before pickup. Shopify stores whatever was typed. You find out it's wrong when the courier fails.
None of this is Shopify's fault; it was built for markets where payment happens first. In India, that default is expensive.
Which Fixes Work, and What Each One Catches
| Method | Catches | Effort | Trade-off |
|---|---|---|---|
| Prepaid only (turn COD off) | Almost all COD RTO | High | Loses the many buyers who only pay on delivery. |
| COD surcharge | Some impulse orders | Low | Also puts off genuine COD buyers. |
| SMS / WhatsApp confirmation | Orders whose buyers reply | Low | Many never reply; a tap isn't a conversation, so a wrong address slips through. |
| Manual confirmation calls | Fake orders, bad addresses, availability | High | Needs a calling team; slow at night and on sale days. |
| AI confirmation calls | Fake orders, bad addresses, availability | Low | Needs a good Hindi/Hinglish voice and clean Shopify tagging. |
Step-by-Step: How to Reduce RTO on Shopify in India
Six steps, in the order to set them up. Each builds on the last.
-
Step 1 — Find your real RTO rate and what it costs
Pull the last 90 days of COD orders from Shopify admin and match them against your courier or 3PL dashboard. Returned orders often hide in “cancelled” or “undelivered” buckets. Then put a rupee figure on it: COD orders × RTO rate = returns a month, × cost per return (forward and return freight, packaging, COD fees, stock stuck in transit). Our free RTO calculator does this in a minute.
-
Step 2 — Consider a small COD fee
Shopify can add a COD fee through payment customisations or an app. Even a small fee filters some low-intent orders before any shipping cost is spent. It's a filter upstream of everything else, not the main fix, and it costs you some genuine COD buyers too.
-
Step 3 — Confirm every COD order before dispatch
This is the biggest lever. Either run a calling team or connect an AI calling service to Shopify. The flow: a COD order is placed → the customer gets a call within minutes → the outcome is tagged on the order (
voxmiro:confirmedorvoxmiro:cancelledwith Voxmiro) → your team packs only confirmed orders. Orders where nobody picks up are retried, then wait for your decision instead of shipping blind. -
Step 4 — Check the address before the label prints
Validate pincodes against India Post data or the address checks built into your shipping platform, and use the confirmation call to read the address back to the customer. A landmark said out loud fixes more than any form field.
-
Step 5 — Tag everything and review weekly
Build a saved Shopify filter for each outcome tag and review them weekly. Products, cities and ad campaigns each have their own RTO pattern. Shipway's FY2025 data, for example, ranges from 18% RTO in Vadodara to 35% in Patna, and rises from 22% when the first delivery attempt comes within 1–2 days to 35% after five days (via Mediabrief). Once you see your own patterns, act on them: ad targeting, product descriptions, faster dispatch to slow pincodes.
-
Step 6 — Move repeat returners to prepaid
Tag customers who have refused orders before and require prepaid for them. You're not banning them; you're matching the payment terms to their track record. Most genuine buyers simply pay by UPI.
Why Confirmation Calls Work for COD Orders
One short call before shipping does four jobs at once:
- Filters false intent. If the order was never real, the customer says so and you cancel before paying for freight both ways. With Voxmiro, a customer who says “I never placed this order” is filed as a cancel, not as a wrong number, so it can't slip through to dispatch.
- Fixes the address. Mistakes get caught while they're cheap.
- Sets expectations. A customer who knows the parcel is coming is more likely to be there.
- Gets a spoken yes. Saying “haan, bhej do” is a stronger commitment than tapping a button.
Why Manual Calling Doesn't Scale
Every COD order needs a call, often more than one attempt, and calls have to happen within minutes of the order, including at night and on sale days. That means a team, a dialler, scripts, training and supervision, and quality still varies from caller to caller. For most D2C brands the team's cost eats into the savings it creates.
How AI Confirmation Calls Plug Into Shopify
An AI voice agent makes the same call automatically: it rings the customer minutes after the order, greets them by name, reads back the product, price and address in Hindi, Hinglish or English, and writes the outcome back to the order. Here's what happens under the hood.
orders/create eventvoxmiro:confirmed ordersThe parts of a Shopify order the call uses:
{
"id": 1234567890,
"payment_gateway": "cash on delivery",
"phone": "+919876543210",
"shipping_address": {
"address1": "...",
"city": "Mumbai",
"zip": "400001"
},
"line_items": [
{
"name": "Product Name",
"price": "599.00"
}
],
"total_price": "599.00"
}
Does It Pay Back? A Worked Example
The maths is simple enough to do on a napkin. Here's an example with stated assumptions; swap in your own numbers in the RTO calculator.
Assume a 25% COD RTO rate (close to the published averages above) and ₹250 lost per RTO. Freight alone is roughly ₹70–90 per RTO at Shiprocket's listed averages; the rest is packaging, COD fees and stock stuck in transit.
That's 500 returns and ₹1,25,000 lost a month. Voxmiro charges ₹6.40–6.87 per started minute of answered call, and a confirmation usually takes under a minute, so confirming 2,000 orders costs at most about ₹13,700 even if every call is answered. Break-even is preventing roughly 1 RTO for every 36 answered calls (₹6.87 ÷ ₹250 ≈ 1/36).
What to Look For in an AI Calling Service
- Language. Hindi and natural Hinglish at the very least, with a voice that sounds local, not translated.
- Speed. The call should come within minutes of the order, while the buyer still remembers it.
- Outcomes you can act on. Every call logged as confirmed, cancelled or not reached, with a recording and transcript, and tagged on the Shopify order.
- Native Shopify setup. Install an app; don't hand-build webhooks.
- Compliance. Outbound calling in India is regulated: calls should go out from proper business numbers, for transactional purposes the customer expects.
The Takeaway
Shopify's default COD setup isn't broken; it was built for a different market. To reduce RTO for a D2C brand in India you don't need a new platform. You need six deliberate steps, and the biggest by far is confirming each COD order before it ships. Everything else amplifies that.
Frequently Asked Questions
How do I reduce RTO on Shopify in India?
Confirm every COD order before you ship it, check the address while you're at it, tag the outcome in Shopify so only confirmed orders get packed, and move repeat returners to prepaid. A confirmation call is the step that catches the most avoidable returns: fake or impulse orders, wrong addresses, and customers who won't be home.
What is a normal RTO rate for COD orders in India?
Published figures cluster around a quarter of COD orders: Shipway reported 26% RTO on COD against under 2% on prepaid for FY2025, and Meesho's prospectus implies about 22–24% of COD orders went undelivered against about 3% of prepaid. Fashion usually runs higher.
Are COD returns and RTO the same thing?
Mostly, yes. In Indian ecommerce a “COD return” usually means a parcel the customer refused or never received, which the courier sends back to you: return to origin (RTO). A return after delivery is a different problem with different fixes.
Does a COD surcharge reduce RTO?
It filters some impulse orders before any shipping cost is spent, but it also puts off genuine buyers who prefer to pay on delivery. Treat it as a small filter, not the main fix.
What does a confirmation call cost compared with an RTO?
Voxmiro charges ₹6.40–6.87 per started minute of answered call, and a confirmation usually takes under a minute; unanswered calls are free. Freight alone for one RTO is roughly ₹70–90 at Shiprocket's listed averages, before packaging, COD fees and stock tied up in transit.
Voxmiro installs on Shopify and confirms every COD order by phone.
Calls in Hindi, Hinglish and English, outcomes tagged on the order. Free to install, with 30 free minutes to try it on your own orders.