Shopify discount stacking: how combined discounts sell below cost
For stores that run sales and discount codes at the same time · 5-minute read
Each discount on its own can look safe. The trouble starts when they combine: a product already on sale, a percentage code from an email, and an order-wide discount at checkout. Together they can take a product below what it cost you, and no single discount looks wrong.
Stacked discounts multiply, they don't add
Percentage discounts apply one after another, each to the price left by the one before. So 20% then 10% is not 30% off:
real discount = 1 − (1 − 0.20) × (1 − 0.10) = 28% off
That sounds like good news, but it hides how far below the normal price you end up. Here is one product going through a typical promotion week:
| Step | Price | Total off so far |
|---|---|---|
| Normal price | $50.00 | 0% |
| Sale price (15% off) | $42.50 | 15% |
| + 20% email code | $34.00 | 32% |
| + 10% order-wide “welcome” discount | $30.60 | 38.8% |
| Your cost per item | $32.00 | |
| Result | −$1.40 | sold below cost |
The product has a 36% margin, so any total discount above 36% loses money. None of the three discounts is above 36%, but together they reach 38.8%.
Where stacking comes from in Shopify
- Sale prices (a compare-at price above the price) lower the starting point for every code.
- Discount codes customers enter at checkout.
- Automatic discounts that apply without a code.
- Order-wide discounts that are spread across every product in the cart.
In each discount's settings, Shopify has a Combinations section where you choose whether it can combine with product, order and shipping discounts. The safest default is to leave combinations off unless you've checked the margins of the products involved.
How to keep stacked discounts above cost
- Know each product's limit. Your margin is the deepest total discount you can give. Work it out with the margin calculator.
- Check the worst case, not each discount. Multiply out every discount that can combine on a product:
1 − (1 − a)(1 − b)(1 − c). Test one discount at a time in the discount calculator. - Exclude sale items from codes, or limit codes to collections with healthy margins.
- Turn off combinations on order-wide discounts unless you've checked the products they can land on.
- Audit what already happened. Stacking is easy to miss in reports because each discount is listed separately.
See which orders stacking already pushed below cost. The free loss report reads your Shopify Orders and Products exports and lists every order line that sold below its cost per item after all discounts combined, worst first. It runs in your browser; your files are never uploaded.