Skip to content
    A young professional in a blazer at her desk in an open-plan office
    Blogs

    Why Your 45% Margin D2C Product Loses Money on COD

    September 18, 2026 · Article · 7 min read

    Sriram ChidambaramFounder & Managing Partner

    Your blended margin says the product is fine. One channel is quietly paying for another.

    Summary

    • A product showing 45% gross margin can be comfortably profitable on prepaid orders from your own site and contribution-negative on cash on delivery in the same week.
    • The blended number on your dashboard is the average of three very different channel outcomes, which means it describes none of them.
    • Price the channel rather than the product, and compute contribution margin separately for your own site prepaid, your own site COD, and each marketplace.

    Every D2C founder can tell you their gross margin. It's usually a number they're proud of: 45%, 55%, sometimes better.

    Ask the same founder what that product earns on a cash-on-delivery order that gets refused at the door, and the conversation changes. Ask what it earns on a marketplace after commission, fulfilment fees and the advertising you had to buy to be visible there, and it changes again.

    Same product. Same price on the label. Three completely different outcomes. And the number on your dashboard is the average of all of them, which means it describes none of them. This is one of the places pricing quietly decides whether a brand works.

    Run the numbers on one product

    Take a product priced at ₹999.

    Your own website, paid in advance

    Own website, prepaid

    Item
    Selling price999
    Product cost(450)
    Shipping out(70)
    Packaging(25)
    Payment gateway (2%)(20)
    Discount coupon (10%)(100)
    Left after getting it to the customer334
    Source: Illustrative unit economics for a ₹999 product, as set out in this article

    That's healthy. This is the channel your 45% gross margin was describing.

    The same product, cash on delivery, in a category running 25% refusal

    Three out of four orders arrive and get paid for. One in four comes back.

    On the successful ones you also carry COD handling and remittance charges. On the refused one you've paid shipping out, shipping back, packaging and handling, and you've received nothing. Some of those returned units can't be sold again.

    Spread the cost of the refused order across the three that landed, and the ₹334 becomes something much closer to zero. In a higher-refusal category, or a bulkier product, it goes below.

    And on a marketplace

    Marketplace

    Item
    Selling price999
    Product cost(450)
    Commission (typically 15 to 25% depending on category)(180)
    Fulfilment and storage fees(90)
    Advertising to stay visible(80)
    Returns at the platform's rate(60)
    Left139
    Source: Illustrative unit economics for the same ₹999 product, as set out in this article

    Three channels. ₹334, roughly nothing, and ₹139.

    Your blended report shows a comfortable average and tells you the product works.

    These are illustrative figures. Your commission rates, refusal rates and shipping costs will differ. The point is the method, and the method matters more than my numbers.

    What has to be in the calculation

    Most D2C founders stop at product cost. The things that belong in your floor and usually aren't there:

    • Shipping both ways, not just out
    • Return to origin: the full cost of a refused order, spread across the orders that did land
    • Packaging, which is rarely trivial in this category
    • Payment gateway on prepaid, COD handling and remittance on cash orders
    • Marketplace commission, fulfilment fees and storage
    • Advertising you have to buy to be visible on a marketplace, which is a cost of that channel and not a marketing expense
    • Coupons, sale discounts and platform-funded offers, added up properly rather than one at a time
    • Unsellable returns: the share of returned stock you can't put back
    • Warehousing and inventory holding

    Once all of that is in, you have a real floor per channel. Not before.

    Why this is a pricing problem, not just an operations one

    It would be easy to read all this as a logistics issue. It isn't, for three reasons.

    Your price has to cover your worst channel or you have to stop selling there. Those are the only two options. Pricing for the blended average means every prepaid customer is subsidising every refused COD order, which is a choice you should make deliberately rather than by accident.

    Your discounting is probably ungoverned. First-order discounts, sale events, coupon codes, influencer codes, platform-funded offers. Each one gets decided separately by someone different. Add them all up against the margin left in your worst channel and the number is usually far bigger than anyone expected. Discount rules exist to stop exactly this.

    Free shipping thresholds are a pricing decision. Free delivery above ₹799 is a discount of whatever shipping costs, applied to every order just over the line. Most brands set that threshold by looking at competitors rather than at their own margin.

    Four things you can actually do

    Price the channel, not the product. Different prices on different channels is normal and legitimate. Marketplaces have higher costs, so a different pack size, a bundle, or a variant priced for that channel is reasonable, and it also stops customers comparing your website price directly against your marketplace price.

    Make prepaid genuinely worth choosing. A small discount for paying in advance is almost always cheaper than the cost of the COD orders it converts. If 25% of your COD orders come back, converting even a portion of COD to prepaid is worth more than most marketing spend. Most brands offer either nothing or something too small to change behaviour.

    Use your free shipping threshold properly. Set it above your average order value, based on your own margin rather than on what competitors do. It raises order value and pays for the shipping at the same time.

    Fix return-to-origin where it's highest, not on average. Refusal rates vary enormously by product, by city, and by how the order was placed. Find the worst pockets and act there: address verification, a confirmation call, partial advance, or simply stopping COD for that product or region. Acting on the average means acting nowhere.

    The number to run your business on

    , by channel, never blended.

    Revenue, minus product cost, minus everything it takes to get the product to that customer through that channel, minus what you spent acquiring them.

    Do that for your own website prepaid, your own website COD, and each marketplace separately. Then look at where your spending is going. The margin layers for a D2C business are the same idea applied to the whole revenue engine.

    In most D2C brands we see, one channel is comfortably profitable, one is marginal, and one is losing money, and the marketing budget is heaviest on whichever one is growing fastest, which is frequently the loss-making one.

    Where to start

    Pick your best-selling product. Build the margin calculation for it, separately, for every channel you sell it through.

    One product, one afternoon. It does depend on clean numbers underneath, which is its own piece of work.

    It usually explains something that had been confusing for a year: why revenue keeps growing and the bank balance doesn't.

    Our Pricing Maturity Assessment gives you a short read across the layers of pricing and the cost floor underneath, so you can see whether channel margin is your biggest gap or whether something upstream is costing you more.

    Frequently asked questions

    How do I calculate true margin on a D2C product?

    Start with the selling price, subtract product cost, then subtract everything it takes to deliver to that specific customer through that specific channel: shipping both ways, packaging, payment or COD handling, marketplace commission and fees, returns, and the share of return-to-origin cost that order carries. Then subtract acquisition cost. Do it per channel, never blended.

    Why does cash on delivery cost so much?

    Because you pay for the refused orders as well as the successful ones. A refused COD order costs you shipping out, shipping back, packaging and handling, and returns a unit you may not be able to resell. In a category running 25% refusal, the successful orders carry all of that cost.

    Should I charge different prices on different channels?

    Usually yes, because your costs genuinely differ by channel. The practical approach is different pack sizes, bundles or variants per channel rather than the identical item at two visible prices. That way the difference is defensible and customers aren't comparing the same item across two places.

    How useful was this article?

    One tap. It tells us what to write more of.

    Not usefulVery useful

    About the author

    Sriram Chidambaram

    Founder & Managing Partner

    Everything Sriram has writtenLinkedIn

    The next one

    Get what we publish next, by email.

    Working notes on raising, borrowing, protecting, growing and structuring capital in India. One email a week at most, and you can leave any time.

    We use your address only to send this. See our privacy policy.

    We store your address to send you these emails and nothing else. See our privacy policy.

    Related reading