Ask most D2C founders what a COD order costs and they will say something like: shipping charges plus a small handling fee. That is roughly what shows up as a line item on the courier invoice so it feels like the full picture.
It is not. Not even close.
The real cost of a COD order is spread across five separate buckets: the fee your courier takes before remitting, the capital sitting frozen in transit, the portion of orders that come back undelivered, the money your courier short-pays or quietly holds, and the hours your team spends chasing all of it. Most of these costs never appear on a single invoice. They get absorbed silently into your margins.
This article breaks each one down so you can calculate what COD is actually costing your brand per order and in total each month.
The COD handling fee
Every Indian courier charges a fee for collecting cash from your customer and processing the remittance back to you. This is the one COD cost most brands do know about because it appears explicitly on the invoice, though many underestimate how much it compounds at volume.
The structure is typically a percentage of the order value with a per-shipment minimum:
| Courier | COD fee structure | On a ₹800 order |
|---|---|---|
| Delhivery | 1.5% of COD value, min ₹20 per shipment | ₹12 to ₹20 |
| Shiprocket (aggregated) | 1.75% of COD value, min ₹25 per shipment | ₹14 to ₹25 |
| XpressBees | 1.5% of COD value, min ₹20 per shipment | ₹12 to ₹20 |
| Ecom Express | 2% of COD value, min ₹30 per shipment | ₹16 to ₹30 |
At ₹20 per order and 500 orders a month that is ₹10,000 straight off the top before you have touched anything else. At 2,000 orders it is ₹40,000. This fee is deducted from your remittance before the transfer reaches your bank, which is why many brands discover it only when they reconcile.
The RTO cost
This is the biggest single cost that brands systematically undercount. An RTO is an order that comes back undelivered: the customer refused it, was not home, gave a wrong address or simply changed their mind. You pay to ship it out and you pay again to get it back.
The industry average RTO rate for COD orders in India sits between 25% and 35%. For a brand doing 500 COD orders a month at a 30% RTO rate, 150 of those orders are coming back every month.
Here is what each one costs:
Add those up and a single returned COD order costs ₹215 to ₹400 before you account for the inventory being blocked in transit for 7 to 14 days. On 150 RTOs a month the range is ₹32,000 to ₹60,000 lost — every month.
RTO rates are also not uniform across your catalogue or geography. Fashion and lifestyle typically run higher than consumables. Tier 3 pin codes run higher than metros. If you are not tracking RTO rate by product and pin code you are optimising blind.
Capital locked in transit
This cost is invisible in your P&L because it never shows up as an expense. But it is real.
From the day you ship a COD order to the day the remittance hits your bank account, the order value is sitting somewhere between your customer and your courier's remittance cycle. Depending on your courier and plan, that window is typically 5 to 15 days.
For a brand doing ₹20 lakh per month in COD orders, here is how much is locked at any given time:
| Remittance cycle | Capital locked (on ₹20L/month COD) | Typical couriers |
|---|---|---|
| 2 day (early COD plans) | ₹1.3L | Delhivery standard, Shiprocket Early COD |
| 7 day | ₹4.7L | Most aggregator default plans |
| 10 day | ₹6.7L | Shiprocket standard, Ecom Express |
| 15 day | ₹10L | Regional couriers or negative wallet situations |
That locked capital cannot be used to reorder inventory. It cannot fund the next ad campaign. If you are running on thin working capital, a slow remittance cycle means you are effectively fronting your courier a short-term loan every month at zero interest.
The cost of this depends on your alternative use of that capital. If you are turning inventory every 30 days and each rupee generates ₹0.30 in gross margin, every extra day of lock-up has a real opportunity cost. At ₹5 lakh locked for 7 days instead of 2 days, that gap costs you roughly ₹7,000 to ₹10,000 in foregone margin depending on your turns.
Remittance leakage
This is the cost most brands do not know they are paying because it never produces a visible charge. It simply shows up as a remittance that is slightly lower than it should be.
Remittance leakage falls into three categories:
Short payments
Your courier remits less than the COD value minus their documented fees. The gap is not large enough per order to trigger alarm, but across hundreds of orders it adds up. Common causes include rounding errors in batch processing, incorrect fee application and system bugs that double-deduct charges.
Missing remittances
An order is marked delivered in the courier portal. The customer received the product and paid cash. But no remittance ever appears in your account for that order. The most common cause is a batch processing failure on the courier's end. It does not self-correct. You have to find it and dispute it.
RTO fraud
An order is marked as returned in the courier system. The remittance report shows the COD amount was collected from the customer. But neither the product nor the cash ever makes it back to you. This is the most severe category and the hardest to detect without line-level reconciliation.
Leakage is not concentrated at one courier. It happens across all of them at varying rates. The only way to know your actual leakage number is to reconcile your remittance data against your order data at the AWB level, every cycle.
The ops overhead nobody counts
Someone on your team is dealing with COD. Whether it is a founder, a finance person or an operations manager, hours are going into downloading reports, chasing missing payments, raising tickets and following up on disputes.
At small volumes this is a nuisance. At scale it becomes a material cost.
| Volume | Manual reconciliation time per cycle | Monthly hours (fortnightly cycle) |
|---|---|---|
| Under 200 COD orders/week | 1 to 2 hours | 2 to 4 hours |
| 200 to 500 orders/week | 3 to 5 hours | 6 to 10 hours |
| 500 to 1,000 orders/week | 5 to 8 hours | 10 to 16 hours |
| Above 1,000 orders/week | 8 to 15 hours or dedicated headcount | 16 to 30 hours |
Most finance teams do not reconcile every cycle because it takes too long. They do it monthly at best or quarterly at worst. Every week they skip is a week of leakage that accumulates and becomes harder to dispute retrospectively. Couriers have dispute windows. Most cap them at 30 to 90 days from delivery. Leakage older than that is typically unrecoverable.
The full picture: a worked example
Here is what the true cost of COD looks like for a brand doing 500 COD orders per month at an average order value of ₹800, with a 28% RTO rate.
That is ₹59,900 on ₹4,00,000 in gross COD revenue. A 15% haircut before you have counted product cost, packaging or marketing. And this is a mid-range scenario. Brands with higher RTO rates or thinner margins feel this harder.
The ₹12,000 in remittance leakage above is also worth singling out: it is the only cost on that list that is directly recoverable. The RTO costs are real losses. The handling fees are contractual. But the short payments and missing remittances are your money sitting in the courier's system. You just have to find them and ask for them back.
What to do about it
You cannot eliminate COD. In India it is still how a large share of buyers want to pay and removing it costs you orders. But you can reduce each cost category systematically.
Reduce your RTO rate
The biggest lever. OTP confirmation on COD orders at checkout filters out low-intent buyers before they ever ship. WhatsApp confirmation flows after order placement catch another slice. Blocking COD for pin codes with a history of repeated failed deliveries cuts RTO further without turning away genuine customers. A 5 percentage point improvement in RTO rate on 500 monthly orders saves roughly ₹12,500 per month in logistics alone.
Negotiate your remittance cycle
If you are shipping at volume your courier will negotiate. Moving from a 10-day to a 2-day remittance cycle on ₹20 lakh monthly COD frees up roughly ₹5 lakh in working capital. That is worth a conversation with your account manager.
Reconcile every cycle without fail
Leakage compounds when you do not catch it. A 3% leakage rate on ₹20 lakh per month is ₹60,000 lost. Caught within the dispute window it is fully recoverable. Caught three months later much of it is not. The only way to catch it consistently is to reconcile your remittance CSV against your Shopify orders at the AWB level every two weeks.
If that sounds like a lot of spreadsheet work it does not have to be. PayTrace does the entire reconciliation automatically: upload your courier remittance report and your Shopify export and get a full audit with every short payment, missing remittance and RTO anomaly flagged in under 30 seconds.
See exactly what your COD orders are costing you
Upload your remittance report and Shopify export. Full audit in 30 seconds. Free.