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.

The size of the problem

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 takeaway

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:

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

MethodCatchesEffortTrade-off
Prepaid only (turn COD off)Almost all COD RTOHighLoses the many buyers who only pay on delivery.
COD surchargeSome impulse ordersLowAlso puts off genuine COD buyers.
SMS / WhatsApp confirmationOrders whose buyers replyLowMany never reply; a tap isn't a conversation, so a wrong address slips through.
Manual confirmation callsFake orders, bad addresses, availabilityHighNeeds a calling team; slow at night and on sale days.
AI confirmation callsFake orders, bad addresses, availabilityLowNeeds 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.

  1. 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.

  2. 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.

  3. 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:confirmed or voxmiro:cancelled with Voxmiro) → your team packs only confirmed orders. Orders where nobody picks up are retried, then wait for your decision instead of shipping blind.

  4. 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.

  5. 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.

  6. 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:

  1. 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.
  2. Fixes the address. Mistakes get caught while they're cheap.
  3. Sets expectations. A customer who knows the parcel is coming is more likely to be there.
  4. 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.

1
Shopify sends an orders/create event
Every new order is sent to the calling service in real time. With a Shopify app like Voxmiro this is set up when you install; there's nothing to configure.
2
COD orders enter the confirmation queue
Prepaid orders go straight to fulfilment. COD orders are lined up for a call, within the calling hours you set.
3
The order details go with the call
Name, phone, items, amount and address: everything the agent needs to talk about this specific order.
4
The agent calls and records the outcome
Confirmed, cancelled, or not reached, with a recording and transcript you can check.
5
Fulfilment ships only voxmiro:confirmed orders
Cancelled orders don't ship. Orders where nobody picked up are retried and then wait for your call.

The parts of a Shopify order the call uses:

Shopify orders/create — relevant fields
{
  "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.

Example: 2,000 COD orders a month

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

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.