RTO in ecommerce means “return to origin”: a parcel the courier couldn’t deliver and sends back to the seller. The buyer refused it, wasn’t reachable, or gave an address the courier couldn’t find. For the seller it’s the worst outcome an order can have, because you pay to ship the parcel out and back and still don’t make the sale. Most RTO is preventable, and much of it is decided before the parcel leaves your warehouse.
This guide explains what RTO is and why it happens, what it really costs, and how to measure it properly. It then covers the practical steps that lower it, with WhatsApp at the three moments where one message can change the outcome. It’s written for Indian D2C and marketplace sellers, where cash on delivery (COD) makes RTO a daily problem, but the same playbook applies anywhere buyers pay at the door.
Key takeaways
- RTO is mostly a COD problem. In Shipway's FY25 data, nearly 26% of non-prepaid orders came back, against under 2% of prepaid ones.
- Fix it in three places: before dispatch (confirm and check the address), on delivery day (make sure someone is home with payment ready) and after a failed attempt (act within 24 hours).
- Cancelling an unwanted order before dispatch costs almost nothing. Shipping it and bringing it back costs two freight legs.
- Measure RTO by payment method, pincode, courier and product, or you won't know which fix is working.
What RTO means in ecommerce
RTO is logistics shorthand. Shiprocket’s help centre puts it simply: “An RTO (Return To Origin) happens when a shipment can’t be delivered and gets sent back to you.” Delhivery defines it as “a Sale order that was undelivered and was returned to the client warehouse.”
The important word is undelivered. RTO isn’t a customer return. In a return, the buyer received the product, used or inspected it, and asked to send it back. In an RTO, the buyer never took the parcel. That difference matters because the causes, and the fixes, are completely different.
| Term | What happened | Buyer has the product? | Who usually pays |
|---|---|---|---|
| Cancellation | Order stopped before it shipped | No | Almost nothing: no freight |
| NDR (non-delivery report) | A delivery attempt failed. The parcel is still with the courier | No | Nothing yet. This is the rescue window |
| RTO (return to origin) | Attempts ended or the order was cancelled in transit, and the parcel goes back | No | Seller: forward and return freight |
| Customer return | Buyer received it, then sent it back | Yes, until pickup | Depends on your return policy |
When you track a parcel, you’ll usually see the RTO journey in stages: RTO initiated (the courier has stopped trying), RTO in transit (on its way back) and RTO delivered (back at your warehouse). “RTO delivered” confuses new sellers. It means delivered to you, not to the customer.
How many delivery attempts before RTO?
It depends on the courier. Shiprocket’s support page says: “We provide a maximum of three attempts to deliver your order”, adding that “most courier partners make three attempts before the order is marked RTO. However, few couriers mark RTO after the 1st attempt.”
Each failed attempt normally generates an NDR. Shiprocket asks sellers to act “at the earliest or within 24 hours”, for example by requesting a reattempt or updating the phone number or address. If nobody acts, it says it will “try to take action on your behalf and request the courier partner to reattempt”. In other words, the NDR is your second chance, and it has a short fuse. Treat it as urgent, not as a report to read on Friday.
Why orders come back: the real causes
Shiprocket lists the usual reasons as incorrect address, recipient unavailable, customer refusal, COD issues and remote areas. In practice they fall into four groups, and each needs a different fix.
| Cause | What it looks like | Typical signal | Best fix | When |
|---|---|---|---|---|
| Low intent | Impulse COD order, buyer changes mind, orders the same item elsewhere, or a prank or fake order | No reply to confirmation; first-time buyer; high-risk pincode | Confirm before dispatch; partial COD; prepaid nudge | Before dispatch |
| Address problems | Missing house number or landmark, wrong pincode, “near temple” as the whole address | Short address field; pincode doesn’t match city | Ask for the full address and landmark on WhatsApp | Before dispatch |
| Availability | Buyer at work, phone switched off, doesn’t pick up the courier’s call from an unknown number | NDR reason “not reachable” or “not available” | Delivery-day heads-up; let the buyer pick a reattempt date | Delivery day, NDR |
| Payment at the door | Buyer has no cash, amount differs from what they expected, delivery agent can’t take UPI | NDR reason “cash not ready” or “refused” | State the exact COD amount before delivery; say how they can pay | Delivery day |
Two more causes sit on the seller’s side. Slow delivery gives buyers time to cool off: in Shipway’s FY25 data, orders attempted within 1–2 days had a 22% RTO rate, rising to 27% at 3–5 days and 35% after more than 5 days. And expectation gaps, such as a product that looks different from the photo or a size chart that misleads, lead to doorstep refusals that no message can fully prevent.
What an RTO really costs
Sellers often count only the return freight. Add everything up and each RTO costs far more than it seems.
- Forward freight, already paid.
- Return freight, charged when the parcel comes back. Shiprocket says the seller covers the return cost, and that “heavier items and farther zones mean higher RTO charges”.
- Packaging and labour, spent twice: once to pack it, once to inspect and restock it.
- Damaged or unsellable stock. Some parcels come back crushed, opened or past their season.
- Blocked inventory. A parcel in transit for a week or two is stock you can’t sell to someone who wants it.
- Lost margin on the sale you didn’t make, and the ad spend that brought the buyer in.
On COD orders, aggregators usually reverse the COD collection charge (Shiprocket’s passbook lists “COD Charge Reversed”). That’s a small offset, not a refund of the freight.
A worked example
Here’s a simple way to size the problem. The rates below are assumptions for illustration. Replace them with your own rate card.
| Item | Assumption |
|---|---|
| COD orders shipped per month | 2,000 |
| RTO rate on COD | 25% (close to Shipway’s national figure for non-prepaid orders) |
| Forward plus return freight, packaging and handling per RTO | ₹150 |
| RTOs per month | 500 |
| Monthly cost of RTO | ₹75,000, before damaged stock and lost ad spend |
Now compare the cost of asking every COD buyer to confirm on WhatsApp. A COD confirmation is a utility template, which costs ₹0.1150 per delivered message in India on Meta’s rate card from 1 October 2026. For 2,000 orders that’s ₹230 in Meta charges. On ChatMitra’s Starter or Pro plan, add ₹0.20 per conversation, another ₹400. The total is about ₹630 a month, which is less than the cost of five RTOs. If confirmation, address checks and fast NDR handling save even a small share of those 500 parcels, the messages pay for themselves many times over.
To estimate your own saving, don’t assume every cancelled order would have been an RTO. Some buyers who tap Cancel would have accepted the parcel anyway, and some who confirm will still refuse at the door. The fair comparison is the COD RTO rate for a month before you start against a month after, for orders shipped in each period, with the cost per RTO from your own rate card. Count the cancellations separately: each one is a parcel you didn’t pack, ship or bring back, and that’s where most of the saving shows up. Watch conversion too. A confirmation step, an advance payment or a COD limit can put off a few genuine buyers, and the goal is more delivered orders, not just fewer returned ones.
How to measure your RTO rate
The basic formula is simple:
RTO rate = orders that ended as RTO ÷ orders shipped, for the same period
Use orders shipped, not orders placed, so cancellations before dispatch don’t flatter the number. Count an order in the period it was shipped, and wait until the parcels from that period have resolved. RTOs trail dispatch by one to three weeks, so last week’s rate always looks better than it will be.
Then split it. One blended number hides the fix.
| Cut | Why it matters | What you might do |
|---|---|---|
| Payment method (COD vs prepaid) | Shipway’s FY25 data showed nearly 26% vs under 2% | Push the COD share down, or protect COD with confirmation |
| Pincode or city | Shipway found city RTO ranging from 18% (Vadodara) to 35% (Patna) | Restrict COD or require an advance in the worst pincodes |
| Courier | Some couriers attempt faster or handle NDRs better in some zones | Allocate by pincode performance, not just price |
| Product and order value | In Shipway’s data, orders of ₹500–1,000 had the highest RTO, at 28% | Tighten checks for risky products and price bands |
| Traffic source | Some ad campaigns bring impulse buyers | Judge campaigns on delivered revenue, not orders |
| Customer history | Repeat refusers are a small group with outsized impact | Ask repeat refusers to prepay |
Track four supporting numbers alongside it: the COD confirmation rate (share who tap Confirm), the NDR rate (share of shipments with at least one failed attempt), the NDR save rate (NDRs that end delivered) and first-attempt delivery (share delivered on the first try).
Where WhatsApp fits: three checkpoints
SMS gets ignored and phone calls from unknown numbers go unanswered. WhatsApp works for RTO because the buyer sees the store’s name, can reply with one tap, and can type an address or a question in their own words. That makes it good at the three moments that decide delivery.

