Stacking is multiplicative, not additive
10% then 10% is 19% off, not 20%. Stacks multiply their “keep” factors, so (1−0.10)×(1−0.10)=0.81 → 19% equivalent.
Single discount: \(\displaystyle P_f = P_0 (1-d)\). With tax \(t\) after discount: \(\displaystyle P_{f,\text{tax}} = P_0 (1-d)(1+t)\).
Example: 10, then 15, then 5. Each discount applies to the reduced price.
Final price with stacked \(d_1,\dots,d_n\): \(\displaystyle P_f = P_0 \prod_{i=1}^n (1-d_i)\).
Equivalent single discount: \(\displaystyle D = 1 - \prod_{i=1}^n (1-d_i)\).
Stacked equivalent \(D = 1 - \prod(1-d_i)\). We report pre-tax and after-tax prices.
Needed single discount (pre-tax target): \(\displaystyle D = 1 - \frac{P_f}{P_0}\). If tax \(t\) applies after discount, back out \(P_f = \tfrac{P_{\text{target}}}{1+t}\). If split into \(n\) equal stacked discounts: \(\displaystyle d = 1 - (1-D)^{1/n}\).
Discounts reduce a list price by a percentage or fixed amount. With a single discount of rate d,
the final price is Pfinal = P0(1 − d). With multiple or stacked discounts
(e.g., 10% then 15%), each discount applies to the price produced by the previous step:
Pfinal = P0 × ∏(1 − di). The equivalent single discount that produces the
same outcome is D = 1 − ∏(1 − di). This is why 10% + 15% is not 25% off; it’s actually 23.5%.
If the retailer specifies the order (e.g., “member 5% then promo 10%”), use it—order only matters when rounding rules or minimum price floors apply. For coupon stacks, check terms: some coupons apply to pre-tax price, others exclude shipping or certain categories. “Up to X%” offers usually mean different items or tiers receive different rates; treat them as separate discounts in the tool.
Most jurisdictions apply sales tax, VAT, or GST after discounts are taken: Pfinal, tax = Pfinal(1 + t).
In some places, environmental fees, recycling charges, or service fees are added regardless of discounts. If your region includes tax in shelf
prices (common with VAT/GST), the “discount” effectively reduces a tax-inclusive price. Our calculator models tax added after discounts by default.
For international users, note decimal separators (12,5% vs 12.5%) and currency rounding conventions; always enter percentages as whole numbers (e.g., 12.5 for 12.5%).
Merchants often combine a base promotion with a loyalty or payment-method discount. Wholesalers may publish trade discounts (e.g., 30/10) that are explicitly stacked. If you must respect a minimum advertised price (MAP) or margin target, use the Reverse (Target Price) tab: pick a target final (with or without tax), and compute the single or equal stacked discount(s) that hit the goal without violating constraints.
Original price = 250. Discounts: 10%, then 15%, then 5%. Product factor:
(1 − 0.10) × (1 − 0.15) × (1 − 0.05) = 0.90 × 0.85 × 0.95 = 0.72675.
Final pre-tax price = 250 × 0.72675 = 181.6875. Equivalent single discount:
D = 1 − 0.72675 = 27.325%. With 7.5% tax after discounts, final = 181.6875 × 1.075 ≈ 195.82.
If you control the promotion, an equivalent single discount is cleaner for messaging and customer perception. If you’re modeling real-world checkout flows (multiple codes, loyalty tiers, bulk breaks), stacked discounts mirror reality and make it easier to audit edge cases.
To split a required overall discount D into n equal stacked discounts, use
d = 1 − (1 − D)1/n. This is handy when negotiating staged concessions or designing tiered promos.
10% then 10% is 19% off, not 20%. Stacks multiply their “keep” factors, so (1−0.10)×(1−0.10)=0.81 → 19% equivalent.
Pure math ignores order, but if a checkout rounds after each discount, swapping “15% then 5%” vs “5% then 15%” can change the price by a few cents.
Most places apply tax after discounts, but fixed fees (shipping, environmental) often sit outside the discount. “25% off everything” rarely means 25% off the whole bill.
A banner shouting “up to 50% off” might average nearer 15–25% across a cart. The true equivalent discount depends on your mix.
A 20% price drop needs more than a 20% hike to recover; you need a 25% markup to get back to a 20% margin. Percentages don’t mirror perfectly.