Every guide on COD return-to-sender losses focuses on prevention. OTP verification, address validation, WhatsApp confirmation — all good tactics for stopping RTO before it happens. But what about the packages that already came back?
In India, each returned COD package costs ₹180–240 between forward shipping, reverse logistics, and handling fees. That's money gone before you even decide what to do with the product sitting back in your warehouse. With COD RTO rates averaging 26% in India and 15–20% in the UAE and Southeast Asia, most stores are losing thousands per month on returned inventory they have no system to process.
The gap isn't prevention — it's what happens after. Most merchants handle returned packages manually, case by case, with no framework for when to reship, when to refund, and when to cut their losses. A structured post-return workflow can reduce COD return-to-sender losses by recovering revenue you'd otherwise write off.
What Does a COD Return-to-Sender Package Actually Cost?
A returned package doesn't just cost you shipping twice. The full damage includes:
- Forward shipping — you already paid to send it
- Reverse shipping — you pay again when it comes back (brands spend roughly 1.5x the original shipping cost on returns handling)
- Warehouse processing — someone has to receive, inspect, and re-shelve the item
- Product depreciation — time-sensitive or seasonal inventory loses value every day it sits
- Opportunity cost — that unit could've been sold to a buyer who'd actually accept delivery
For a ₹1,000 order with ₹80 forward shipping and ₹100 reverse shipping, you're out ₹180 minimum — even if the product returns in perfect condition. If you reship without a system, you risk paying that ₹180 again on the same customer who won't answer the door a second time.
Build a Reship-or-Write-Off Decision Framework
Not every returned package deserves a second attempt. You need clear rules so your team doesn't waste time debating each case. Here's a framework that works:
Reship when all three conditions are true:
- The customer confirms they still want the order (via WhatsApp or SMS reply)
- The return reason was logistical (wrong address, customer not home) — not a refusal
- The customer has no prior RTS history with your store
Refund (product only, not shipping) when:
- The customer doesn't respond within 48 hours
- The customer explicitly refused delivery
- This is their second RTS on any order
Write off and resell when:
- The product is undamaged and still in stock rotation
- The customer is unresponsive and has prior RTS flags
- Reshipping cost exceeds your margin on the item
Print this framework. Tape it next to your packing station. Your team shouldn't need to ask you what to do with every returned package.
Automate Address Correction Before Reshipping
About half of non-refusal RTS packages come back because the address was wrong or incomplete. If you haven't already set up a failed delivery recovery workflow, start there — but even with NDR management, some packages will still come back. Reshipping to the same bad address guarantees a second failure.
Before any reship, trigger an automated WhatsApp message: "Hi [name], your order couldn't be delivered. Can you confirm or correct your full address including landmark?" Give them 48 hours. No reply = no reship.
You can build this with Shopify Flow using the "Order fulfilled" trigger filtered by a "returned" tag your logistics partner applies. The Flow sends the message, waits for a response, and your team only processes confirmed reshippings.
For stores processing 100+ COD orders daily, even a 10% address correction rate on RTS packages saves 5–10 unnecessary refunds per week.
Tag and Block Repeat RTS Offenders
Some customers generate RTS packages repeatedly. They order impulsively, don't answer the door, or give fake addresses. These aren't bad people — but they're expensive customers you can't afford to keep serving via COD.
Build a tagging system:
- First RTS: Tag the customer "rts-1" — reship if they confirm
- Second RTS: Tag "rts-2" — refund only, no reship, flag for review
- Third RTS: Add to blocklist — future COD orders blocked, prepaid only
This graduated approach avoids punishing one-time mistakes while cutting off serial offenders. EasySell's blocklist and order limit features let you block specific phone numbers or emails from placing COD orders, so flagged customers can only buy prepaid — no code required.
Recover Costs With a Reshipping Fee Policy
If the first delivery failed because of the customer (wrong address, refusal, not available after 3 attempts), the second delivery shouldn't be free. Most merchants eat this cost out of fear of losing the customer. But a customer who caused an RTS and wants a reship will pay ₹50–100 for the privilege — because they still want the product.
Options for implementing this:
- Flat reshipping fee: Add ₹50–100 to the COD amount on the second attempt
- Convert to partial prepaid: Require a small deposit (10–20% of order value) via UPI/card before reshipping — this also confirms intent
- Absorb for high-value orders: If the order is above ₹2,000, the margin usually covers a free reship — set your threshold based on your actual margins
Communicate this clearly at checkout. A note like "Orders returned due to incorrect address will incur a ₹75 reshipping fee" sets expectations and deters impulse orders with fake details.
Track RTS Rate by Courier, Region, and Product
Your RTS problem likely isn't uniform. It clusters around specific couriers, pincodes, and product categories. Without tracking this, you're treating every return the same way.
Build a simple spreadsheet or use Shopify's order export to track:
- RTS by courier: If one courier returns 35% while others return 20%, the courier is the problem — not your customers
- RTS by pincode: Certain areas have poor last-mile infrastructure. Block COD for those pincodes or require partial prepaid
- RTS by product: Bulky items fail delivery more often (customer not home to receive). Consider mandatory delivery-slot selection for those SKUs
Review this data weekly. One store we looked at discovered 40% of their RTS volume came from just 12 pincodes. Blocking COD for those areas and offering prepaid-only with a 10% discount recovered the lost revenue within a month.
Set a 48-Hour Processing Window for Returns
Returned packages that sit in your warehouse for a week lose resale value and clog your inventory count. Set a strict processing rule: every RTS package gets triaged within 48 hours of arrival.
The triage checklist:
- Inspect product condition — sellable or damaged?
- Check customer RTS history — first offense or repeat?
- Send reconfirmation message if eligible for reship
- If no response in 48 hours, move to refund/resell queue
- Update inventory to reflect the returned unit as available
Automate step 3 with Shopify Flow. The rest is a 2-minute manual check per package. At 50 returns/week, that's under 2 hours of processing time — far less than the ad-hoc approach where packages pile up for days.
Your Next Step
Pick the one fix that matches your biggest pain. If you're reshipping blindly without confirmation, build the WhatsApp reconfirmation flow today. If repeat offenders are draining your margins, set up the three-strike tagging system. If you don't know where your RTS clusters — export your last 90 days of returns and sort by pincode.
The stores that treat RTS as a system problem (not a customer-by-customer headache) recover 15–25% of what they used to write off. That's not a new revenue stream — it's money you already earned and kept giving back.