Contribution margin vs gross margin
Gross margin = revenue − COGS. Contribution margin = revenue − all variable costs (COGS + shipping + payment fees + variable labor). The difference matters because shipping and processing fees behave like COGS economically — they scale with volume — but accountants typically book them as operating expenses, leaving gross margin overstated.
Operators care about contribution margin because it's the number that tells whether the next sale makes money. Finance teams use gross margin because it's the GAAP-blessed disclosure. Both are right for their job; use contribution margin for decisions.
What to include in variable cost
- COGS — product cost, packaging, direct manufacturing.
- Shipping + fulfilment — inbound to warehouse + outbound to customer.
- Payment processing — Stripe, Shopify Payments, Klarna, BNPL.
- Returns + refunds — pro-rate the expected loss across units sold.
- Variable labor — pick/pack/ship hourly labor. Salaried fulfilment leads belong in fixed costs.
What "good" looks like
- SaaS: 70%+ contribution margin is the bar. Below 60% is usually a hosting or support-margin problem.
- D2C / ecommerce: 30–50% contribution after COGS + shipping + fees. Below 25% the business needs scale to survive.
- Services / agencies: 50–65% on billable hours. Variable labor is the bulk of the cost.
Common mistakes
Forgetting returns. If returns are 12% and you only count COGS on sold units, the contribution per sold unit looks 12% higher than the contribution per shipped unit. Always allocate.
Allocating wrong. Shipping cost should be allocated to the SKUs that drive weight, not flat-averaged. Most brands over-credit their high-margin SKUs and under-credit their bulky ones.