A D2C brand shipping 2,000 orders a month rarely loses money on ads alone. It loses it in the stretch between the order being placed and the cash landing in the bank. Returns, RTOs, COD remittances and address corrections each take a small cut, and none of that shows up in your marketing dashboard. The cost usually lands on one or two people in ops, working out of a courier panel, a store export and a WhatsApp group. These five mistakes explain most of the leakage, and each has a fix you can ship this month.
Treating a captured order as a finished order
An order is not done until it is delivered and, on COD, until the money is credited to your account. Everything before dispatch is cheap to fix; everything after it costs you a forward shipment plus a reverse one. Run these checks before a label is generated:
- Pincode serviceability and COD availability, checked at checkout and again before manifesting.
- Phone number length and reachability, not just "field is not empty".
- Address quality: house number, landmark, and a map pin for high-value orders.
- A COD confirmation step above a threshold you set, typically ₹2,000-3,000 in our experience.
Preventing one RTO on a ₹1,400 order saves roughly ₹250-350 in two-way freight and repackaging. Do that 300 times a month and you have covered a junior ops salary.
Keeping returns in a spreadsheet instead of on the order
Every return should be recorded against the order that caused it, because a return living only in a sheet cannot be counted, aged or traced to a SKU. Capture four things at pickup: a reason code the customer picks from a short list (size or fit, damaged, not as described, changed mind, wrong item), who bears the cost, whether the unit goes back to sellable stock or to a claims pile, and the date. Without reason codes you are guessing at fixes. With them, patterns surface in six to eight weeks. If your courier panel and your store don't talk to each other, a small internal tool that writes return status back to the order is usually a two to three week build rather than a platform replacement; custom internal tools covers the shape of that work.
Reconciling COD remittances once a month, at the total level
COD should be reconciled order by order, every remittance cycle, because a total-level match hides exactly the errors that cost you money. Couriers settle weekly or fortnightly and deduct freight, COD collection fees, RTO charges and weight adjustments from the same credit. Take 1,800 COD orders a month at an average ₹1,150: about ₹20.7 lakh collected. If you only tick the bank credit against that figure and absorb a 1% gap, you write off roughly ₹20,700 every cycle and never learn which 18 orders went missing. Match the remittance file to your order list by AWB, flag anything unpaid beyond its cycle, and raise disputes inside the courier's stated window, typically 30-45 days.
Working failed deliveries whenever someone remembers
Non-delivery reports need a daily queue with a named owner and an aging rule, not a periodic cleanup. Couriers file an NDR after one failed attempt and allow a limited number of reattempts before the parcel turns into an RTO. If nobody contacts the customer within 24-48 hours, the default outcome is a return. The fix is boring: one list sorted by age, showing attempt count, reason and phone number, worked every morning, with saved templates for "address unclear", "unreachable" and "refused". Most of those conversations land faster on WhatsApp than on a call, and WhatsApp outreach automation can run the reattempt nudges and address-correction requests without manual dialling. Track reattempt-to-delivery conversion weekly; below roughly 40% usually means the messaging is the problem, not the customer.
Measuring a blended return rate instead of returns by SKU and reason
A single return percentage tells you nothing you can act on; cut it by SKU, reason code, courier and payment mode. A brand sitting at a 9% blended return rate looks fine until the split shows one kurta at 34% because the size chart is wrong, and one courier carrying half the damage claims. Same headline number, two completely different fixes: reshoot the size guide, or change the packaging. Review those cuts monthly, and put the dashboard where ops actually looks rather than in a BI tool nobody opens. If you are weighing a spreadsheet cleanup against a proper build, the scope of comparable work in our case studies is a useful reference.
Where to start
Start with COD reconciliation and the NDR queue. Both are weekly, measurable and cheap to fix, and both show a return inside a month. Return reason codes come next, because they make every later decision easier. Maysan Labs builds order-ops dashboards and internal tools for D2C and B2B teams, and we are glad to look at your numbers before you commit to building anything.
Buying software or a website?
Twelve questions to ask any vendor before you sign: price, your data, fit for an Indian business and support.
Get the free checklistRelated case study
Full-Stack Ecommerce Platform
Needed a complete ecommerce platform built from scratch with inventory, orders, payments, and customer management.
Written by Sanjay Mandal at Maysan Labs, a software studio in Gurgaon, India. Follow us on LinkedIn