You ship COD and roughly one parcel in four comes back. That's the Indian average, not bad luck: Shipway's ShipNotes FY25 report puts COD RTO at 26 percent against under 2 percent for prepaid. Each return burns ₹300 to ₹500 in two-way freight, dead packaging and ad spend you already paid. This page is the procedure that stops it: the checklist your team runs daily, the exact words your confirmation message uses, the pin-code table that decides when COD gets switched off, and the Monday ritual that keeps the number honest. Print it. Hand it to whoever packs your orders.
For the reasoning, the ₹ math and the causes behind these steps, read the full RTO reduction playbook first. This page is the how, built from the operations chair by Ravikant Tyagi, Distribution Head at Eureka Forbes and Supply Chain and Operations Leader at Atomberg.
Seven SOPs, run in order of the parcel's journey. Scrub the address before dispatch. Confirm every COD order by WhatsApp, then one IVR call, 2-attempt rule, then hold or cancel. Force prepaid above your value ceiling and in red pin codes. Nudge prepaid at checkout and after the order with UPI first and a sized token. Clear every NDR inside 24 hours with a named owner. Pick the lower-RTO courier per zone, not the cheapest. Review five numbers every Monday against fixed thresholds. Each RTO you prevent keeps ₹300 to ₹500 of cash in the business, so most of this SOP is really one instruction: stop shipping unverified cash orders to risky pin codes.
SOP 1: How do I scrub addresses before dispatch?
Run this on every order before a label is printed. If a field fails, the order is flagged, not shipped. Most aggregator panels and Shopify checkout apps can run the first five checks automatically; the sixth needs a simple report.
| # | Field to check | Auto-flag rule | Action if flagged |
|---|---|---|---|
| 1 | Pin code | Not 6 digits, or not in courier serviceability list | Hold. Re-confirm pin on WhatsApp before dispatch |
| 2 | Phone number | Not 10 digits, starts below 6, or repeated digits (9999999999) | Hold. Request alternate number |
| 3 | Address length | Under 15 characters, or no house or flat number | Hold. Ask for full address line |
| 4 | Landmark | Blank (treat as compulsory in India) | Request a landmark by WhatsApp |
| 5 | City or state vs pin | City does not match the pin code master | Auto-correct city and state from pin |
| 6 | Duplicate order | Same phone or address ordered in last 24h | Call once to confirm it is not a mis-tap |
A flagged address costs one WhatsApp message to fix before dispatch, or roughly ₹150 to ₹250 in two-way freight to find out after. Bad addresses are the second largest cause of failed deliveries after ghost buyers, so this table earns its place at the top.
SOP 2: What is the COD confirmation script and timing?
Every COD order gets confirmed before it ships. Two channels, two attempts, then a decision. Use these exact messages.
Step 1 · WhatsApp, within 1 hour of order
"Hi [Name], this is [Brand]. Confirming your order for [Product], COD ₹[Amount], to [short address]. Reply YES to confirm and we ship today. Reply NO to cancel. The rider also accepts UPI at the door."
Step 2 · IVR or human call, if no reply in 6 hours
"Hello, calling from [Brand] about your order for [Product], cash on delivery ₹[Amount]. Press 1 to confirm, press 2 to cancel. To confirm on WhatsApp, reply YES to our message."
| Attempt | Channel | Timing | If no response |
|---|---|---|---|
| 1 | WhatsApp with YES or NO buttons | Within 1 hour of order | Wait 6 working hours, go to attempt 2 |
| 2 | IVR or human call | 6 to 24 hours after order | Hold order, do not ship |
| Cutoff | Auto-cancel or force-prepaid link | 48 hours, no confirmation | Cancel COD, send prepaid link instead |
What the message costs: on Meta's WhatsApp Business Platform pricing, a confirmation sent as a utility template is billed per delivered message, and it's free if the customer messaged you inside the last 24 hours. The India rate card lists a utility message at about ₹0.115 before 18 percent GST and your provider's markup, so budget under ₹1 per confirmation even with a BSP fee. The IVR call costs more, but both together are a rounding error against the ₹300 to ₹500 they protect. Template setup and opt-in rules are covered in the WhatsApp marketing guide.
The rule is non-negotiable: an unconfirmed COD order does not ship. Hold it 48 hours, then cancel or convert to prepaid. Shipping unverified cash to a stranger is a ₹340 donation to your courier on a ₹599 order, and closer to ₹400 on a ₹1,299 one.
SOP 3: When do I force prepaid instead of COD?
Two triggers decide the gate: order value and pin-code risk. Build the pin-code buckets after 60 to 90 days of your own orders (RTO per pin, sorted). Until then, use a courier risk score. Then apply this table exactly.
| Condition | Green pin (RTO under 15%) | Amber pin (15 to 30%) | Red pin (over 30%) |
|---|---|---|---|
| Order under ₹700 | COD allowed, confirm by WhatsApp | WhatsApp + IVR confirm | Prepaid only |
| ₹700 to ₹1,500 | WhatsApp confirm | Partial prepaid token ₹50 to ₹100 | Prepaid only |
| Over ₹1,500 | Partial token or WhatsApp confirm | Prepaid only | Prepaid only |
| First-time buyer over ₹2,000 | Partial token | Prepaid only | Prepaid only |
| Phone with 2 past refusals | Prepaid only | Prepaid only | Prepaid only |
The Founder Decision Loop™ applied to one COD order. If the pin is red (over 30 percent RTO) → prepaid only, no exceptions. If the pin is amber and the order is over ₹1,500 → prepaid only. If the pin is amber and the order is ₹700 to ₹1,500 → ship only against a ₹50 to ₹100 token. If the pin is green → ship on a WhatsApp YES. If the phone has refused twice before → prepaid only, whatever the pin. Decide from the table, not from the day's mood, and revisit the buckets every 60 days.
Red pin codes are real and named. The same ShipNotes data puts Patna at 35 percent RTO and Vadodara at 18 percent, and it shows the ₹500 to ₹1,000 order band returning most often at 28 percent, so your own map will look similar. Reference cities and the full risk logic sit in the COD vs prepaid strategy guide.
SOP 4: How do I nudge COD buyers to pay online?
Every COD order you convert to prepaid before dispatch removes the entire RTO risk on that order. Run this sequence.
| Stage | Nudge | Mechanics |
|---|---|---|
| Checkout, payment page | UPI intent on top, COD last behind one extra tap | Make prepaid the path of least resistance |
| Checkout incentive | Flat ₹50 or 5% off for paying online | Size the discount below your COD penalty (about ₹70) |
| Checkout, high value | Partial prepaid token ₹50 to ₹100 on COD | Balance payable at door; refusals collapse on token-paid orders |
| Post-order, 0 to 2 hours | WhatsApp payment link: "Pay now, skip the doorstep cash hunt" | Optional sweetener: priority dispatch |
| Post-order, high value | Manual call offering prepaid + small discount | Only on orders above 2x your median AOV |
Sizing rule: if COD costs about ₹70 more per order (a ₹25 to ₹50 collection fee plus the RTO provision), any spend up to ₹60 converting it to prepaid is profit. On sub-₹1,000 orders a flat ₹50 beats a percentage because it reads bigger.
SOP 5: What is the 24-hour NDR rule?
An NDR, or non-delivery report, is the courier's notice that a delivery attempt failed; the parcel sits in the hub and converts to RTO in 24 to 72 hours if nobody acts. Shiprocket's NDR documentation gives you three actions on each one: reattempt, contact the buyer, or return to origin. ShipNotes shows deliveries dragged beyond 5 days hit 35 percent RTO versus 22 percent for 1 to 2 day deliveries, so speed is the whole game. One named owner clears the queue every morning.
Within 4 working hours of any NDR: auto-WhatsApp the customer with three buttons, Reattempt tomorrow, Update address, Cancel. No reply in 4 hours, call from your own number: "Your [Product] is with the courier in [City] and came back undelivered. I want it reaching you tomorrow." Read the address back line by line, confirm the time window, state the COD amount and that the rider accepts UPI. Update the corrected address in the courier panel before triggering the reattempt, never in your chat alone. Escalate any parcel on its second failed attempt to a human daily before the auto-RTO timer fires. Confirmed refusal, mark RTO today; stop spending attempts on a dead order.
Who does what: the ops owner clears the panel and calls; the founder sees only the count of NDRs older than 24 hours in the Monday review. A sub-24-hour response saves 30 to 50 percent of NDRs; past 48 hours the save rate roughly halves. Deeper decoding of courier remarks and fake-attempt disputes lives in the NDR management guide.
SOP 6: How do I pick the courier for each zone?
Do not pick the cheapest courier. Pick the one with the lower RTO in that zone. The ₹8 you save on freight vanishes the first time weak coverage triggers one extra return.
| Step | Action | Threshold |
|---|---|---|
| 1 | Pull delivery success rate per courier per zone, monthly | Need 30+ shipments per courier per zone to trust it |
| 2 | Rank couriers within each zone by success rate, not price | Ignore price gaps under ₹15 |
| 3 | Set allocation rules: best courier as default per zone | Every aggregator supports rule-based routing |
| 4 | Route high-value orders to your most reliable courier | Over ₹1,500 or fragile |
| 5 | Move volume away from any courier faking attempts in a zone | Fake-attempt rate 2x the zone average |
This is free money in a settings screen. The rule-writing itself is walked through in the multi-courier allocation guide, and aggregator coverage and remittance differences are compared in Shiprocket vs NimbusPost vs Delhivery.
SOP 7: What do I review every Monday?
Ten minutes, one sheet, every Monday. Same owner, same numbers, same thresholds. This ritual keeps every SOP above honest.
| Metric | How to pull it | Threshold | Owner |
|---|---|---|---|
| COD RTO rate | COD RTO shipments ÷ COD shipped, last 7 days | Act if over 25%; freeze ad scaling if over 30% | Founder |
| Confirmation rate | COD orders confirmed ÷ COD orders placed | Under 70% means the script or timing is broken | Ops owner |
| NDR save rate | Rescued orders ÷ NDRs flagged | Target 30%+; below 20% means slow response | Ops owner |
| Worst 10 pin codes | RTO per pin, sorted, last 60 days | Any pin over 30% moves to prepaid-only | Ops owner |
| Worst courier per zone | Success rate per courier per zone | Reallocate if 10 points below the zone best | Founder |
How much is one saved RTO worth?
Size the prize before you assign the hours. Take a ₹1,299 COD order, a typical mid-band AOV. Here is the cash that leaves the business when it comes back, line by line.
Two-way freight of ₹170 sits inside the ₹120 to ₹250 a typical parcel costs, and the total lands at ₹400, the middle of the ₹300 to ₹500 band a saved RTO is worth at ₹999 to ₹1,999 AOV. On a ₹599 order the same lines add up to about ₹340, because freight barely changes with price. Now the monthly view: at 500 COD orders a month, cutting RTO from 30 to 20 percent prevents 50 returns. 50 × ₹400 = ₹20,000 of cash kept every month, and if those 50 parcels deliver, each order's own contribution lands on top. Run this against your real numbers in the D2C unit economics guide and put an RTO provision line in your P&L at the rate you actually see.
Margin Waterfall™: selling price minus COGS, packaging, shipping, COD fee, RTO loss, then CAC. RTO enters the waterfall twice: once as the ₹400 of cash a return burns, and again as the contribution the delivered order would have earned. That is why a prevented return is never "just a saved sale". At a 26 percent COD RTO rate, the provision alone is ₹104 per COD order at ₹400 a return; at 15 percent it drops to ₹60. That ₹44 per order is the SOP's return on effort, before a single rupee of recovered margin.
A founder writes all seven SOPs, prints them, then runs them only when the RTO report looks ugly. Confirmation calls happen some days, not others. The NDR panel gets cleared twice a week. Within a month the number drifts from 20 back to 30 percent, and he concludes "SOPs do not work." They do. He never ran them. At 500 COD orders a month that drift is 50 extra returns, about ₹20,000 of cash a month at ₹400 a return, plus the ad money that bought those orders. An SOP skipped on a busy day is not an SOP, it is a suggestion, and RTO is a daily counter that only rewards a daily habit. Assign one named owner with a fixed 4-hour NDR SLA and a Monday review, or do not bother printing the sheet.
Running fulfilment at Atomberg through its ₹400 crore to ₹1,200 crore growth phase taught me that the NDR panel is a morning job, not an evening one. The teams that beat RTO were never the ones with the fanciest tool. They were the ones where the same person cleared the same panel at the same time every day, before anything else. I have watched a 90-minute daily NDR-calling habit recover more cash than a quarter of ad optimisation, because a parcel rescued on day 1 has a 22 percent return risk and the same parcel on day 5 has 35. Systems beat willpower, so turn these SOPs into calendar events with an owner's name on them. What gets scheduled gets done; what gets remembered gets skipped.
Execution checklist
- Turn on the 6-field address scrub at checkout: pin, phone, address length, landmark, city-pin match, duplicate flag.
- Set the COD confirmation flow: WhatsApp in 1 hour, IVR at 6 hours, hold at 48 hours. Unconfirmed orders do not ship.
- Build your pin-code ledger after 60 to 90 days and enforce the force-prepaid table by value and risk.
- Put UPI first at checkout, COD last, with a flat ₹50 prepaid nudge and a token on high-value COD.
- Assign one named owner to clear every NDR within 4 working hours, daily.
- Pull courier success rate per zone monthly and set allocation rules by reliability, not price.
- Run the 5-metric Monday review with fixed thresholds and named owners.
- Add an RTO provision line to your unit economics at your real rate, ₹400 a return, not a hopeful one.
Next action: turn on SOP 1 and SOP 2 today
Pick SOP 1 and SOP 2 and turn them on before you close your laptop: the address scrub and the COD confirmation message. Those two stop the most orders from ever becoming RTO, both are live in under an hour, and the message costs under ₹1 to send. Assign the NDR owner tomorrow morning. Do not wait to build all seven; a business running two SOPs today beats one planning seven for next month.
If you'd like the complete execution system, calculators, SOPs, templates and operating frameworks behind this process, continue inside D2C Acquisition.Lab.
