Contribution margin for ecommerce: how to calculate it by SKU

Most ecommerce brands know their gross margin. Far fewer know what a single order of a single product actually leaves behind once it has been picked, shipped, paid for and advertised.

That second number is contribution margin. It is the one that tells you which products and channels fund the business and which ones quietly drain it.

What is contribution margin in ecommerce?

Contribution margin is net revenue minus every variable cost of an order. A variable cost is any cost that rises with each extra order. It excludes fixed costs such as salaries, rent and software, which you pay whether you sell one unit or a thousand.

What is left “contributes” to covering those fixed costs, and then to profit. If contribution is negative, every extra sale makes the business poorer, however good the revenue line looks.

What is the difference between gross margin and contribution margin?

Gross margin subtracts only the cost of the product itself. Contribution margin keeps going and subtracts everything else the order costs to deliver and win.

Gross marginContribution margin
SubtractsCost of goods soldCost of goods, discounts, fulfillment, shipping, payment fees, returns, marketing
AnswersIs the product priced well against what it costs to make?Does each order make money?
Blind spotHeavy, cheap or often-returned products look better than they areNeeds cost data most brands have never split by SKU
Best used forSupplier and pricing negotiationsChoosing what to promote, which channels to grow, what to cut

Many teams split contribution into stages. A common version: one figure after product and fulfillment costs, then a second after marketing. The labels vary. What matters is that everyone in the business uses the same definition.

How do you calculate contribution margin?

The formula is simple:

Contribution margin = net revenue − cost of goods − fulfillment − shipping − payment fees − returns − marketing

Divide by net revenue to get it as a percentage. Net revenue means the price after discounts, not the list price.

Work it out per order first. Then multiply by volume when you want the total.

A worked example with hypothetical numbers

Take a brand that sells two products. Every number below is hypothetical, chosen to show the method.

Product A sells for $40. Product B sells for $18. Both ship in the same size box.

Per orderProduct AProduct B
List price$40.00$18.00
Average discount−$4.00−$1.80
Net revenue$36.00$16.20
Cost of goods−$12.00−$4.00
Gross profit (gross margin)$24.00 (66.7%)$12.20 (75.3%)
Pick and pack−$3.00−$3.00
Shipping−$6.00−$6.00
Payment processing−$1.10−$0.50
Returns allowance−$1.40−$0.30
Contribution before marketing$12.50 (34.7%)$2.40 (14.8%)

On gross margin, Product B looks like the better product. On contribution, it leaves about a fifth of what Product A does per order.

The reason is fixed-size costs. Picking, packing and shipping cost about the same for a cheap item as an expensive one. On a low price, they eat most of the margin.

Now add marketing. If the brand spends a hypothetical $8 of ads to win each order, Product A still contributes $4.50. Product B loses $5.60 on every order. A campaign that “scales” Product B scales the loss.

How do you calculate contribution margin by SKU?

You need each variable cost assigned to a SKU, not spread evenly across the store. A practical order:

  1. Start with net revenue per SKU. Pull units, gross sales and discounts by product from your store’s sales reports.
  2. Add landed cost of goods. Include freight in, duties and packaging, not just the factory price.
  3. Assign fulfillment by order line. Use your 3PL invoice or warehouse rates. Allocate per-order fees across the items in that order.
  4. Assign shipping by weight or box size. Average shipping cost per order is a start. Per SKU is better if your products differ in size.
  5. Apply payment fees as a percentage of net revenue. Use your processor’s actual effective rate from the last few statements.
  6. Use actual return rates per SKU. Include the refund, return shipping and any stock you cannot resell.
  7. Allocate marketing last. Use spend from campaigns that promote the SKU where you can. Spread brand-level spend by revenue share and label it as an estimate.

Do this once in a spreadsheet for your top 20 SKUs. That usually covers most of revenue and shows the pattern quickly.

Why does contribution margin differ by channel?

The same SKU can contribute very differently depending on where it sells. Each channel has its own cost stack.

  • Your own store: you pay fulfillment, shipping, payment fees and the full cost of acquiring the customer.
  • Amazon: referral and fulfillment fees replace some of your own costs, and advertising is often needed to win visibility. Check the current fee schedule for your category rather than assuming.
  • Wholesale and retail: lower price per unit, but often no per-order shipping or ad cost. Watch for chargebacks, promotional allowances and payment terms.

Calculate contribution for each SKU in each channel. A product that loses money on your store may be healthy on a marketplace, or the reverse. We look at giving each channel a clear job in should your brand sell on Amazon if you already have a Shopify store.

What are the most common mistakes?

  • Using list price instead of net revenue. Discount codes and bundles can take a large slice off the price. Leaving them out flatters every SKU.
  • Treating shipping as a store-wide average. It hides the products that are expensive to ship.
  • Ignoring returns. A product with a high return rate can look strong on the day of sale and weak a month later.
  • Leaving out marketing. Contribution before marketing is useful, but decisions about growth need the figure after it.
  • Mixing fixed and variable costs. Software subscriptions and salaries do not belong in the per-order figure. They belong in the break-even calculation below it.
  • Calculating it once. Costs change with carrier rates, supplier prices and promotions. Refresh it at least quarterly.

What do you do with the numbers?

Sort your SKUs by contribution per order and by total contribution. Most brands find three groups:

  • Funders: strong contribution and real volume. Promote them, protect their stock and their price.
  • Fixable: thin contribution with a clear cause, such as shipping cost or heavy discounting. Raise the price, bundle them, set a free-shipping threshold above them, or change the packaging.
  • Drains: negative after marketing with no realistic fix. Stop advertising them first. Then decide whether they earn a place as an add-on or should go.

Contribution margin is the base of the unit economics work we cover in this hub. If you want help building the SKU and channel model for your brand, that is part of the unit economics work we run.

Frequently asked questions

Is contribution margin the same as gross margin?

No. Gross margin subtracts only the cost of goods. Contribution margin also subtracts discounts, fulfillment, shipping, payment fees, returns and usually marketing, so it is always lower.

What is a good contribution margin for ecommerce?

There is no universal number. It depends on your fixed costs and growth plans. The useful test is whether total contribution covers your fixed costs and leaves the profit you need.

Should marketing be included in contribution margin?

Calculate it both ways. Contribution before marketing tells you how much you can afford to spend to win an order. Contribution after marketing tells you whether the order you actually won made money.

How often should we recalculate contribution margin by SKU?

At least quarterly, and whenever a major cost changes, such as carrier rates, supplier pricing or a new 3PL. Recheck after big promotions too, since discounts change net revenue.

Sound familiar?

Show us the business. We’ll show you what to fix first.

Start with the free needs assessment. In under a minute you will know where the biggest leak is and what it is worth to stop it.

Or read how an engagement works and who runs it.

Free Needs Assessment Let’s talk