How to Calculate a Sale Discount: Formulas, Examples, and Common Traps
The math behind percent off, stacked discounts, sales tax order, and the tricks retailers use to make a discount look bigger than it is.
Sale math is supposed to be simple. Original price minus discount equals what you pay. In practice, retailers stack percentages, mix in coupons, hide tax behavior, and round in convenient directions. By the time you get to the register, the “70% off” sign and the receipt rarely agree.
This post is a tour of the actual formulas, the order they need to apply in, and the cases where a discount looks bigger or smaller than it really is.
The base formula
The single, boring formula behind every discount:
sale price = original price * (1 - discount fraction)
discount amount = original price * discount fraction
A 25% discount is a discount fraction of 0.25. A $80 jacket at 25% off is $80 * 0.75 = $60, with the discount itself being $80 * 0.25 = $20.
Everything else in this post is a variation on that one formula.
If you’d rather skip the arithmetic on any specific item, the Discount Calculator applies it directly. For converting between fractions and percentages or doing markup math, a percentage calculator handles the inverse cases.
Stacked discounts don’t add
The most common shopper mistake: assuming “25% off, then an extra 20% off” equals 45% off. It doesn’t.
Each discount applies sequentially to the running price, not to the original.
A $100 item at 25% off:
- After first discount:
$100 * 0.75 = $75. - Then 20% off the $75:
$75 * 0.80 = $60.
So 25% then 20% = $40 off a $100 item, which is 40% off, not 45%.
The general formula for two stacked percentages a and b (each as a decimal fraction):
combined factor = (1 - a) * (1 - b)
combined discount = 1 - combined factor
For 25% and 20%: 0.75 * 0.80 = 0.60, so the combined discount is 1 - 0.60 = 0.40 = 40%.
Three stacked discounts work the same way: multiply all the (1 - rate) factors. They never sum to the simple total of the percentages.
The order rarely matters (when discounts are pure percents)
A useful fact about pure-percentage stacking: order doesn’t change the result. 25% then 20% gives the same answer as 20% then 25%. That’s just multiplication being commutative.
It does matter when one discount is a flat dollar amount and the other is a percent.
Example: a $200 item with a $50-off coupon and a 20%-off promotion.
- Flat first:
$200 - $50 = $150. Then 20% off:$150 * 0.80 = $120. - Percent first:
$200 * 0.80 = $160. Then $50 off:$160 - $50 = $110.
Percent-first saves you $10 in this case. Most retailers default to flat-first because it favors the store. If a coupon’s terms don’t specify and the cashier system has options, percent-first usually gives the buyer a better deal.
Sales tax order changes the bill
Sales tax is treated differently in different jurisdictions, and so is the discount-vs-tax order. Two main conventions exist in US retail:
- Discount before tax (most common). The store reduces the price, then sales tax is computed on the reduced price. The buyer benefits.
- Tax on original, then discount applied to total (rare, sometimes seen with manufacturer coupons in certain states). Sales tax is computed on the pre-discount price. The buyer’s effective discount is smaller.
For a $100 item, 20% off, in a 10% sales tax state:
- Discount-before-tax:
$100 * 0.80 = $80, then tax:$80 * 1.10 = $88. - Tax-on-original:
$100 * 1.10 = $110, then $20 off:$90.
The first scheme saves $2 on this small example. On expensive items the gap grows in absolute dollars.
When in doubt, look at the receipt: the printed line item order tells you which scheme the store used.
The “fake” discount: anchored prices
Retailers know shoppers compare the sale price to the original “MSRP.” They also know how much that comparison drives perceived value. So the strict-mathematical discount is sometimes overstated by inflating the original.
Common patterns:
- MSRP that nobody actually charged. A jacket “originally $200, on sale for $80” might never have sold above $120 anywhere. The 60% discount sign is technically correct only if you accept the inflated original.
- Comparison shopping is the antidote. A 70%-off item that costs $35 across competitors at $40-50 is a real but small discount. The same item against a phantom $150 original is a fake big one.
This is one place where calculator output isn’t enough. The math is honest, but the input “original price” is sometimes fiction. Sites like archive.org’s Wayback Machine, Camelcamelcamel for Amazon, and Honey’s price-history tool exist mostly to fact-check anchor prices.
Markup vs discount: the symmetry that confuses people
Markup is the opposite of discount, but the percentage that connects them isn’t symmetric.
If a store buys an item for $50 and sells it for $100, that’s a 100% markup. If the store later puts the $100 item on sale for $50, that’s a 50% discount. Same dollar swing, different percentages.
The reason: markup uses cost as the denominator ((price - cost) / cost), while discount uses the higher price as the denominator ((original - sale) / original). Two different baselines.
A 50% discount can never recover from a 100% markup. To break even with the customer at the original cost, you’d need only a 50% markup originally, or you’d need a 100% discount on the marked-up price (free).
This is why “marked up 100% then 50% off” is profitable for the store, even though the rates “cancel” in casual conversation.
Weighted-average discounts on a basket
When you’re checking out a multi-item cart with mixed discounts, the right way to summarize the savings is dollars off divided by total original, not the simple average of discount percentages.
Example: a $200 item at 50% off ($100 off) and a $20 item at 25% off ($5 off).
- Total original: $220.
- Total saved: $105.
- Effective basket discount: 105 / 220 = 47.7%.
Naively averaging the percents (50 and 25) gives 37.5%, which under-credits the larger item. The dollar-weighted version is what your wallet actually feels.
For mixed cases like this, the percentage calculator can do each line independently, and a quick mental check of (saved / original) confirms the basket-level rate.
When 1 + 1 = 2 (the additive special case)
Two discounts do add up if they’re applied to the same original price independently, not stacked.
Example: a state rebate of 10% off plus a manufacturer rebate of 15% off, both computed against the original sticker price and applied as separate refunds.
- 10% rebate + 15% rebate = 25% off the original.
This is rare in retail but common in tax credits, insurance rebates, and government programs. If both percentages explicitly reference the same baseline, they add. If one applies to the result of the other, they multiply.
Tipping is a related calculation
Adding a tip is just another percentage on top of a subtotal. The math is identical to “negative discount”:
total = subtotal * (1 + tip fraction)
A 20% tip on $40 is $40 * 1.20 = $48. The formal symmetry with discount math is part of why a tip calculator and a discount calculator look so similar under the hood. (For the food-service version, the Tip Calculator handles split-bill cases too.)
The bottom line
Sale math has three rules of thumb that cover most real cases:
- Stacked percentages multiply, they don’t add.
- Tax-discount order matters; check your receipt.
- The “original price” is the lever retailers fudge most often.
If you internalize those, the calculator output is just confirmation. If you don’t, the sticker on the rack will quietly mislead you about half the time.
Tools mentioned in this article
- Discount Calculator — Calculate discount amount, sale price, savings, and discounted value with optional sales tax. Supports stacked coupons.
- Percentage Calculator — Calculate percentages: X% of Y, percentage increase/decrease, and more.
- Tip Calculator — Calculate the tip and split the bill between any number of people. Works as a tip splitter and bill splitter in one.