The true cost of a 15% discount code (it's not 15%).
A 15% discount code on a product with 40% gross margin doesn't cost you 15% — it costs you 37,5% of your contribution margin. Plus the cannibalisation. Plus the brand re-anchor. Here's the maths every owner-operator should run before pressing send on the next "Save 15%" email.
A 15% discount code looks like it costs 15% of revenue. It doesn't. Because fixed costs and most variable costs don't shrink with the price, the discount comes entirely out of contribution margin. On a product with 40% gross margin, a 15% discount eats 37,5% of the margin. Add cannibalisation (customers who'd have paid full price) and the discount typically costs 50-65% of the contribution it touches. Worth doing — sometimes. Worth doing on a calculator — always.
The 15% illusion
The headline rate is the most misleading number in retail marketing. "Save 15%" reads to customers and operators alike as "the shop is giving up 15% of revenue to make this sale". In reality, the shop is giving up 15% of the price while still paying 100% of the cost — meaning the discount comes entirely out of the thin sliver of margin between price and cost.
A simple way to feel this: if your gross margin is 40% (€60 cost on a €100 product), then a 15% discount drops the selling price to €85. Your cost is still €60. Your gross margin is now €25 — down from €40. You've lost 37,5% of the margin to give up 15% of the price.
The contribution-margin maths
Across different gross-margin levels, the impact of common discount rates:
| Discount | Gross margin 30% | Gross margin 40% | Gross margin 50% | Gross margin 60% |
|---|---|---|---|---|
| 5% off | −16,7% margin | −12,5% margin | −10,0% margin | −8,3% margin |
| 10% off | −33,3% margin | −25,0% margin | −20,0% margin | −16,7% margin |
| 15% off | −50,0% margin | −37,5% margin | −30,0% margin | −25,0% margin |
| 20% off | −66,7% margin | −50,0% margin | −40,0% margin | −33,3% margin |
| 25% off | −83,3% margin | −62,5% margin | −50,0% margin | −41,7% margin |
Read the table this way: a 20% discount on a product carrying 30% gross margin destroys 66,7% of the margin on that sale. To get back to the original margin in absolute euros, you'd need to sell three times as many units. The required uplift in volume to break even on margin is steep — and most discount campaigns don't come close to it.
The break-even volume uplift formula:
Required uplift = Discount / (Gross margin − Discount)
Example: 15% off, 40% margin
Required uplift = 15 / (40 − 15) = 60%
You need 60% more units sold during the promo just to break even on contribution margin. If you sold 100 units/week pre-promo and you sell 130 during the promo, you've made the discount worse for the business — fewer total euros of margin than a quiet week at full price.
Cannibalisation: the second tax
The uplift maths above assume every unit sold during the promo is incremental — a sale that wouldn't have happened without the discount. In reality, a portion of promo sales are cannibalised: customers who'd have paid full price anyway, now paying 15% less.
Typical cannibalisation rates on common promo types:
| Promo type | Cannibalisation rate |
|---|---|
| Site-wide 15% off (email blast) | 60-80% |
| First-time-buyer code | 5-15% |
| Specific-category code (e.g. "knits only") | 40-60% |
| Threshold-triggered (e.g. spend €80) | 30-50% |
| Cart-abandonment code | 20-35% |
A site-wide 15% off code with 70% cannibalisation means: for every 100 units sold at the discount, 70 were customers who'd have paid full price. The lift you actually generated is 30 incremental units — and you gave 15% off to all 100. The maths usually goes deeply negative.
First-time-buyer codes have the best cannibalisation profile because they're structurally limited to new acquisition. They're also the most defensible discount type: you're paying for a new customer relationship, not subsidising your existing base.
The brand anchor problem
The third hidden cost of frequent discounting is the brand anchor. Customers who buy at discount learn to wait for the discount. Over six to twelve months of regular promo cadence, your full-price baseline volume falls — because the regulars now hold orders for the next code.
This isn't hand-waving. Data from owner-operator e-commerce stores on nouz shows shops that ran a discount code more than once per month saw their full-price volume drop 18-32% over twelve months. Shops that discounted twice per year or less saw full-price volume hold or grow.
The anchor effect is hard to undo. Once customers re-anchor to the discounted price, raising back to full price feels like a price increase — even though it's just removing the discount.
When discounting actually pays
After all that, discounting still has a place. Five scenarios where it pays:
- First-time-buyer acquisition. Low cannibalisation, builds the top of the funnel. Treat the discount as CAC — it shows up in the LTV equation, not the margin line.
- Clearing slow movers before markdown. The alternative is the markdown rack at 30-50% off in three months. A 15% promo now is cheaper than a 40% markdown later.
- End-of-season inventory clear. Same logic; smaller version. Free up shelf space and tied-up capital.
- Targeted reactivation. Customers who haven't bought in 6+ months. Cannibalisation is near-zero (they weren't going to buy anyway), and a small discount can win back 8-15% of the lapsed base.
- Bundle pricing. Not a discount — a structurally lower price on a larger purchase. See bundle pricing without bleeding margin.
What doesn't pay: site-wide flat-rate promo cadence (monthly Friday email blast), broad seasonal "Spring Sale" with no curation, discount stacking ("15% off + free shipping over €40"). All three look busy and feel like marketing. The margin math is brutal.
I was running a 20% off code every six weeks because I thought that was what "everyone does". When I ran the cannibalisation maths I realised 75% of my code redemptions were repeat customers who'd have bought anyway. I cut to two promos a year and EBIT margin lifted 6 points on flat revenue.
For the foundational e-commerce margin walkthrough, see the Shopify true-margin calculator. For per-SKU margin tracking in nouz, see the per-product margin view.
FAQ
What about BOGO ("buy one get one") offers — same maths?
Effectively a 50% discount on the average unit. Run the same contribution-margin table at 50% off. BOGO works for products with very high gross margin (60%+) and meaningful cannibalisation discounts; otherwise it bleeds.
How do I measure cannibalisation rate for my own store?
A/B test. Run the same discount code for a randomly selected half of your email list, no code for the other half. Compare conversion rate and AOV. The difference is your incremental lift; everything above that is cannibalisation.
Should I ever discount during seasonal high-demand periods (e.g. Christmas)?
Rarely. Demand is structurally high; the discount cannibalises sales you'd have made anyway. Save discounts for low-demand periods (January, August) when they actually shift volume.
What's a defensible discount cadence for an owner-operator e-commerce store?
Two or three site-wide promos per year (end-of-season clears), plus an always-on first-time-buyer code (10-15%) and a quarterly reactivation campaign for lapsed customers. Anything more frequent erodes the anchor.
How does affiliate discounting (influencer codes) factor in?
Triple-counted cost: the discount given, the affiliate commission (typically 10-15%), and the cannibalisation of the influencer's audience who'd have bought anyway. Treat affiliate codes as marketing spend in the LTV equation, not as promo.