7-day trial for FREEStart now →
·13 min read

10 Proven Ways to Reduce COD Returns for Indian D2C Brands

India averages 26% COD RTO. At 3,000 orders a month, that is ₹4 lakh lost to returns. 10 proven ways to reduce COD returns for Indian D2C brands.

RTO ReductionD2C IndiaCOD ReturnsEcommerce OperationsShopify IndiaNDR Management
OneflowAI
OneflowAI Team

You ship 4,000 orders this month. 26% come back. That is 1,040 returned parcels landing in your warehouse, each costing between ₹400 and ₹600 when you add up both-way shipping, packaging, QC labor, and the ad spend you burned to acquire that customer.

That is ₹4.2 to ₹6.2 lakh gone. Every month. Before you look at your margins.

The 26% figure is not a worst-case number. Shipway's ShipNotes report (July 2025) put average Indian COD RTO at exactly that across the platform. Unicommerce's India D2C Report 2026, covering 400 million-plus shipments across 6,000-plus brands, found RTO hitting 39% during the festive period in November 2025 before declining to 21% by February 2026. The brands that drove that decline were not running different courier integrations. They were making different decisions at checkout and at dispatch.

This post covers 10 specific, actionable ways to reduce COD returns. Each one is drawn from how Indian D2C operators have actually moved their numbers. At the end there is a cost calculator so you can put a monthly rupee figure on your own RTO rate before deciding what to fix first.


What COD Returns Are (and Why India Has So Many)

A COD return happens when a dispatched order comes back to your warehouse without being delivered. The customer either refused the parcel at the door, was unreachable when the courier arrived, or had an address the delivery agent could not find. This is different from a voluntary return, where the customer received the product and sent it back.

India's RTO problem is primarily a COD problem. Prepaid orders return at under 5% nationally. COD orders return at 26% on average and significantly higher in certain categories and geographies. The gap exists because COD buyers have zero financial commitment at the time of ordering. Refusing a delivery costs them nothing.

Three forces make this worse in India specifically. First, informal address structure: Indian addresses often use landmarks rather than precise geocodes, and first-attempt delivery failure rates are high in tier-2 and tier-3 cities. Second, tier-2 and tier-3 expansion: Unicommerce's FY26 report found 66% of new D2C orders coming from buyers in these markets, where COD preference and RTO rates are both higher than in metros. Third, social media impulse purchases: fashion and lifestyle brands running Meta ads attract buyers who order in 60 seconds at 10 PM; by the time Delhivery shows up four days later, that impulse has faded, and COD gives them a free exit.

Each of these forces has a specific counter. Here are 10 of them.


10 Ways to Reduce COD Returns

1. Add OTP Verification Right After COD Order Placement

The fastest filter for fake and impulse COD orders is an OTP sent to the customer's phone within seconds of placing the order. If the phone number is wrong, the OTP bounces. If the customer placed the order by accident or has second thoughts, they will not bother confirming. Orders that do not confirm within a 60-minute window are your highest-probability RTOs.

OTP-verified COD orders show meaningfully lower RTO rates than unverified ones. The cancellation rate from unconfirmed OTPs is itself a useful number: it tells you what percentage of your COD pipeline was never a real order to begin with. Some brands running this for the first time find that 6 to 10% of COD orders do not survive the OTP step. [VERIFY: specific OTP cancellation rates by category]

How to implement: Shopify apps like Cashfree CODFIRM and GoKwik trigger OTP via WhatsApp or SMS at order placement. Set an auto-cancel rule for orders unconfirmed after 60 to 90 minutes. Hold dispatch until confirmation is received, not just for the first few hours after order, but before the shipping label prints. Track the hold-to-cancel ratio weekly: it tells you how your COD audience quality is changing.

2. Offer a Prepaid Discount at Checkout

The gap between prepaid RTO (under 5%) and COD RTO (26%) is the single largest lever you have. Every COD order you convert to prepaid is an order you have essentially removed from your RTO risk pool.

GoKwik data from the Valentine's Day 2025 sale period showed prepaid orders at 55% of total D2C orders, up from near-50:50 the year before. That shift was driven by prepaid incentives combined with UPI making online payment frictionless. For the first time in four years, prepaid overtook COD across GoKwik's network. Research on Indian D2C checkout behaviour suggests 68 to 74% of undecided buyers choose prepaid when offered a ₹75 to ₹125 discount at the payment step. [VERIFY: specific conversion data from GoKwik or Razorpay]

