Commerce operations
Contribution margin
Contribution margin is revenue minus all variable costs of fulfilling an order — goods, processing, shipping, packaging and returns — leaving what covers fixed costs.
It is the correct denominator for acquisition decisions. A brand comparing customer acquisition cost against revenue rather than contribution margin will systematically overspend, and the error grows with the discount rate.
The commonly omitted lines are returns and payment processing. Both are genuinely variable, both scale with volume, and both are frequently accounted for centrally where they disappear from per-order economics.
Returns are the one that does the most damage when omitted, because the cost is not the refunded revenue — that nets out — but everything around it: outbound shipping already spent, return shipping, inspection, repackaging and the units that come back unsellable. On an apparel line running 30% returns, an order economics model built on gross sales can show a healthy margin on a category that loses money on every cohort.
The formula, and a worked order
Contribution margin = net revenue minus every variable cost attached to the order. Net revenue means after discounts and after refunds, not the gross basket value. Variable cost means every cost that would not exist if the order had not happened.
The identity is trivial. What makes it useful is that it is calculated per order rather than per month, because a monthly gross-margin percentage hides which orders are carrying the business and which are being subsidised by the rest.
Take an example order: a $105 basket with a 20% first-order discount, free shipping, landed goods cost of $23.50, a 3PL fulfilment charge of $3.05, $8.40 of postage, and card processing at 2.9% plus $0.30. The arithmetic runs as follows.
| Line | Amount | Note |
|---|---|---|
| Basket before discount | $105.00 | What the customer put in the cart |
| First-order discount (20%) | -$21.00 | Comes straight out of contribution, not out of cost |
| Net revenue | $84.00 | The correct top line |
| Shipping charged to customer | $0.00 | Free-shipping offer |
| Landed cost of goods | -$23.50 | Unit cost plus inbound freight and duty |
| Fulfilment (pick, pack, materials) | -$3.05 | 3PL charge per order |
| Outbound postage | -$8.40 | Carrier rate for the destination zone |
| Payment processing (2.9% + $0.30) | -$2.74 | $84.00 x 0.029 = $2.44, plus $0.30 |
| Contribution before returns | $46.31 | 55.1% of net revenue |
Returns move the number more than anything else
The $46.31 above is the figure most brands quote, and it is only correct for orders that are kept. A returned order does not contribute zero — it contributes a negative number, because the money spent getting the parcel out never comes back.
Continuing the example, one return costs the $8.40 of outbound postage already spent, a $7.00 return label, $2.50 of inspection and restocking, and the $0.30 fixed processing fee that many processors retain on a refund. If 15% of returned units come back unsellable, the expected write-off is 0.15 x $23.50 = $3.53. Total cost of one return: $21.73.
At a 25% return rate the expected contribution per order shipped becomes (0.75 x $46.31) - (0.25 x $21.73) = $34.73 - $5.43 = $29.30. That is 36.7% below the headline figure, and it is the number that should be compared against acquisition cost. A brand approving a $40 CAC against a $46 margin is buying customers at a loss it will not see for a quarter.
What counts as variable, and what only looks variable
The test is simple: if the cost goes to zero when the order does not happen, it is variable. Applying that test consistently is what separates a contribution model from a rearranged P&L.
The grey zone is real, and the honest answer is to classify it deliberately and then leave it alone, because reclassifying mid-year makes every trend meaningless.
- Variable without argument: landed goods cost, pick and pack, outbound postage, packaging consumed by the order, payment processing, per-order app or platform fees, returns.
- Fixed despite appearances: a 3PL account minimum, warehouse rent, salaried operations staff, software seats. These are covered by contribution, not deducted from it.
- Semi-variable, and the ones to decide about explicitly: storage (it scales with inventory, not with orders), customer service (variable at volume, staffed as a step function), and inbound receiving fees, which are per unit received rather than per unit sold.
- Not variable at all, and frequently miscoded as such: advertising. Acquisition cost is compared against contribution margin; putting it inside contribution margin makes the comparison circular.
Why this and not revenue or AOV
Revenue and AOV both treat a discounted order and a full-price order as interchangeable, and they are not. A discount is not a cost reduction — it is a direct transfer out of contribution, which is the only pool that pays for anything.
Using the example order again: without the discount the same basket bills $105.00, processing rises to $3.35, and contribution is $105.00 - $23.50 - $3.05 - $8.40 - $3.35 = $66.70. The 20% discount takes that to $46.31 — a 30.6% cut to the number that matters, from a 20% cut to the price. To hold total contribution flat you would need 1 / (1 - 0.306) = 1.44 times the order volume, a 44% lift, which is far more than most promotions are justified with.
The same asymmetry is why contribution margin is the right ranking key when something is scarce. When inventory is the constraint, rank SKUs by contribution per unit of stock; when ad budget is the constraint, rank campaigns by contribution per dollar spent, not by ROAS. Ranking by revenue in either case optimises for the wrong quantity with complete confidence.
Frequently asked questions
- What is contribution margin?
- Contribution margin is what is left from an order after every variable cost attached to that order: goods, fulfilment, postage, packaging, payment processing and returns. It is not profit, because fixed costs such as rent, salaries and software have not been deducted. It is the pool of money each order contributes towards those fixed costs and towards acquiring the next customer.
- What is the contribution margin formula?
- Contribution margin = net revenue - variable costs. Net revenue is the basket after discounts and refunds, not the gross basket. Variable costs are every cost that would not have been incurred if the order had not happened. Expressed as a percentage, contribution margin ratio = contribution margin divided by net revenue.
- What is the difference between gross margin and contribution margin?
- Gross margin subtracts only the cost of goods sold. Contribution margin subtracts every variable cost, which for an ecommerce order also means fulfilment, outbound postage, payment processing and returns. Gross margin therefore looks materially healthier than the order actually is, and the gap is widest on low-price, heavy or high-return products.
- Should shipping be included in contribution margin?
- Yes, on both sides. Shipping revenue collected from the customer is added to net revenue and the actual carrier cost is subtracted as a variable cost. Free shipping is not a zero line: it means the revenue side is zero while the cost side is unchanged, which is exactly the effect a contribution model exists to make visible.
- What is a good contribution margin for a DTC brand?
- There is no universal benchmark, and any single number quoted as one ignores category, price point and return rate. The useful test is internal: contribution margin per order multiplied by expected orders per customer has to exceed customer acquisition cost with enough left over to cover fixed costs. If it does not, the business is buying revenue rather than profit.
- Why use contribution margin instead of AOV to judge an order?
- AOV treats a heavily discounted order and a full-price order as identical, because it only sees the total. Contribution margin sees that a discount comes entirely out of the money the order was going to contribute. Two orders with the same AOV can differ by tens of dollars in contribution once discount, weight, destination zone and return probability are counted.