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.

LineAmount
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:

  1. Product cost from your store, product by product, kept up to date.
  2. Shipping from courier invoices where you have them, and a per-order estimate where you do not, labelled as an estimate.
  3. Payment fees from gateway settlement reports, not a flat percentage.
  4. RTO measured on settled orders, by courier and pincode.
  5. 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

How to set break-even ROAS for every campaign A step-by-step method for working out the ROAS each campaign needs to make money, from your own margins, and using it to decide what to fix, cut and scale. How to compare couriers on your own data Rate cards tell you what a courier costs. Your orders tell you what it really costs. A method for ranking couriers on delivered rate, COD RTO, speed and cost per delivered order.