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.

Note: Fee structures vary by plan and volume. The figures above are indicative based on published rate cards as of early 2026. Your actual rate may differ. Check your courier contract or remittance report to confirm what you are being charged per order.

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:

Forward shipping
₹60–80
Already paid. Not recoverable once the order ships.
Reverse shipping
₹60–80
Charged again to bring the package back to your warehouse.
Repackaging
₹15–40
Quality check, repackaging and re-listing the item if it is resaleable.
Ad spend wasted
₹80–200+
The customer acquisition cost for an order that generated zero revenue.

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.

The comparison that matters: A prepaid order that is cancelled before shipping costs you nothing in logistics. A COD order that is refused at the door has already cost you two shipping legs. This asymmetry is why your COD RTO rate is one of the highest-leverage numbers in your entire P&L.

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.

How common is this? Brands running their first reconciliation audit typically find 2% to 8% of their monthly COD revenue is either missing or short-paid. On ₹20 lakh per month that is ₹40,000 to ₹1,60,000 lost every month. The money is recoverable through courier disputes. It just sits there unrecovered unless someone looks for it.

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.

500 COD orders · ₹800 AOV · 28% RTO rate · ₹4,00,000 gross COD revenue
COD handling fees (1.75% avg) ₹7,000
RTO cost: 140 orders × ₹250 avg ₹35,000
Remittance leakage (3% of revenue) ₹12,000
Ops time: 8 hrs × ₹300/hr blended cost ₹2,400
Capital opportunity cost (est.) ₹3,500
Total COD cost this month ₹59,900

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.

Run a free audit →

Frequently asked questions

What is a COD handling fee and how much is it?
A COD handling fee is a charge couriers levy for collecting cash from your customer and remitting it back to you. Most major Indian couriers charge between 1% and 2% of the order value with a minimum flat fee per shipment. It is deducted from your remittance before the amount reaches your bank.
How much does an RTO cost a D2C brand in India?
A returned order typically costs the forward shipping charge, the reverse shipping charge and any repackaging or quality-check cost. For an average order shipped at ₹60 to ₹80 forward, the total RTO cost lands between ₹150 and ₹250 per order before accounting for blocked inventory or wasted ad spend.
What is the real profit margin on a COD order versus a prepaid order?
A prepaid order typically costs 3% to 5% less to fulfil than a COD order of the same value once you factor in the handling fee, the higher RTO rate and capital lock-up. Brands that run the full numbers often find that a ₹800 COD order nets less than a ₹750 prepaid order.
How much working capital does COD lock up?
From the moment you ship to the moment the remittance hits your account, capital is locked for 5 to 15 days depending on your courier and plan. For a brand doing ₹20 lakh per month in COD, that means ₹3 to 10 lakh is sitting in transit at any given time and unavailable for inventory reorders or ad spend.
Does COD reconciliation actually recover money?
Yes. Brands running their first reconciliation audit typically find 2% to 8% of their monthly COD revenue is either missing or short-paid. On ₹20 lakh per month in COD orders that is ₹40,000 to ₹1,60,000 quietly lost every month and fully disputable with your courier through a structured ticket process.