How shipping costs quietly eat your e-commerce margin (and the threshold maths).
On a €40 average order, every €1 of unrecovered shipping is 2,5 percentage points of EBIT margin. The "free shipping over €50" promise is sometimes the most expensive marketing decision a small store makes. Here's how to model the threshold properly.
Shipping eats e-commerce margin in three ways: paid shipping at less than carrier cost, free shipping above an under-set threshold, and bundled shipping inside the product price that distorts the per-order EBIT view. On a typical €40 AOV store, every €1 of unrecovered shipping is roughly 2,5 points of EBIT margin. Over a year on 3.000 orders, that's €7.500 of EBIT walked out the door in DHL stickers.
The silent leak
Shipping is one of the easiest costs to under-track because it shows up in three different lines on three different reports. The carrier invoice arrives monthly with a single total. The Shopify shipping income shows what you charged customers. The discount code report shows the orders that used free-shipping codes. Nowhere does the system tell you: per order, what did shipping cost us, and what did we recover?
Until you build that view, shipping margin is a vibe. After you build it, you usually find one of three things: a paid-shipping rate that hasn't been updated since the carrier raised prices, a free-shipping threshold set 30% too low, or a "free shipping everywhere" promise that's costing 8-12% of EBIT.
Three ways shipping is absorbed
- Charged below cost. Customer pays €4,90 for shipping. DHL Paket costs €5,40. Loss per order: €0,50. Looks small. On 280 orders/month it's €140 — €1.680/year of EBIT.
- Free above threshold. "Free shipping over €50." Average order on the free-shipping band is €54. Shipping cost on those orders: €5,40. You're absorbing €5,40 on every order in a band that's 36% of your volume.
- Bundled in product price. "Shipping included" pricing. Margin per order looks great in the dashboard because shipping income equals shipping cost, but you've quietly lifted product prices 8-15% and lost price-sensitive customers.
The threshold maths
A free-shipping threshold pays if (and only if) the AOV lift it generates more than covers the shipping cost on the now-larger order. Let's work the maths for a Berlin candle store with these baseline numbers:
| Metric | Value |
|---|---|
| Current AOV | €38 |
| Current EBIT margin | 14% |
| Shipping cost per order (DHL Paket) | €5,40 |
| Net contribution per order | €5,32 |
| Free shipping threshold proposed | €50 |
For the threshold to be profitable, the lift in AOV (from customers adding items to qualify) has to cover the shipping cost on the new order. Roughly:
Required AOV lift = Shipping cost / contribution margin
Required AOV lift = €5,40 / 14% = €38,57
→ AOV needs to rise from €38 to ~€77 to break even
That's a 102% lift — almost never achievable from a threshold offer. The real-world lift on a "free shipping over €50" offer is 8-22% (€41-€46 from a €38 base). So the threshold is structurally unprofitable unless one of three things changes: (a) margin is much higher, (b) shipping cost is much lower, or (c) the threshold is set high enough that the order pays for the subsidy.
The break-even threshold here is around €68. Below that, you lose money on every "free shipping" order. Set up shipping cost as a variable cost in nouz to see the per-order impact in your daily P&L.
Per-band margin analysis
For the same candle store, breaking 90 days of orders into three AOV bands:
| Band | Orders | AOV | EBIT margin |
|---|---|---|---|
| Under €40 | 412 | €32,40 | 9,2% |
| €40-€60 (free-ship band) | 380 | €47,80 | 6,8% |
| Over €60 | 188 | €78,20 | 18,4% |
| All orders | 980 | €48,90 | 10,1% |
The middle band — orders deliberately built to qualify for free shipping — is the lowest-margin band. Customers added one item to clear €50, the store ate €5,40 of shipping, and EBIT margin dropped below the no-shipping-promise tier.
The fix isn't to remove the threshold; it's to raise it. Modelling a threshold at €65 (above the break-even of €68 with some buffer) typically shifts 40-60% of "middle band" orders into the "over €65" tier and lifts blended margin 1,5-2,5 points. The remaining customers either pay for shipping or buy without qualifying — both healthier outcomes than the current state.
Four fixes that actually work
- Raise the free-shipping threshold to the break-even number. Re-run the maths quarterly as carrier rates move.
- Tiered shipping prices. €4,90 for orders under €30, €2,90 for orders €30-€60, free above €60. Captures shipping income on the low-AOV tail.
- Carrier negotiation. If you ship 200+ packets/month, you can usually negotiate 8-15% off list rates. Worth a quarterly call with DHL/DPD/Hermes.
- Drop the cheap shipping option. If your "standard" shipping is €4,90 (a loss) and "express" is €9,90 (profitable), 70% of customers pick standard. Removing standard converts 30% of orders to express and saves the rest from being losers.
I had "free shipping over €40" for two years because it felt like the right marketing promise. When I actually ran the band analysis, the €40-€60 orders were my worst margin band. Raising the threshold to €65 cost me four customers and added €380 a month to EBIT.
For the full deduction ladder e-commerce stores use to find their true margin per order, see the Shopify true-margin calculator. For the customer story on building a profitable Shopify candle business, see Saltire Soap — Edinburgh.
FAQ
Should I ever offer free shipping with no threshold?
Only if your AOV is naturally above your break-even threshold and you have margin to spare (above 25% EBIT). For most owner-operator stores under €500k revenue, it's a margin sink.
What about shipping incentives like "free returns"?
Same maths, second order. A free return costs you the inbound label (€4-€6), the inspection time, and often a markdown on resale. Budget €8-€12 per return and price the product accordingly.
How do I track shipping cost per order automatically?
Two ways: pull the carrier invoice monthly and allocate to orders by weight/zone (manual but accurate), or use a Shopify app that integrates with your carrier (€20-€60/month, less manual work). Either way, the cost needs to live in your daily P&L, not just in the bookkeeping at year-end.
Is "shipping included" pricing ever the right answer?
For low-variance shipping (one zone, one weight band, e.g. a UK-only knitwear store) yes — it simplifies the maths and reads cleaner on product pages. For multi-zone or weight-variable products, no — you end up subsidising the heavy items with the light ones.
What's the average shipping cost as % of net revenue on healthy e-commerce stores?
Across owner-operator stores on nouz, healthy shipping cost runs 7-12% of net revenue. Above 15% suggests under-charging or a carrier renegotiation overdue.