How to implement: Add a payment method selector that shows a ₹50 to ₹100 off badge next to UPI and card options. Frame the incentive as "Save ₹75 if you pay now" rather than "Pay online." The former is a gain; the latter feels like an obligation. For brands on Shopify, Razorpay Magic Checkout and GoKwik's Kwik COD both support dynamic prepaid incentives at the payment step. [INTERNAL LINK: how to reduce RTO in Shopify India]

3. Validate Addresses Before the Label Prints

A bad address at checkout is a failed delivery at the door. The courier cannot charge you for an undeliverable address, but you pay for both the forward and return legs. And you pay the 10 to 15 days it takes for the parcel to come back, during which the customer has moved on entirely.

Address confirmation through WhatsApp before dispatch catches a significant share of potential RTOs: customers with incorrect addresses update them before the label is printed, and customers who have already changed their mind cancel rather than go through the confirmation step. [VERIFY: specific percentage of RTOs prevented by pre-dispatch address confirmation]

How to implement: Enforce pincode-first address entry at checkout so city and state auto-populate from the pincode. Flag pincodes that do not match the entered city (a common data entry error that sends parcels to the wrong city). For COD orders above ₹800, send a WhatsApp address confirmation before dispatch, not 12 hours after. The prompt is simple: "Your order will be delivered to [address]. Reply YES to confirm." Tools like Bepragma and Shiprocket Engage have this workflow ready to configure.

4. Restrict or Add a Handling Fee for COD on High-Risk Pincodes

Not all pincodes are equal. A brand shipping from Mumbai might see 8 to 12% RTO in Bandra and 38 to 45% RTO in some interior Uttar Pradesh or Bihar pincodes, through the same courier, same product, same checkout. The pincode is signalling something about last-mile infrastructure, buyer behaviour, and historical delivery success in that geography.

Pull your last 90 days of NDR data by pincode. The top 10% of pincodes by RTO rate will account for a disproportionate share of your total returns. [VERIFY: specific concentration data] For those pincodes, you have three options: restrict COD entirely, add a ₹30 to ₹60 COD handling fee that filters out the least-committed buyers, or route to a different courier with better last-mile performance in that region.

How to implement: Shopify checkout extensions allow pincode-level payment method toggling. After Delhivery's acquisition of Ecom Express in April 2025 for ₹1,407 crore, audit pincodes that Ecom Express previously served reliably: serviceability in some tier-2 and tier-3 zones may have shifted to different handling. [EXTERNAL: Delhivery-Ecom Express acquisition, April 2025]

5. Use Cross-Brand Customer Risk Scoring

A customer who has refused orders on two other D2C brands before landing on your store is not the same risk as a first-time buyer. You cannot see their history. But networks like GoKwik and Shiprocket, which process orders across thousands of Indian D2C brands, can.

Cross-brand risk scoring flags phone numbers and addresses with patterns of refusal, fake orders, or serial COD returns. When a high-risk customer reaches your checkout, you can show them a prepaid gate, reduce the COD limit available to them, or add a small COD security deposit that gets refunded on delivery.

How to implement: If you are using GoKwik or Shiprocket's checkout product, this is built in. If you are on a custom checkout, API access to their risk engine is available. Any brand doing more than 800 COD orders a month should have buyer risk scoring active. One serial returner who RTOs five or six orders a month costs more than a dozen legitimate COD deliveries. [INTERNAL LINK: real cost of a returned order]

6. Set a COD Value Cap by Category

Electronics brands have largely figured this out: very few allow COD on orders above ₹2,000 to ₹2,500. The per-RTO loss on a returned ₹3,499 Bluetooth speaker (both-way shipping, broken seal markdown, QC and repackaging) crosses ₹900 to ₹1,200 easily. That single return absorbs the margin from four or five delivered orders.

Fashion brands are slower to apply this logic. But a ₹1,799 occasion kurta set returned from a tier-3 city after 10 days, with tags removed and packaging destroyed, costs ₹600 to ₹700 in true RTO cost. That is more than a third of its selling price. A COD cap at ₹1,000 to ₹1,200 for new buyers in high-risk pincodes preserves conversion for committed buyers while filtering out the most expensive returns. [INTERNAL LINK: RTO rate by category India]

How to implement: Use Shopify's checkout extensibility to hide COD when order value crosses a category-specific threshold. Combine with buyer history: repeat customers with clean delivery records can access a higher COD limit. New buyers from high-risk pincodes see the lower limit. Set the threshold based on your actual per-RTO cost calculation, not an arbitrary number.

7. Send a Prepaid Upgrade Offer After COD Order Placement

