All posts Pricing & margin · 24 Mar 2026 · 9 min read

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.

Ibrahim Ölmez Founder, nouz · serial entrepreneur

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

  1. 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.
  2. 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.
  3. 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:

MetricValue
Current AOV€38
Current EBIT margin14%
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.

Run the per-band analysis before changing the threshold. Split your last 90 days of orders into three bands: below threshold, on threshold (within ±€8), above threshold. Compare EBIT margin per band. If "on threshold" margin is more than 5 points below "above threshold", the threshold is too low.

Per-band margin analysis

For the same candle store, breaking 90 days of orders into three AOV bands:

BandOrdersAOVEBIT margin
Under €40412€32,409,2%
€40-€60 (free-ship band)380€47,806,8%
Over €60188€78,2018,4%
All orders980€48,9010,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

  1. Raise the free-shipping threshold to the break-even number. Re-run the maths quarterly as carrier rates move.
  2. 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.
  3. 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.
  4. 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.