A shopkeeper sent us a bill and one line: "the tax is wrong." He was right.
The bill was simple. One shirt at ₹120, GST at 5%, and ₹10 off because he's a regular. Karobaar added the tax first and took the discount off the total at the end. That gave tax of ₹6.00 and a total of ₹116.00.
The law reads it the other way round. Under section 15(3)(a) of the CGST Act, a discount given at the time of sale and shown on the invoice is not part of the taxable value. So the ₹10 comes off first, and the tax is worked out on what's left.
| Before (wrong) | Now (right) | |
|---|---|---|
| Price | ₹120.00 | ₹120.00 |
| Discount | taken at the end | −₹10.00 |
| Taxable value | ₹120.00 | ₹110.00 |
| GST 5% | ₹6.00 | ₹5.50 |
| Bill total | ₹116.00 | ₹115.50 |
Fifty paise on one shirt doesn't sound like much. But it was on every discounted bill, it was the shop paying tax on money it never received, and it was the kind of thing a CA notices in March.
What changed
- Every new bill takes the discount off first. If a bill has items at different GST rates, the discount is shared across them by value, so each rate's tax is right too.
- The GST report, the CA Excel, the registers, the PDF bill and the thermal receipt all read the same numbers. There is one rule, not five copies of it.
- Quotations follow the same rule, so a quote totals exactly what its bill will.
- A return on a discounted bill credits what the customer actually paid, not the price before the discount.
Why old bills don't move
A tax invoice cannot change after it's been handed over. If we had flipped the rule for everyone, every discounted bill a shop had ever made would have shown a new total and a new amount due. Customers would have been "owing" different money overnight.
So the rule is stored on each bill. Bills made before the fix keep the arithmetic they were printed with. Bills made after it use the right one. Nothing a shopkeeper has already given a customer changes.
