Revenue tells you how much the business sold. Contribution margin tells you how much of it you kept. For a D2C brand it is the most useful number in the P&L, because it answers the question every growth decision depends on: does one more order make us money, and how much?
This guide walks through it the way I would with a finance team: three layers, every cost in the right place, and a worked example you can copy.
Start from net revenue, not order value
Shopify’s sales number includes things that are not yours. In India, prices usually include 18% GST, which you collect for the government. Some orders will be refunded. Some cash-on-delivery orders will never be accepted.
So the first step is to get to net revenue:
- Start with order value
- Take out discounts already applied
- Take out refunds and returns
- Take out tax collected
On a typical Indian D2C store, net revenue is often 15 to 20% below the headline sales figure. Any margin calculated on order value is overstated by that much before you have counted a single cost.
The three layers
CM1: after product cost. Net revenue minus the cost of goods: what you paid to make or buy the units you sold, including inbound freight and duties. This is close to gross margin.
CM2: after getting the order to the customer. CM1 minus shipping, packaging, payment gateway fees, and the cost of returns and RTO. This is where Indian brands lose the most margin without noticing, because the costs are spread across courier invoices, gateway settlements and returned stock.
CM3: after marketing. CM2 minus ad spend and other variable marketing such as influencer fees and affiliate commissions. This is what each period’s orders leave to pay salaries, rent and everything else. I call it profit after marketing, because that is what it is.
A worked example
Here is one month for a skincare brand selling ₹12 lakh of orders.
| Line | Amount |
|---|---|
| Order value (incl. GST) | ₹12,00,000 |
| Less GST | −₹1,83,000 |
| Less refunds | −₹38,000 |
| Net revenue | ₹9,79,000 |
| Less product cost | −₹2,94,000 |
| CM1 | ₹6,85,000 (70%) |
| Less shipping and packaging | −₹96,000 |
| Less payment fees | −₹14,000 |
| Less RTO cost | −₹52,000 |
| CM2 | ₹5,23,000 (53%) |
| Less ad spend | −₹3,70,000 |
| CM3 | ₹1,53,000 (16%) |
Notice how far the percentage falls between layers: 70% at CM1, 53% at CM2, 16% at CM3. A founder who only watches gross margin thinks the brand keeps 70 paise of every rupee. It keeps 16.
The costs most brands miss
RTO. A cash-on-delivery order that comes back costs forward freight, return freight, packaging and often the product. It belongs in CM2, measured on orders that have finished, because recent orders always look better than they will end up. The RTO cost calculator puts a monthly number on it.
GST on payment fees. Gateways charge GST on their fee. A 2% fee is really 2.36%.
Weight discrepancies. Courier invoices often carry extra charges weeks later when measured weight differs from declared weight. They are real shipping cost.
Discounts in disguise. Free gifts, free shipping thresholds and bundle pricing are discounts. Count them.
Stale product costs. If cost per item in Shopify is a year old, every margin built on it is wrong in a consistent, invisible way.
Turning it into a daily number
A monthly CM3 from the accountant arrives three weeks too late to steer by. The goal is a daily view, accurate enough to act on:
- Product cost from your store, product by product, kept up to date.
- Shipping from courier invoices where you have them, and a per-order estimate where you do not, labelled as an estimate.
- Payment fees from gateway settlement reports, not a flat percentage.
- RTO measured on settled orders, by courier and pincode.
- Ad spend from the platforms, matched to the same days as the orders.
Do this in a spreadsheet and it takes a day a month. That is fine for a board pack and useless for deciding whether to pause a campaign on Tuesday.
What to do with it
- Set break-even ROAS from CM2. The ROAS at which ad spend uses up all of CM2 is your break-even line. Campaigns below it lose money on every order. The break-even ROAS calculator does this from your numbers.
- Price COD properly. Compare CM2 per order for prepaid and COD. The gap is how much you can afford to offer customers to pay online.
- Rank products by contribution, not revenue. Your best seller may be your worst earner once discounts, weight and returns are counted.
Do it with Gran
The contribution margin P&L builder builds this waterfall from numbers you type in, free and without an account. Gran Profit builds it every day from Shopify, your ad accounts, courier invoices and your payment gateway (Razorpay, Cashfree, PayU, PhonePe PG or Easebuzz), and labels every line as actual or estimated so nobody mistakes an assumption for a fact.

Shiva Sharma is a global growth marketing leader and the author of The Movement and Nobody Is Thinking About You. More about Shiva