A COD order placed does not have to ship as COD. Between order placement and dispatch, typically 4 to 18 hours, you have a window to offer the customer a switch to prepaid. The customer has already decided to buy. They are far more likely to pay online at this point than they were during checkout, because the commitment to the product has already been made.

A WhatsApp message after order placement, offering a ₹60 discount for switching to UPI with a one-tap payment link, converts a meaningful share of COD orders. For high-risk orders identified by pincode or buyer score, increase the incentive. The cost of that incentive is almost always less than the expected RTO cost of letting the order ship as COD.

How to implement: Razorpay's payment link API generates a customer-specific one-click UPI link you embed in the WhatsApp message. No re-entry of order details. The customer taps, pays in 10 seconds, and the order converts to prepaid. Track the conversion rate of these post-order messages separately from at-checkout prepaid conversion: they behave differently and you will tune the incentive amount independently.

8. Automate NDR Response Within the First Hour

NDR (Non-Delivery Report) is the status between a failed delivery attempt and a full RTO. Most brands lose orders here because the NDR sits unattended for 24 to 48 hours. The courier makes a second attempt, fails again, and initiates RTO. The entire sequence was preventable.

Automated NDR systems that trigger a WhatsApp to the customer within 30 minutes of the first failed attempt can recover a substantial share of NDR orders before they become RTOs. The message is straightforward: "Our delivery partner tried to reach you today at [address]. Tap here to confirm delivery tomorrow between 2 and 5 PM." Customers who get this message and respond almost always take the delivery. Customers left to the courier's second unanticipated attempt often are not home again. [VERIFY: specific NDR-to-delivery conversion rates with rapid automated response]

How to implement: Shiprocket's NDR module, Delhivery's API, and Ekart's seller portal support NDR webhooks. Set up a trigger: when order status changes to NDR, immediately send a WhatsApp with a self-service rescheduling link. Classify NDR reasons: "customer unreachable" needs a rescheduling flow; "incorrect address" needs an address correction flow. The workflows should differ. Track NDR-to-delivery conversion as a separate metric from overall RTO rate.

9. Send Pre-Delivery Notifications on WhatsApp

Customers who know delivery is coming are present for it. The simplest preventable cause of NDR is a customer who was out because they had no idea the parcel was arriving that day. This is not laziness from the customer: Indian courier delivery windows are often 4 to 6 days wide, and no one plans their day around an unspecified window.

A WhatsApp message on the morning of delivery day, saying "Your [brand name] order is out for delivery today, expected between 2 PM and 6 PM at [address]," does two things. It ensures the customer is present or makes arrangements. And it gives them a channel to flag a wrong address or request a reschedule before the delivery agent leaves the hub, which is far cheaper than a failed attempt.

How to implement: Set up a WhatsApp Business API account via a BSP (Business Solution Provider) like Interakt, WATI, or Gupshup. Build two automated triggers: one at dispatch (order shipped, AWB tracking link) and one on out-for-delivery status. The out-for-delivery trigger is the critical one and requires an API connection to your courier's webhook feed. Both Delhivery and Shiprocket support real-time status webhooks. Make sure you are compliant with TRAI DLT registration requirements for transactional WhatsApp messages before scaling this workflow. [EXTERNAL: TRAI DLT registration for WhatsApp Business API India]

10. Offer Partial COD for High-Value Orders

Full prepaid is not always achievable for buyers spending ₹2,000 or more at a brand they have never bought from. But full COD at that value carries real risk for your margins. Partial COD splits the difference: the customer pays 20 to 30% online at checkout and the remainder on delivery.

The partial upfront payment creates enough financial commitment to filter out non-serious buyers without deterring buyers who are genuinely interested but not yet ready to trust a new brand with full prepaid. Conversion does not drop meaningfully for high-intent buyers, but the RTO rate on partial COD orders is lower than on full COD because the low-commitment fringe does not complete the partial payment step.

How to implement: Frame it as "Confirm your order with ₹299 today, pay the balance on delivery," not as "pay some now." Partial COD is most effective for orders above ₹1,500 and for categories with high refusal rates on high-value COD: electronics, jewellery, premium apparel. Track RTO rates on partial COD separately from full COD before deciding the threshold. The lift you see will tell you whether the filter is working.


Calculate Your Monthly RTO Cost

Before implementing any of the above, put a rupee figure on what your current RTO rate is costing you. The table below shows monthly RTO loss at different COD order volumes and RTO rates, using a mid-range true cost of ₹480 per RTO order. That figure covers both-way shipping (~₹185), packaging waste (~₹22), QC and repack labor (~₹35), and a partial CAC write-off (~₹130), with some variation for product markdown. [INTERNAL LINK: real cost of a returned order]