Checkpoint 1: before dispatch
This is where the biggest savings are, because cancelling costs nothing and a fixed address costs nothing.
Confirm every COD order. Send a utility template within minutes of the order with the order number, the amount payable on delivery, the city and pincode, and buttons to confirm or cancel. The wording and button options are in our order confirmation message guide. The rules that matter here:
- Hold unconfirmed orders. Decide how long, perhaps until the next dispatch cut-off, and what happens after: one reminder, then a call, then cancel. Apply the rule consistently. A confirmation step that doesn’t change what ships is just a nice message.
- Treat Cancel as a win. Every cancel before dispatch is an RTO you didn’t pay for.
- Keep offers out. A discount or “pay online and save” line turns the template into marketing, at ₹0.8631 instead of ₹0.1150 per message.
Check the address. If the address looks thin (no house number, no landmark, or a pincode that doesn’t match the city), ask for the details before dispatch. For example:
Hi {{name}}, we’re packing order {{order_number}} for {{city}} {{pincode}}. Your address looks incomplete. Please reply with your house or flat number, street and a nearby landmark so the courier can find you first time.
In India, a newer option is DIGIPIN, the Department of Posts’ digital address code. The government describes it as “an open-source, interoperable, geo-coded, grid-based digital address system” developed with IIT Hyderabad and NRSC, ISRO. It gives each roughly 4 m × 4 m square a 10-character code, and India Post says your postal address stays the same. It launched publicly in May 2025. If you ship to rural or hard-to-find addresses, ask your courier whether it accepts DIGIPIN, and consider asking buyers in those areas for one alongside the normal address.
Ask for an advance where risk is high. Partial COD collects a small part of the order online and the rest at the door. You don’t have to apply it everywhere. Use it for the pincodes, price bands or first-time buyers where your data shows the worst RTO. A plain request to pay for the customer’s own order can go as a utility template. Adding “and get free shipping” makes it marketing. Our payment link guide has wording for both.
Checkpoint 2: shipping and delivery day
Once the parcel is moving, the goal is simple: make sure the buyer expects it, is available and has the payment ready.
- Shipped, with tracking. A shipping confirmation with a tracking button lets the buyer plan. It also reminds them the parcel exists, which matters when delivery takes a week.
- Delay notice. If the parcel is stuck, say so before the buyer asks, with a new estimate. Silence invites cancellation at the door.
- Out for delivery. The single most useful RTO message: the parcel arrives today, the exact COD amount, and a note that the delivery partner may call from an unknown number. For example:
Order {{order_number}} is out for delivery today. Please keep {{cod_amount}} ready. The delivery partner may call from an unknown number, so please keep your phone nearby. Not at home today? Tap Reschedule.
“Out for delivery” depends on your courier’s tracking events. If your WhatsApp tool doesn’t receive them (see where ChatMitra fits below), send this from your shipping platform or through an API.
Checkpoint 3: after a failed attempt
The NDR window is where speed wins. The buyer usually still wants the parcel; they were out, their phone was off, or the courier couldn’t find the house. A message within hours, instead of a courier call they miss again, gives them an easy way to fix it:
We tried to deliver order {{order_number}} today but couldn’t reach you ({{ndr_reason}}). When should we try again? Tap a day below, or reply with a corrected address and landmark.
Give buttons for the next two or three days, plus “Update address” and “Cancel order”. Then update the courier or aggregator panel straight away. A reattempt request that sits in the inbox until tomorrow has missed the point. If the reply is a refusal, cancel cleanly and ask one short question about why. That answer is the most useful RTO data you’ll get.
Handling NDRs by reason
Couriers attach a reason to each failed attempt. The wording varies by courier, but most reasons fall into a handful of types, and each needs a slightly different message and action. A generic “we missed you” works less well than a reply that shows you read the reason.
“Customer not available” or “door locked.” The buyer wanted the parcel but wasn’t there. Offer a choice of days rather than asking an open question, and ask whether someone else, such as a neighbour, family member or security desk, can accept it. If they pick a day, request the reattempt for that date in your courier panel, not just “reattempt”.
“Customer not reachable” or “phone switched off.” The courier couldn’t call. WhatsApp often reaches the buyer when a call doesn’t, because the message waits until they’re back online. Ask them to confirm the best number for the delivery partner, and update the phone number on the shipment if they give a new one.
“Address incomplete” or “address not found.” Ask for the missing piece specifically: flat or house number, building name, street, landmark. A shared location pin helps too. WhatsApp lets customers send their location in the chat, and the delivery partner can use it even when the written address is vague. Pass the corrected address to the courier the same day.
“Cash not ready” or “customer wants to pay online.” The buyer is willing but wasn’t prepared. Restate the exact amount, suggest a reattempt date, and if you can collect payment online before the next attempt, offer that too. Some buyers prefer paying in advance once they know the parcel is real.
“Customer refused.” Don’t argue. Ask one neutral question (“Could you tell us what went wrong, so we can fix it?”) with a few quick-reply options: ordered by mistake, found it cheaper, took too long, wanted to open the parcel first, something else. Then let the parcel return. The pattern across a month of answers tells you whether the fix is confirmation, speed, product pages or pricing.
“Out of delivery area” or “ODA.” This isn’t the buyer’s fault. It usually means the pincode is outside the courier’s regular network. Tell the buyer honestly, offer pickup from a nearby hub if the courier supports it, and add the pincode to your serviceability rules so the next order routes to a courier that covers it.
When the courier, not the buyer, is the problem
Not every NDR is accurate. Sellers regularly see “customer not available” or “customer refused” on parcels where the buyer says nobody came to the door. The WhatsApp thread helps here in two ways.
First, it gives you evidence. A buyer’s reply saying “I was home all day and nobody called” arrives with a timestamp in your inbox. That’s a far stronger basis for a complaint to your courier or aggregator than a phone call nobody recorded.
Second, it shows you patterns. Tag these replies (for example “disputed NDR”) and review them weekly by courier and pincode. If one courier’s “not available” reasons are disputed far more often than another’s in the same area, that’s a reason to move volume, whatever the per-parcel price.
Keep the tone with the buyer neutral. Apologise for the inconvenience, arrange the reattempt, and handle the courier dispute separately. The customer doesn’t need to hear about it.
A daily routine for your team
RTO reduction fails most often because nobody owns it. A simple routine makes it someone’s job:
- Morning: review orders that haven’t confirmed since yesterday. Send the one reminder your rule allows, then call or cancel the rest before the dispatch cut-off.
- Before dispatch: check that every COD order being packed is confirmed and has a complete address. Release the Shopify holds for those that are.
- Midday and late afternoon: pull the day’s NDRs from the courier panel, message each buyer, and update the panel as replies arrive. Aim to act on every NDR within 24 hours, which is what Shiprocket asks sellers to do.
- End of day: tag refusals and disputed NDRs with a reason so the weekly review has data.
- Weekly: look at RTO by segment for orders shipped two to three weeks ago, and pick one thing to change.
In a small store this is one person’s hour a day. In a larger one, split it: one person owns confirmations, another owns NDRs. Either way, quick replies for the ten messages you send most often keep it fast and consistent.
Levers beyond WhatsApp
Messages work best alongside a few operational choices. These are the ones that move RTO most.
| Lever | How it helps | Trade-off |
|---|---|---|
| Restrict COD by pincode | Removes COD where RTO is worst | Lost orders in those areas; review quarterly |
| COD limit by order value | Caps exposure on expensive, high-risk orders | Some buyers won’t prepay above the limit |
| Partial COD | Advance payment filters out low-intent orders | Conversion drops. Test on risky segments first |
| Prepaid incentive | Shifts buyers to the payment method with the lowest RTO | Margin cost, and marketing category on WhatsApp |
| Transparent COD fee | Discourages casual COD orders | Must be shown before checkout, never sprung at the door |
| Faster dispatch | Shipway’s data ties slower attempts to more RTO | Warehouse cut-offs and courier choice |
| Courier allocation by zone | Uses the courier that delivers best in each pincode | Needs your own data by courier |
| Better product pages | Fewer “not what I expected” refusals | Photos, size charts and honest descriptions take work |
| Shopify fulfilment holds and tags | Unconfirmed orders physically can’t ship | Your team must release holds promptly |
On that last row: Shopify lets you mark an order “on hold” so its fulfilment waits, and its Flow reference notes that “Orders with the On hold status aren’t fulfilled until the status is removed.” Pair a hold on every new COD order with a release on confirmation, and your warehouse can’t ship an unconfirmed parcel by accident.
A caution on blocking customers. Refusing COD to a buyer who refused before is reasonable. Keep the rule factual (past refusals, not guesses about who someone is), apply it consistently, and offer prepaid instead of shutting the door.
A 30-day plan to cut RTO
- Week 1: measure. Pull the last 90 days of shipped orders. Calculate RTO by payment method, pincode, courier, product and order value. Pick the three worst segments.
- Week 1: fix the basics. Make the checkout address form ask for house number, street, landmark and pincode as separate fields. Collect WhatsApp opt-in for order updates at checkout (our opt-in guide explains what counts).
- Week 2: switch on COD confirmation. Get a utility template approved, send it on every COD order, hold unconfirmed orders until your cut-off, and agree what the team does with each reply.
- Week 2: add the address check for orders with incomplete addresses.
- Week 3: add delivery-day messages, starting with out-for-delivery, and set up a same-day routine for NDRs: message, reply, update the courier panel.
- Week 3: try one policy lever on your worst segment, such as partial COD for one pincode cluster or a COD limit above a price band.
- Week 4: compare. Look at RTO for orders shipped in weeks 2–3 against the same weeks last month, by segment. Keep what worked; drop what cost more than it saved.
Setting it up with ChatMitra
ChatMitra connects to Shopify and sends your approved templates on store events. Here’s what it covers for RTO, checked against the product’s code:

