3 October 2026 · 6 min read · Modulus Digital
COD-Aware P&L: The Metric Indian D2C Brands Get Wrong
Up to a third of Indian D2C orders are cash-on-delivery, and a chunk of those never complete. If your P&L books COD orders as revenue on day zero, your ROAS, CAC and profit are all fiction until delivery.
The COD reality
Cash-on-delivery still drives a large share of Indian e-commerce — commonly 20–40% of orders for a D2C brand, higher outside metros. COD is a conversion booster and a risk transfer: the customer commits nothing, and the brand pays forward shipping, packaging and ad spend before a rupee arrives.
RTO — return to origin — is the tax on that convenience. Industry RTO rates on COD orders run from the low teens to above 30% in some categories. An order that is refused at the door costs you the ad spend that won it, two legs of shipping, and often the product's resale value.
Booked revenue vs realised revenue
The fix is to run two revenue lines. Booked revenue is every non-cancelled order at face value — the number ad platforms and most dashboards show. Realised revenue counts prepaid orders in full, but COD and partially-paid orders only once they are delivered. The gap between the two lines is your money at risk in transit.
Every downstream metric should declare which basis it uses. ROAS on booked revenue flatters you during a COD-heavy scaling push and punishes you two weeks later when RTOs land. CAC against realised customers is meaningfully higher than CAC against booked orders. Profit is only real on the realised line.
Building the COD-aware P&L
A practical daily P&L for an Indian D2C brand has five lines: booked revenue, realised revenue, ad spend (blended across Meta and Google), COGS counted on realised orders only, and shipping including the RTO legs. Net P&L = realised revenue − ad spend − realised COGS − shipping.
Watch two ratios weekly: delivery rate on COD orders (delivered ÷ shipped) and the booked-to-realised gap. A widening gap with steady ad spend means your 'growth' is increasingly provisional — usually a signal that a new audience or geography converts on COD but does not accept delivery.
- Booked revenue — all non-cancelled orders
- Realised revenue — prepaid + delivered COD/partial
- Blended ad spend — Meta + Google, same period
- COGS — on realised orders only (RTO stock comes back)
- Shipping — forward + return legs, COD collection fees
Reducing the RTO drag
Measurement is half the battle; the other half is operational. Proven levers: address validation and pin-code risk scoring at checkout, a WhatsApp or IVR confirmation for high-risk COD orders, partial-payment COD (a small UPI token converts the economics dramatically), and simply suppressing COD for SKUs or regions where the delivered margin is negative.
The brands that win at COD are not the ones that avoid it — they are the ones whose dashboards tell them, per campaign and per region, what a COD order is actually worth after RTO.
Key takeaways
- Booked revenue ≠ money: COD orders are provisional until delivered.
- Run two revenue lines — booked for pace, realised for truth — and label every metric with its basis.
- Count COGS only on realised orders; count shipping including RTO legs.
- Fight RTO operationally: confirmation flows, partial COD, pin-code scoring, selective COD suppression.
See your blended ROAS and real P&L in one place
Modulus AI unifies Meta, Google, Shopify and logistics — COD-aware P&L included. First account free.
Get started free