A sign saying “20% off, plus an extra 10%” looks like 30% off, but that’s not what you pay. Here is the discount formula, a table of common stacked discounts, and the Thai price-display rules worth knowing as a shopper.
In short
- Sale price = full price × (1 − discount% ÷ 100)
- Stacked discounts: the second is taken from the already reduced price, so the total is less than the two percentages added together.
- The discount calculator handles percentage discounts, two stacked discounts and discounts in baht.
The formula
OpenStax’s Contemporary Mathematics gives:
discount = percent discount × original price sale price = original price − discount = original price × (1 − percent discount)
Example: a 999-baht shirt at 15% off
- Discount = 999 × 15 ÷ 100 = 149.85 baht
- Sale price = 999 − 149.85 = 849.15 baht
For a discount in baht, just subtract: 1,590 baht less 200 baht is 1,390 baht.
Why stacked discounts don’t add up
OpenStax explains that with successive discounts you apply the first, then take the second from the discounted price.
Final price = full price × (1 − d1 ÷ 100) × (1 − d2 ÷ 100)
Example: 1,000 baht, 20% off, then another 10% off
- First discount, 20%: 1,000 → 800 baht
- Second discount, 10% of 800 = 80 baht: 800 → 720 baht
- You save 280 baht in total, a real discount of 28%, not 30%
The order doesn’t matter because it’s multiplication: 10% first and then 20% also gives 720 baht.
Common stacks
| Sign says | Added together | Real discount |
|---|---|---|
| 10% + 10% | 20% | 19% |
| 20% + 10% | 30% | 28% |
| 30% + 30% | 60% | 51% |
| 50% + 20% | 70% | 60% |
| 50% + 50% | 100% | 75% |
The real discount is 1 − (1 − d1) × (1 − d2), from the formula above.
Buy one get one free, and half-price second items
These offers can be turned into a discount per item (our own arithmetic, not from a source):
| Offer | You pay for | You get | Average discount per item |
|---|---|---|---|
| Buy 1 get 1 free | 1 item | 2 items | 50% |
| Buy 2 get 1 free | 2 items | 3 items | about 33.33% |
| Second item 50% off | 1.5 items | 2 items | 25% |
They only save money if you actually need every item.
Rounding
Our calculator works at full precision and rounds to satang once, at the end. Some shops round at each step or to whole baht, so what you pay may differ slightly. If VAT is added separately, continue with the VAT calculator; to find what percentage a price dropped by, use the percentage calculator.
Thai price-display rules
In shops: Central Committee on Prices of Goods and Services notice No. 73 of 2569 exists so consumers can compare prices before they buy.
- Prices must be shown on or near the goods, including Arabic numerals, clearly and easy to read.
- Other charges must be shown clearly and in full, alongside the price.
- The displayed price must match the price charged, though selling for less than the displayed price is allowed.
Online shops: notice No. 72 of 2569 requires prices and product details to be shown clearly and in full, with other charges such as shipping shown alongside the product price.
As far as we read both notices, neither requires a sale sign to show the original price or the discount percentage.
Penalty: section 40 of the Prices of Goods and Services Act B.E. 2542 sets a fine of up to 10,000 baht for not displaying prices or not following the rules. The Act on the Conversion of Criminal Fines to Administrative Fines B.E. 2565 later turned this Act’s fine-only offences into administrative-fine offences.
Misleading discount adverts: section 22 of the Consumer Protection Act B.E. 2522 bans advertising that is false, exaggerated or misleading about the essentials of a product, and the Act’s definition of advertising media includes signs. The OCPB’s advertising guidelines say that on signs, text giving extra conditions, such as the small print behind an asterisk, must be clearly readable against the background and at least a third of the size of the largest lettering, and that an advert means what consumers understand it to mean, not what the seller intended.
If something is wrong
- Price doesn’t match the label, or no price is shown: call the Department of Internal Trade on 1569.
- Misleading advertising: call the Office of the Consumer Protection Board (OCPB) on 1166.
Keep the receipt and take a photo of the price label as evidence.
Note
This article is based on OpenStax’s Contemporary Mathematics (read on 25 September 2026) and on the notices and Acts published on the Department of Internal Trade and OCPB websites (read on 30 September 2026). The stacked-discount and offer tables are worked out from the formulas. This is general information, not legal advice.