| RTO step | ChatMitra | Detail |
|---|---|---|
| COD confirmation on new orders | Yes | Sent when the order’s payment method is Shopify’s “Cash on Delivery (COD)”. A COD app that uses another payment-method name won’t trigger it |
| Delay before sending | Yes | 1, 10, 20 or 30 minutes, or 1, 6 or 24 hours after the event |
| Address in the message | Yes | Shipping address and order details are available as template variables |
| Shipped with tracking | Yes | The order-fulfilled message can carry the first shipment’s tracking link |
| Replies handled | In the shared inbox | Button taps and typed addresses arrive in the team inbox. Your team tags, holds, releases or cancels the order in Shopify. Replies don’t write back to Shopify automatically |
| Out for delivery, NDR, RTO events | No | There are no courier tracking events. Send these from your shipping tool, or through ChatMitra’s REST API (a Pro plan feature) if a developer connects your courier’s webhooks |
| Other store platforms | Through the API | No ready-made WooCommerce connector |

Two settings help on the inbox side. Build quick replies for the answers your team sends every day (“Address updated, thank you”, “We’ve asked the courier to try again tomorrow”). And when a customer answers the address question in free text, that reply opens a 24-hour window, so your acknowledgement is a service message rather than another template.
For the full store-side picture, including catalogues, cart recovery and cost per order, see WhatsApp for ecommerce. To connect a store, start with the Shopify integration.
Mistakes that keep RTO high
- Confirming but shipping anyway. If unconfirmed orders ship on schedule, the message only tells you which parcels will come back.
- Mixing an offer into the confirmation. It becomes a marketing template, costs 7.5 times more in India, and WhatsApp’s opt-in guidance suggests a separate opt-in for marketing messages.
- Measuring too early. RTOs land weeks after dispatch. Judge last month, not last week.
- Letting NDRs wait. A failed attempt answered tomorrow often becomes an RTO.
- Blaming customers for address problems your checkout created. One free-text address box invites incomplete addresses.
- Treating all COD the same. A repeat buyer in a low-RTO city and a first-time buyer in a high-RTO pincode need different rules.
- Hiding the COD fee until the door. Surprises at delivery are refusals waiting to happen.
Beyond India: COD markets elsewhere
RTO is an Indian term, but the problem exists wherever buyers pay at the door. Worldpay’s Global Payments Report 2026 (payments-industry research, measured by share of online spending) found that “Southeast Asian markets have the highest rates of cash on delivery globally”. COD made up 23% of ecommerce value in the Philippines, 16% in Vietnam and 15% in Thailand in 2025, against 1.6% worldwide. The same three checkpoints apply there, using the local template languages and rates.
India is shifting too. Worldpay estimates payment on delivery at about 6% of India’s 2025 online payment value, with digital wallets, driven by UPI, at 68%. Estimates of COD’s share of orders run much higher. The Centre for Social and Economic Progress’s 2026 e-commerce report gives 30–40% of orders in one section and almost 50% in another. For most D2C stores, COD will be part of the mix for years, so it’s better to manage it well than to wish it away.
Summary
RTO is expensive because you pay for two journeys and get no sale. Most of it comes from low-intent COD orders, weak addresses and buyers who can’t be reached, all problems that show up before or during delivery. Confirm COD orders and hold the unconfirmed ones, fix addresses before dispatch, prepare buyers on delivery day, and answer NDRs the same day. Measure by segment so you know which of those steps is paying off. Then add policy levers such as partial COD and pincode rules where the data says they’re needed.
Sources: Shiprocket support: What is RTO, What is NDR, delivery attempts, NDR process time, who pays for RTO, passbook charges. Delhivery help: Courier return / RTO. Shipway ShipNotes FY25, as reported by MediaBrief (29 July 2025). Press Information Bureau: Launch of Know Your DIGIPIN (27 May 2025); India Post DIGIPIN FAQ. Shopify Help Center: manual payments, holding fulfillments, Flow: hold fulfillment. Worldpay Global Payments Report 2026. CSEP India E-Commerce Report 2026. Meta for Developers: pricing and template categorization. Facts checked 28 September 2026. Rupee message prices are Meta's India rates from 1 October 2026 and ChatMitra's published platform fee.


