Contribution Margin vs Gross Margin
Gross margin subtracts only what the product cost. Contribution margin also subtracts the variable costs of serving the order — shipping label, payment fees, packaging, fulfilment. The gap between them is typically fifteen to twenty points, and bidding for customers against gross margin overpays by exactly that amount.
Written by Atul Tirkey · Co-founder, NetNet
Updated September 6, 2026 · 4 min read
Gross margin is the number every store knows. Contribution margin is the number that decides what it can afford to do. They are separated by one category of cost, and that category is usually the difference between growth working and growth being expensive.
What separates them
Gross margin stops after the cost of the product. Contribution margin continues through everything else that varies with the order:
- Shipping label — what the carrier actually charged, including surcharges.
- Payment and gateway fees — percentage, fixed component, and the tax on the fee where it applies.
- Packaging — box, filler, tape, insert.
- Pick and pack — the 3PL charge, or a fair estimate of in-house handling.
- Per-order platform or transaction fees.
The test for anything else is simple: would that money have been spent if the order had not been placed? If no, it belongs above the contribution margin line.
Why the gap is not a constant
Most stores that calculate the gap once treat it as a fixed adjustment — “we lose about fifteen points to fulfilment” — and then apply it everywhere.
It does not work that way, because the costs in the gap vary per order while gross margin usually does not.
A light order to a metro address might lose eight points. The same value in a heavy parcel to a remote postcode might lose thirty. An order that crossed a free-shipping threshold loses more than one that paid for delivery. A cash-on-delivery order loses more than a card payment.
So the gap is a distribution, not a number, and its shape is where the useful findings live. Two orders at identical gross margin can sit either side of break-even once their real fulfilment costs are attached — which is invisible in any store-level average.
The acquisition consequence
This is the decision the distinction exists for.
Contribution margin per order is the ceiling on what a customer can cost. Spend less and the order contributes toward fixed costs. Spend more and it takes from them.
Bid against gross margin and you overpay by the size of the gap on every single customer. In the example above that is $13.92 per order — which sounds small until it is multiplied by a thousand orders a month and compared against a net profit line of a few thousand dollars.
The error is also self-concealing. Revenue rises, order count rises, and the ad account reports a healthy return, because the platform has no idea what fulfilment cost. Nothing in the marketing stack contains the information that would reveal the mistake.
Which margin belongs in which conversation
Gross margin belongs in supplier negotiations, pricing reviews, and any discussion about what to stock. It answers whether the product itself is viable.
Contribution margin belongs in every conversation about spending money to get orders: acquisition budgets, promotion depth, free-shipping thresholds, marketplace commissions, wholesale terms.
The tell that the wrong one is in use: someone justifies a decision by saying “we make sixty percent on that”. Sixty percent of what, after what, is the question — and if the answer is gross margin while the decision is about acquisition, the number is fifteen to twenty points too generous.
Calculating it without perfect data
You do not need carrier invoices matched to orders to start. A reasonable first pass takes an afternoon.
Take a month of orders. For shipping, apply an average label cost per weight band from your carrier invoices. For payment fees, apply your actual formula — percentage plus fixed, per order, not a blended monthly rate. For packaging, a per-parcel constant. Subtract all of it from gross profit.
The result will not be exact and it does not need to be. It will be within a couple of points, which is enough to know whether your acquisition ceiling is $45 or $59 — and that is the decision the number exists to inform.
Refine it afterwards by matching real carrier invoices back to orders, which is where the variation between orders becomes visible and the second round of findings appears.
Three things that break the calculation
Before trusting either margin, check for the failures that make both wrong in the same direction.
Uncosted variants. A product with no cost recorded is counted as pure margin, so it inflates gross margin and contribution margin together. A handful across a catalogue can move a store-level figure by several points, and nothing flags it — the order simply reports as unusually profitable.
Bundles that do not explode into components. The bundle SKU carries no cost of its own while its components carry theirs. Unless the bundle is broken into parts at the point of costing, every bundle sale reports at one hundred percent margin. Since bundles are usually the most heavily promoted items in a catalogue, this error concentrates exactly where volume is highest.
Shipping charged counted as revenue with the label forgotten. This flatters twice: revenue rises and a real cost never appears. Netting shipping charged against shipping paid into one delivery line avoids it entirely and answers a more useful question anyway — whether delivery made or lost money.
Watching the rate, not the total
Contribution margin in currency rises with volume and is largely uninformative. The percentage of net sales is the diagnostic.
A falling rate while revenue grows is the signature of growth bought with margin — a promotion running long, a free-shipping threshold set too low, a mix shifting toward heavier or cheaper products. None of those appear in a revenue chart, all of them appear immediately in the rate, and every one of them lowers the acquisition ceiling while the ad account carries on bidding to the old one.
The same order, two margins
A single $92 order, first measured at gross margin and then carried through the costs of actually delivering it.
- Net order value
- $92.00
- Contribution margin
- $45.08
- Share kept
- 49.0%
| Line | Relative size | Amount |
|---|---|---|
| Net order value | $92.00 | |
| Cost of goods sold | $33.00 | |
| Gross profit 64% gross margin | $59.00 | |
| Shipping label | $8.60 | |
| Payment fee | $2.97 | |
| Packaging and pick-and-pack | $2.35 | |
| Contribution margin 49% — fifteen points lower | $45.08 |
Fifteen points separate the two margins on this order, or $13.92 in cash. A store bidding to a 64% margin believes it can spend $59 acquiring the customer. It can actually spend $45.08 before the order stops paying for itself, and the difference is the whole gap between profitable and not.
Where the numbers come from
Every figure above traces to a specific field in a specific system. These are the ones that matter, and where each one goes wrong.
| Figure | Source | Where it breaks |
|---|---|---|
| Cost of goods sold | Landed cost per variant sold in the order | Bundles need component costs or the parent records nothing at all. |
| Variable order costs | Carrier invoices, gateway payouts, packaging cost per parcel | These vary per order, so a single blended rate misprices both ends of the range. |
What this does not tell you
- The gap between the two margins is not a constant. It widens on heavy or remote orders and narrows on light metro ones, so any single figure describes an average rather than a rule.
- Contribution margin still ignores fixed costs, so a store can have excellent contribution margin and lose money overall if there are not enough orders to carry the overhead.
Frequently asked questions
What is the difference between gross margin and contribution margin?
Gross margin deducts the cost of the product only. Contribution margin also deducts every cost that scales with the order — shipping, payment fees, packaging, fulfilment. Gross margin describes your pricing; contribution margin describes whether fulfilling the sale was worth doing.
Which margin should I use to set my acquisition budget?
Contribution margin, always. It is the money one additional order actually adds, so it is the ceiling on what that order can cost to acquire. Gross margin overstates that ceiling by the entire cost of fulfilment.
How big is the gap usually?
For most DTC stores, fifteen to twenty points, though it depends heavily on parcel weight, delivery pricing and payment mix. The reliable way to know is to calculate both on a sample of your own orders rather than assuming a typical figure.
Does advertising belong in contribution margin?
Usually not. Advertising does not scale cleanly per order, and excluding it leaves a clean ceiling to compare acquisition cost against. Keep it immediately below the line, then read the two against each other.
Keep reading — Profit fundamentals
Shopify contribution margin
The full calculation, per order.
Gross profit vs net profit
The two layers either side of it.