Find your monthly COD order volume in the left column and your approximate COD RTO rate across the top. The intersection is your estimated monthly RTO cost. Adjust upward if your CAC is above ₹200 (common in beauty and fashion) or your return shipping exceeds ₹120.

COD Orders / Month 15% RTO 20% RTO 25% RTO 30% RTO 35% RTO
500₹36,000₹48,000₹60,000₹72,000₹84,000
1,000₹72,000₹96,000₹1,20,000₹1,44,000₹1,68,000
2,000₹1,44,000₹1,92,000₹2,40,000₹2,88,000₹3,36,000
3,000₹2,16,000₹2,88,000₹3,60,000₹4,32,000₹5,04,000
4,000₹2,88,000₹3,84,000₹4,80,000₹5,76,000₹6,72,000
5,000₹3,60,000₹4,80,000₹6,00,000₹7,20,000₹8,40,000

What a 5-point drop saves: At 4,000 COD orders a month and 25% RTO (₹4.8 lakh/month), dropping to 20% RTO saves ₹96,000 per month. Dropping from 20% to 15% saves a further ₹96,000. Implementing ways 1, 2, and 8 above typically delivers the first 5-point drop within 60 days on most Shopify brands.


What Good Looks Like: Benchmarks by Category

Benchmarking against 26% national average is only useful if you sell an average product to an average buyer through an average channel. Category, geography, and COD share all matter more. Use these ranges as category-specific targets.

Category Typical COD RTO What good looks like Prepaid RTO
Fashion / Apparel28-38%16-20%Under 5%
Footwear25-30%14-18%Under 5%
Beauty / Personal Care12-20%7-11%Under 5%
Electronics / Accessories22-28%10-15%Under 5%
Health Supplements12-18%6-10%Under 4%
Jewellery5-10%2-5%Under 3%

Unicommerce's data shows the best-performing D2C brands in India running below 21% RTO across all order types by March 2026. These brands got there by systematically converting COD buyers to prepaid, enforcing address validation, and automating NDR response. None of those are logistics-layer fixes: they are checkout and operations decisions. [EXTERNAL: Unicommerce India D2C Report 2026]

The gap between "typical" and "what good looks like" in the table above is the recoverable margin. Getting from 30% to 20% COD RTO on 2,000 monthly COD orders saves roughly ₹96,000 per month. Getting from 20% to 12% saves a further ₹76,800. The second improvement is harder but the math does not care.


Building It Into Your Stack, Not Your Calendar

The ten ways above work when they run automatically, not when someone remembers to check the NDR queue or manually sends a prepaid upgrade message. RTO reduction as a manual process does not scale past 500 orders a month. RTO reduction as an automated system works at 5,000.

Most Indian D2C brands end up stitching this together with separate tools: a Shopify app for OTP verification, a WhatsApp BSP for notifications, Shiprocket for NDR management, and a spreadsheet for pincode analysis. It works, at a cost in time and in gaps between systems where signals do not travel.

OneflowAI is built as a checkout and operations layer specifically for Indian D2C on Shopify. It bundles COD verification, prepaid nudges, address intelligence, and NDR automation so the signals connect: a buyer flagged as high-risk at checkout does not get a COD option; an order hitting NDR triggers an automatic WhatsApp within minutes; a converted prepaid order gets faster dispatch routing. Worth evaluating if you are above 800 COD orders a month and the number from your calculator above looks uncomfortable.


Frequently Asked Questions

What is a COD return or RTO?

RTO stands for Return to Origin. It is when a dispatched order comes back to your warehouse without being delivered: because the customer refused it, was unreachable, or had an address the courier could not find. This is different from a voluntary return, where the customer received the product and chose to send it back. RTO happens before delivery and is almost entirely a COD phenomenon: prepaid orders return at under 5% nationally, COD at 26%.

What is the average COD return rate in India?

Shipway's ShipNotes report (July 2025) puts average Indian COD RTO at 26%. Unicommerce's India D2C Report 2026 found festive-period RTO hitting 39% in November 2025, declining to 21% by February 2026 for brands actively managing the problem. Category and geography shift this number significantly: fashion COD runs 28 to 38%, jewellery runs 5 to 10%. The national average is a starting point, not a target. [EXTERNAL: Shipway ShipNotes logistics report]

Which of the 10 ways has the fastest impact?

