Your ecommerce contribution margin is probably wrong by 8 to 18 percentage points. Not because your math is sloppy. Because you stopped subtracting too early.
Most founders compute contribution margin as revenue minus COGS, call it good, and then make pricing, ad-spend, and channel decisions off that number. The problem: revenue minus COGS is gross margin. Real contribution margin lives below it, after four variable cost categories almost everyone skips. Get this wrong and you scale the products that lose money fastest.
Contribution margin is not gross margin
These two numbers get used interchangeably. They are not the same.
Gross margin is revenue minus the cost of goods sold — the unit cost of the product itself. It's a clean, useful number, and Shopify's gross margin guide walks the calculation well. But gross margin answers "what does the product cost to make?" It does not answer "what's left after I actually sell and ship one?"
Contribution margin answers the second question. It subtracts every variable cost tied to a sale — not just product cost. The gap between the two is where founders quietly lose money on orders they think are profitable.
Here's the structure, top to bottom:
- Revenue — what the customer paid
- − COGS → Gross margin
- − variable selling costs → Contribution margin
- − fixed overhead → Net profit
You can review COGS itself in our cost of goods sold glossary entry, and the full top-to-bottom view in Ecommerce Margins, Decoded. The four costs that turn gross margin into true contribution margin are below.
The four costs everyone forgets
A $60 product with a $24 COGS shows a 60% gross margin. Founders see 60% and feel safe. Then these four lines hit.
1. Payment processing. Stripe, Shopify Payments, PayPal — roughly 2.9% plus 30 cents per order. On a $60 order, that's about $2.04, or 3.4% of revenue. Small per order. Real at volume.
2. Shipping and fulfillment. Pick, pack, postage, the box. Even with "free shipping," you absorb the cost — it's still variable. Say $7.50 on that order. That's 12.5% of revenue, gone, that gross margin never saw.
3. Marketplace and channel fees. Selling on Amazon or a marketplace? Referral fees run 8% to 15%. That's another 8 to 15 points off the same order, depending on category. We break the structure down in marketplace fees.
4. Returns and chargebacks. If 10% of orders come back and you eat return shipping plus restocking, the cost gets spread across every order sold. Skip it and your margin looks better than the bank balance. See returns analysis for how to allocate it.
Add those up on the $60 order: COGS $24, processing $2.04, shipping $7.50, marketplace fee $6, returns allocation $3. Total variable cost: $42.54. Contribution margin: $17.46, or 29% — not the 60% gross margin you started with. That's a 31-point swing on a clean-looking product.
Why this breaks your ad-spend decisions
This is where the wrong number costs you cash, not just clarity.
ROAS, AOV, and LTV get all the founder attention — and BigCommerce's ecommerce accounting guide is right that those metrics matter. But they tell you about demand, not profit. If you set a target ROAS off gross margin, you'll happily acquire customers at a loss.
Run the math. At 60% gross margin, a 2.0x ROAS feels profitable — you spend $30 to make $60, keep $30 of "margin," net $0 after ad spend, roughly. But your true contribution per order is $17.46. Spend $30 to acquire that sale and you're down $12.54 every single time. Scale it to 1,000 orders a month and you've engineered a $12,540 monthly hole while your dashboard glows green.
Your real ad-spend ceiling is contribution margin, not gross margin. The number that should anchor your max CAC is the $17.46 — not the $36. Shopify's profit margin breakdown makes the same point: a healthy-looking top line hides thin economics underneath.
How to fix it without a finance hire
You don't need a controller to get this right. You need to subtract in the correct order and do it per product, not per business.
Start with one SKU. Pull its real COGS. Then layer the four variable costs as a percentage of that product's selling price. Our margin calculator handles the arithmetic — enter price, product cost, and the four variable lines, and it returns true contribution margin per unit.
Three rules to keep it honest:
- Allocate returns and chargebacks across all units, not just the returned ones. A 10% return rate is a cost on every sale.
- Treat "free shipping" as a cost you absorb, never a marketing freebie. It's variable and it's real.
- Run it per channel. A SKU at 29% contribution on your own site might be 18% on a marketplace after referral fees. Same product, different decision.
For the bookkeeping foundation underneath this, Shopify's ecommerce accounting guide and its net profit margin walkthrough are solid starting points. The full method lives in our true margins hub and the broader ecommerce finance pillar, with the cost-side detail in COGS tracking and inventory costing.
Where CentSight fits
The hard part isn't the formula. It's keeping it current as processing rates, shipping costs, and return rates drift every month.
CentSight is the intelligence layer on top of QuickBooks and your bank. It reads your live ledger — synced on demand, as often as every fifteen minutes — so your contribution margin reflects this week's costs, not last quarter's spreadsheet. Ask it which SKUs are profitable after all variable costs, and you get a plain-English answer in seconds. A fractional CFO would charge $8K to $15K a month to assemble the same view. CentSight is $95/mo.
For the relationship between this number and the rest of your P&L, see gross margin and net profit margin in the glossary, and Shopify's retail financial management overview.
Takeaway: Gross margin tells you what a product costs to make. Contribution margin tells you what's left after you sell it. Subtract payment processing, shipping, marketplace fees, and returns — then make your pricing and ad-spend calls off that number. It's 8 to 18 points lower than you think, and it's the only one your bank balance agrees with.


