How to calculate ecommerce profitability
From what the customer pays to what you actually keep: every layer in between, in the order it comes off, with a full worked example from a mid-sized store.
From what the customer pays to what you actually keep: every layer in between, in the order it comes off, with a full worked example from a mid-sized store.
Almost every online store knows its revenue. Far fewer know their profit. And very few know their profit per order, which is the number behind every decision that matters: what to price at, how much to bid, whether a product is worth keeping, whether free shipping pays for itself.
The gap between revenue and profit is made of seven layers of cost. They always come in the same order, and when you skip a few the result is not “slightly optimiztic” — it is often the opposite of the truth.
When a customer pays, that money passes through seven stations before it becomes profit:
The first six are variable: they grow as you sell more. The seventh is fixed: it is there whether you sell or not. That distinction is the key to the whole calculation, because only the variable ones come off order by order.
Gross revenue is what the customer pays: product plus shipping plus any extras. Net revenue is that amount without the indirect tax. And the gap is much bigger than intuition suggests.
Note the classic error: at 21%, plenty of people subtract 21% of the final price (21) instead of working out the tax contained in it (17.36). Tax is calculated on the taxable base, not on the final price.
And there is a special case worth knowing: in the United States the displayed price usually does not include sales tax, and on marketplace sales the platform normally collects and remits it. That is why the US market starts with “price does not include tax” and a zero rate.
What the goods cost you landed in your warehouse: purchase price or materials, plus duties and inbound freight if you import. If you make it yourself, include your time — not doing so turns your salary into “profit”.
The carrier cost you absorb (not the one you charge the customer, which is already in revenue), the real packaging cost, and the cost of picking the order, whether that is your time or a 3PL fee.
Almost all of them have two parts, a percentage and a flat amount, and the flat part is what destroys small baskets. 2.9% + 0.30 is an effective 3.4% on an order of 60, but 5.9% on an order of 10. If you sell cheap, the fixed fee is your main enemy.
Marketplaces stack more layers, and they change by country: on Etsy a single order can carry six separate charges, with processing percentages and regulatory fees that vary with where your shop is; on Amazon FBA, the referral fee plus the fulfillment fee plus the selling plan, priced differently in each marketplace. That is exactly why each platform gets its own calculator here.
If the order came from an ad, that ad is a variable cost of the order. The simple, honest-enough way to allocate it: monthly ad spend divided by monthly orders.
The variable cost most people forget, because it is not “losing the sale”: it is losing the sale and paying for the outbound leg that already shipped, the return leg, the ruined packaging, the gateway fee that does not come back, the inspection time and the share of goods that cannot be resold.
Contribution margin is net revenue minus every variable cost. It is what each order “contributes” towards fixed costs and, after that, profit.
Why it is the figure: it sets the ceiling on what you can pay to win a sale. If an order contributes 20.55, paying 25 to win it loses you 4.45 — even though you invoiced 60, and even though your ad platform reports a 2.4x ROAS that looks reasonable.
Fixed costs are not allocated per order in this kind of analysis: they are paid out of the sum of all the month's contribution margins. That is where break-even volume comes from — the order count above which you start making money:
This is why running exactly at break-even ROAS is a trap: you would cover your variable costs and nothing else, so the fixed ones come out of your pocket.
| Item | Per order | Per month |
|---|---|---|
| Gross revenue | 60.00 | 30,000 |
| Tax (21%) | -10.41 | -5,207 |
| Net revenue | 49.59 | 24,793 |
| Product cost | -20.00 | -10,000 |
| Shipping and packaging | -6.00 | -3,000 |
| Gateway fee (2.9% + 0.30) | -2.04 | -1,020 |
| Returns provision | -2.71 | -1,355 |
| Contribution margin | 18.84 | 9,418 |
| Advertising | -12.00 | -6,000 |
| Fixed costs | — | -3,500 |
| Result for the month | — | -82 |
A store invoicing 30,000 a month, with a 38% contribution margin on net revenue, losing 82. Not because the costs are absurd, but because 6,000 of advertising plus 3,500 of fixed costs add up to 9,500 against 9,418 of margin.
And here is the interesting part: its actual ROAS is 30,000 / 6,000 = 5x. A 5x sounds excellent. Its break-even ROAS, though, is 60 / 18.84 = 3.19x, so the advertising is profitable at order level. The problem is not the campaigns: it is that 500 orders do not cover 3,500 of fixed costs at this margin.
Without separating variable from fixed, this store would have cut the advertising — the part that was working — and made the result worse.
“I buy at 20 and sell at 60, so I make 40” ignores tax, shipping, packaging, fees and returns. In the example, that 40 was really 18.84 — less than half.
Spreading rent across the month's orders makes your per-order margin move every time volume moves, and your advertising targets with it.
If your products have very different margins, the average describes none of them. There is almost always one SKU that sells well and loses money.
Free shipping is a perfectly valid marketing decision, but it is a variable cost like any other. At 6 per order it is a third of the margin in the example.
The most expensive mistake because it is invisible: the margin you calculate is the margin of the orders that go well, not the real average.
Run your numbers
With your contribution margin worked out, the break-even ROAS calculator tells you how much you can pay for a sale and for a click.
Calculate my break-even ROASGross margin usually only subtracts the product cost. Contribution margin subtracts every variable cost: product, logistics, fees, advertising and the returns provision. For pricing and bidding decisions, the second one is the useful one.
For per-order profitability, no: it distorts the result whenever volume changes. Fixed costs are compared against the monthly sum of contribution margins, and that comparison gives you break-even volume.
Total monthly spend divided by total monthly orders. To refine by channel, use only that channel's orders — but keep the same method over time so comparisons mean something.
If you can reclaim it, input tax on your purchases is normally recoverable and not a real cost, so your costs should be entered tax-exclusive. It is one reason to run the whole calculation on net amounts. Check with your accountant: this guide is not tax advice.
Yes, and that is exactly what the market selector is for: the tax and the fees change by country, but the structure of the calculation is identical. Run each market with its own settings and compare the resulting margins, not the prices.
Whenever something on the list changes: supplier prices, carrier rates, platform fees, your return rate or your average ad cost. In practice, a quarterly review plus one whenever a platform announces changes.
Four metrics measuring the same thing from different angles, with the formulas, the conversions and the usual mistakes.
Read the guide →The lost sale, reverse logistics, the fees that do not come back and the provision you should be setting aside per order.
Read the guide →The fees Etsy applies to an order, what base each one uses, and how they differ across the eight markets.
Read the guide →Selling plans per marketplace, referral fee, fulfillment fee, storage, inbound shipping and advertising.
Read the guide →Find out how much you can pay for a sale or a click without losing money.
Work out how much returns cut from your monthly profit.
Strip out the fees, the tax, the materials, the shipping and the ads.
Work out your profit per unit after fees, fulfillment and advertising.