OTP verification (Way 1) shows impact within the first week: unconfirmed orders that would have shipped and returned never enter the fulfillment queue. Prepaid incentives at checkout (Way 2) show impact within 2 to 4 weeks as you tune the discount amount and messaging. NDR automation (Way 8) shows impact within 30 days as recovered NDR orders appear in your delivery rate data. Together, these three typically move the RTO rate 6 to 10 percentage points before the other interventions add their contribution.

Does disabling COD reduce returns?

Yes, but at a conversion cost. For most Indian D2C categories outside premium price points, disabling COD drops checkout conversion by 25 to 40% because a significant portion of buyers will not pay online for an unfamiliar brand. The better approach is to make COD smarter: verify it, score it, restrict it on high-risk pincodes and above value thresholds, and actively convert it to prepaid before dispatch.

What is NDR and how does it relate to COD returns?

NDR is Non-Delivery Report, the status logged when a delivery attempt fails. Every RTO starts as an NDR. Whether that NDR becomes a re-delivery or a return depends on how quickly you respond and what options you give the customer. Automated NDR workflows that reach out within 30 minutes of a failed attempt convert a meaningful share of NDR orders into deliveries. Manual NDR management (checking a dashboard twice a day) converts far fewer and loses the window.

Which couriers have the lowest RTO rates in India?

No single courier is lowest across the board. Bluedart performs best in metros and tier-1 cities for high-value orders. Delhivery has the broadest tier-2 and tier-3 reach after its acquisition of Ecom Express in April 2025. XpressBees is competitive in several regional clusters. The only reliable way to find out which courier performs best for your specific pincodes is to run a 90-day delivery success rate analysis by courier by pincode using your own NDR data. Generic rankings are not the answer.

How does address validation work for Indian addresses?

Address validation at checkout checks the entered address against pincode-city databases and courier serviceability databases. The basic version catches pincode-city mismatches: a common data entry error that sends parcels to the wrong city or district. The advanced version flags addresses in localities where historical delivery success rates are low. Tools that rely purely on Google Maps autocomplete will normalise wrong addresses and give you false confidence. Tools that validate against India Post delivery office databases and courier serviceability APIs are more reliable.

What is partial COD and when should I use it?

Partial COD means the customer pays 20 to 30% of the order value online at checkout and the remainder in cash on delivery. It is most useful for orders above ₹1,500 where full COD carries high per-RTO loss and full prepaid deters some buyers. The partial payment creates just enough financial commitment to filter out non-serious buyers. Track partial COD RTO separately from full COD to verify the lift before deciding the threshold and the upfront percentage.

Is tier-2 and tier-3 expansion making COD returns worse?

For most categories, yes. Unicommerce's FY26 data shows 66% of new D2C buyers coming from tier-2 and tier-3 markets. These buyers have higher COD preference, lower brand trust for new D2C labels, and worse last-mile infrastructure in their areas. COD RTO rates in these geographies run 8 to 15 percentage points higher than metro delivery. Managing this requires pincode-level routing rules, buyer risk scoring, and a COD policy that reflects actual geography-level risk rather than a single national policy.

How do I decide which of the 10 ways to implement first?

Pull your last 60 days of NDR data and look at three things: (1) which reason codes are most common in your NDRs (unreachable, wrong address, refused at door), (2) which pincodes have RTO above 35%, and (3) what percentage of your COD volume is from first-time buyers. If unreachable is the top reason code, start with pre-delivery notifications (Way 9) and NDR automation (Way 8). If address issues dominate, start with address validation (Way 3) and pincode restrictions (Way 4). If new-buyer refusals are the pattern, start with OTP verification (Way 1) and buyer risk scoring (Way 5). The NDR data tells you which problem is largest; fix that one first.


Where to Start This Week

If you are doing 1,000 or more COD orders a month with an RTO rate above 20%, the calculator above gives you a monthly rupee figure that is probably larger than you expected. That number is recoverable with known interventions.

Three things require no new vendor contracts and can be running this week: add a prepaid discount at checkout (30 minutes of setup on any Shopify theme), configure WhatsApp pre-delivery notifications for dispatched orders (available through any WhatsApp BSP), and pull your pincode-level NDR report from Shiprocket or your courier's seller portal. The data tells you where the concentration is. The first two fixes move the baseline while you plan the rest.

RTO is not a permanent feature of Indian D2C logistics. It is a solvable problem with known solutions. The brands running below 15% COD RTO in India are not different in category or geography. They are different in how systematically they have closed each gap. These 10 ways are the gaps. [INTERNAL LINK: how to reduce RTO in Shopify India]

See it in action

Book a 30-min demo with the founder.