Shopping
How To Calculate Stacked Discounts
Stacked discounts multiply rather than add. A price of 200 cut by 20% and then by 10% falls to 160.0 and then to 144.0, an effective discount of 0.28, not the 0.30 that adding the two rates would suggest.
Quick Answer
Final Price = Price x (1 - first) x (1 - second)
- P
- Original price before any discount — 200 in the standard case
- a
- First discount as a decimal — 0.20 for 20% off
- b
- Second discount as a decimal — 0.10 for 10% off
- (1 - a)(1 - b)
- Combined survival factor — 0.72 here, the mirror of a 0.28 discount
Turn each discount into the share that survives, then multiply. A 20% cut leaves 0.80 and a 10% cut leaves 0.90, so 0.80 x 0.90 = 0.72 of the original remains. On a price of 200 that gives 160.0 after the first cut and 144.0 after the second, a total saving of 56.0 and an effective discount of 0.28. Adding the rates instead gives 0.30, which overstates the real saving by 0.020000000000000018, because the second discount is measured against the reduced price rather than the original one.
What Is Stacked Discounts?
A stacked discount is two or more percentage reductions applied one after the other, and the arithmetic that joins them is multiplication rather than addition. Take a price of 200 with 20% off first: the reduction is 40, leaving 160.0 standing. Apply a further 10% off and the second cut removes 16 from that 160.0, landing on 144.0. The total saving is 56.0, which is an effective discount of 0.28 rather than the 0.30 that adding the two rates suggests. Almost every mistake on this page traces back to that single substitution, so it is worth fixing in mind before the numbers get larger.
The reason the two rates cannot simply be added is that they are measured against different bases. The first 20% is taken from 200 and removes 40, but the second 10% is taken from the already-reduced 160.0 and removes only 16. Adding the rates treats both as though they were charged against the original 200, which would remove 40 and then 20 for a total of 60. The true saving of 56.0 is 4 short of that figure, and the shortfall is not a rounding artefact but a structural feature of the calculation. The deeper the second cut, the further the two answers drift apart.
The cleanest way to carry the arithmetic is with survival multipliers. A 20% discount leaves 0.80 of the price standing, and a 10% discount leaves 0.90, so the two together leave 0.80 x 0.90 = 0.72 of the original. Applied to 200 that is 144.0, exactly as before, and it is reachable in a single multiplication rather than two. Reading the result backwards, 0.72 surviving means 0.28 removed, so the effective discount is 0.28. Multiplying the surviving shares is the whole method; the only question is which shares to multiply and in what order.
Order does not matter, because multiplication is commutative. Taking 10% off 200 first leaves 180, and then 20% off leaves 0.80 x 180 = 144.0, the same final price reached by the other sequence. The two multipliers, 0.80 and 0.90, produce 0.72 whichever way round they are written, and the intermediate figures differ while the destination does not. This is worth stating explicitly because it contradicts the intuition that the larger discount should come first. In a pure percentage chain it makes no difference at all, though a fixed cash coupon alongside a percentage cut is a different story.
Written algebraically, two successive discounts a and b leave (1 - a)(1 - b), which expands to 1 - a - b + ab. With a = 0.20 and b = 0.10 that is 1 - 0.30 + 0.02 = 0.72, matching the multiplier arithmetic exactly. The true discount is therefore a + b - ab = 0.28 rather than the a + b = 0.30 of the naive sum. The extra term ab is the correction that the sum omits, and because both rates are positive it is always positive, so adding the rates always overstates the saving. There is no case in which the naive sum is the smaller of the two.
That omitted term grows quickly with the size of the rates. Two cuts of 20% leave 0.80 x 0.80 = 0.64, a discount of 36% against the 40% the sum predicts, a gap of 4 points. Two cuts of 50% leave 0.50 x 0.50 = 0.25, a discount of 75% against a nonsensical 100%. The gap is always exactly the product ab, so a pair of 20% cuts is overstated by 0.04 while the 20% plus 10% pair is overstated by only 0.02. Small rates make the error look negligible; large ones make it impossible to ignore, which is why the same mistake that is harmless on a 5% coupon is glaring on a clearance tag.
For the standard case the omitted term is 0.20 x 0.10 = 0.02, and in floating-point arithmetic it prints as 0.020000000000000018. That long tail is not a flaw in the reasoning but an artefact of binary representation, the same effect that makes 0.1 plus 0.2 differ from 0.3 on most machines. The headline sum of 0.30 therefore overstates the true 0.28 by exactly that product, and no amount of careful rounding makes the sum correct. Quoting the gap rather than hiding it is the honest way to describe a stacked offer, because it tells the buyer precisely how much the headline figure is padded.
This is the same arithmetic that makes compounding work, read in reverse. Compound growth multiplies factors of (1 + r) to build a larger value, while stacked discounts multiply factors of (1 - d) to shrink one. A single cut is a two-term product, a double stack is a three-term product, and the chain lengthens by one term with each additional discount. The direction differs but the multiplication does not, which is why a page about interest and a page about sale tags end up sharing a single formula. Recognising the shared structure means one piece of understanding covers both topics.
In practice, quote the combined multiplier and the effective discount together, because the headline rate alone is ambiguous. Three successive cuts of 20%, 10% and 10% leave 0.80 x 0.90 x 0.90 = 0.648, an effective discount of 35.2% against the 40% a naive sum would claim. The combined factor never reaches zero unless one of the discounts is a full 100%, so no finite chain of ordinary percentage cuts ever produces a free item. When a stacked offer looks too generous, the missing product term is almost always the reason, and computing 0.28 instead of 0.30 is usually enough to settle the question.
Formula
Final = Price x (1 - a) x (1 - b)
Convert each rate to the share it leaves behind, then multiply. For 200, 0.20 and 0.10 the result is 200 x 0.80 x 0.90 = 144.0.
| Symbol | Meaning | Unit | Notes |
|---|---|---|---|
| P | Original price | currency | The figure both discounts act on, indirectly. 200 in the standard case. |
| a | First discount as a decimal | decimal | 20% enters as 0.20, leaving the survival factor 0.80. |
| b | Second discount as a decimal | decimal | 10% enters as 0.10, leaving the survival factor 0.90, and it acts on the reduced price. |
Effective = 1 - (1 - a)(1 - b) = a + b - a x b
The true single rate that matches the chain. For 0.20 and 0.10 it is 0.28, not the 0.30 of a plain sum.
| Symbol | Meaning | Unit | Notes |
|---|---|---|---|
| a | First discount as a decimal | decimal | 0.20 in the worked example. |
| b | Second discount as a decimal | decimal | 0.10 in the worked example. |
| d_eff | Effective discount | decimal | The single rate equivalent to the chain: 0.28 here, applied once to the original price. |
Overstated = (a + b) - (a + b - a x b) = a x b
The exact amount by which adding the rates overshoots. For 0.20 and 0.10 it is 0.02, printed as 0.020000000000000018.
| Symbol | Meaning | Unit | Notes |
|---|---|---|---|
| a | First discount as a decimal | decimal | 0.20 in the worked example. |
| b | Second discount as a decimal | decimal | 0.10 in the worked example, giving a product of 0.02. |
| delta | Overstatement | decimal | The product of the two rates, always positive, equal to 0.020000000000000018 here. |
How To Calculate Stacked Discounts
- 1
Convert each discount into the share that survives
Subtract each rate from 1. A 20% discount leaves 0.80 standing and a 10% discount leaves 0.90, so the two survival factors are 0.80 and 0.90. This one move removes the temptation to add the rates, because the factors are obviously meant to be multiplied.
- 2
Apply the first discount to the original price
200 x 0.80 = 160.0, so the first cut of 20% removes 40. Keep this intermediate figure visible, because the second discount is measured against it rather than against the original 200.
- 3
Apply the second discount to the reduced price
160.0 x 0.90 = 144.0, so the second cut of 10% removes only 16 rather than the 20 it would have taken from the original. The final price is 144.0 and the total saved is 200 - 144.0 = 56.0.
- 4
Multiply the two factors for the effective discount
0.80 x 0.90 = 0.72 surviving, so 1 - 0.72 = 0.28 is the single rate equivalent to the chain. Checking it against the money confirms it: 200 x 0.28 = 56.0, the same saving reached step by step.
- 5
Compare with the naive sum and report the gap
Adding the rates gives 0.20 + 0.10 = 0.30, which overstates the true 0.28 by 0.020000000000000018. Stating both the effective rate and that gap keeps the headline honest, and the gap is always the product of the two rates.
Examples
Example 1: The first discount on a price of 200
- Original price
- 200
- First discount
- 20% off
| Step | Calculation | Result |
|---|---|---|
| Multiplier left by the first discount | 1 - 0.20 | 0.80 |
| Amount removed by the first cut | 200 x 0.20 | 40 |
| Price after the first discount | 200 x 0.80 | 160.0 |
Result: The first cut of 20% removes 40 and leaves 160.0, with a survival factor of 0.80 — the base that the second discount will now be measured against.
Example 2: The second discount acts on the reduced price
- Price after the first cut
- 160.0
- Second discount
- 10% off
| Step | Calculation | Result |
|---|---|---|
| Multiplier left by the second discount | 1 - 0.10 | 0.90 |
| Amount removed by the second cut | 160 x 0.10 | 16 |
| Price after the second discount | 160 x 0.90 | 144.0 |
Result: The second cut removes only 16 because it works on the reduced 160, not the original 200, and the final price settles at 144.0.
Example 3: The effective discount and the overstatement
- Original price
- 200
- Final price
- 144.0
| Step | Calculation | Result |
|---|---|---|
| Total saved | 200 - 144 | 56 |
| Effective discount | 56 / 200 | 0.28 |
| Naive sum of the two rates | 0.20 + 0.10 | 0.30 |
| Overstatement of the naive sum | 0.30 - 0.28 | 0.020000000000000018 |
Result: The saving of 56 on 200 is an effective discount of 0.28, while the naive sum of 0.30 overstates it by 0.020000000000000018 — the product of the two rates.
Calculator
Price after both discounts
144
- Total amount saved
- 56
- Effective discount of the stack
- 28.00%
- Amount by which adding the rates overstates the saving
- 2.00%
Values update as you type. This calculator covers the single scenario its formula assumes — see Common Mistakes for what it leaves out.
Prefer a full-width tool? Open the Stacked Discounts calculator page.
Common Mistakes
Adding the two discount rates
20% then 10% is 0.80 x 0.90 = 0.72, an effective discount of 0.28, not 0.30. Addition treats both cuts as if they were charged against the original price, overstating the saving on every transaction and by more as the rates grow.
Charging the second discount to the original price
Taking 10% of 200 removes 20 rather than the correct 16, which would leave 140 instead of 144.0. The second discount always acts on the price that survived the first cut, and using the original as its base inflates the saving.
Believing the order of the discounts changes the total
Multiplication is commutative, so 0.80 x 0.90 equals 0.90 x 0.80. Taking 10% off first leaves 180 and then 144.0, the same destination by a different route. Only a fixed cash coupon alongside a percentage cut breaks this symmetry.
Treating the gap as a rounding slip
The 0.020000000000000018 shortfall between 0.30 and 0.28 is not an error in the arithmetic but the exact product of the two rates. It grows with the rates, reaching 0.04 for two 20% cuts, so it is a real difference rather than a cosmetic one.
Expecting a stack to reach a free item
The combined factor only reaches zero if one discount is a full 100%. Three cuts of 20%, 10% and 10% still leave 0.648 of the price, an effective discount of 35.2%. No finite chain of ordinary percentage cuts ever takes the price to nothing.
FAQ
What is a stacked discount?
It is two or more percentage reductions applied one after the other, where each one is charged against the price that survived the previous cut. A 20% discount followed by a 10% discount is a stack, and its combined effect is found by multiplying the survival factors 0.80 and 0.90 rather than by adding the rates. On a price of 200 the chain gives 160.0 and then 144.0.
Is 20% off then 10% off the same as 30% off?
No. The true combined discount is 0.28, not 0.30, because the second 10% is measured against the reduced price. On 200 the chain removes 40 and then 16 for a saving of 56, which is 28% of the original, whereas a flat 30% would remove 60. The naive sum overstates the saving by 0.020000000000000018, the exact product of the two rates.
Does the order of the discounts matter?
Not for the final price. Because multiplication is commutative, 0.80 x 0.90 and 0.90 x 0.80 both give 0.72, so taking 10% off first still lands on 144.0 after the second cut. The intermediate figures differ — 180 rather than 160.0 — but the destination is identical. The order matters only when a fixed cash amount is mixed in with the percentages.
How do I work out the effective discount of a stack?
Multiply the survival factors and subtract from 1. Two rates a and b leave (1 - a)(1 - b), so the effective discount is 1 - (1 - a)(1 - b), which equals a + b - ab. For 0.20 and 0.10 that is 0.20 + 0.10 - 0.02 = 0.28. The subtraction of the product ab is precisely what keeps the answer below the naive sum of the rates.
How do I handle three or more stacked discounts?
Multiply one survival factor per discount. Three cuts of 20%, 10% and 10% leave 0.80 x 0.90 x 0.90 = 0.648, an effective discount of 35.2% rather than the 40% a naive sum would claim. The chain is simply a longer product, and the gap between the true discount and the sum of the rates widens with every additional term.
References
- [1]Wikipedia, Discounts and allowances — https://en.wikipedia.org/wiki/Discounts_and_allowances
- [2]Wikipedia, Compounding — https://en.wikipedia.org/wiki/Compounding
- [3]Wikipedia, Percentage — https://en.wikipedia.org/wiki/Percentage