All articles

Getting a sales tax report out of your till

Why a tax figure has to be reconstructed from what you actually charged rather than recalculated from today's rate, and what a filable report needs to contain.

Most POS software will show you a tax total. Far fewer will show you one you can defend if somebody asks where it came from. The difference is not the arithmetic — it is whether the number was recorded at the time or recalculated afterwards.

The mistake that makes a tax report useless

Suppose your rate changes in the middle of a month, which happens. Or suppose you charge a different rate depending on how the customer paid, which is common. If the software computes your tax report by taking this month's sales and multiplying by the rate it finds in Settings today, then:

  • Every bill from before the change is now reported at the new rate.
  • Your report will not match the receipts your customers are holding.
  • You cannot reconstruct what actually happened, because the evidence was never stored.

The fix is unglamorous: the rate that applied to a line has to be written onto that line at the moment of sale, along with the tax amount charged. Then a report is a sum of things that were true, not a recalculation of things that might not be.

What a filable report has to contain

Grouped by rate, not by month

If two rates applied during your period, a single total is a number that appears on no bill. Group by rate, and show the taxable base and the tax charged for each. That is the shape a return usually wants anyway.

A base you can check

The taxable base should be derived from what was actually charged and what tax was actually taken — not recomputed from price multiplied by quantity. That is what lets the report reconcile exactly with the sum of the tax recorded on the bills themselves, to the paisa. If your software cannot state that it reconciles, ask why not.

Returns reversed at the rate they were charged

A refund in September against a July bill must reverse July's rate, not September's. This is the single most common place a tax report drifts, because it is invisible until the rate changes.

Discounts handled one way, and stated

There are two defensible ways to treat a discount given on the whole bill: it reduces the taxable value of the supply, or it comes off the gross after tax. Which is right depends on where you trade. What is not defensible is software that does one of them without telling you which, because you cannot check a figure whose rule you do not know.

The bill-level discount question

Worth understanding before you file anything.

A discount on a single line is easy: the line's taxable base goes down and so does its tax. A discount on the whole bill is harder, because the bill is not a line — it has no single tax rate to reduce, and taking it off the gross means you declare tax on money the customer never handed over.

Both treatments exist in the world. In SalezFlow POS it is a setting, and it defaults to the behaviour every bill written before the setting existed used, so taking an update never moves a figure you have already filed. Turn it on and the bill-level discount is apportioned across the lines and comes off their taxable bases, exactly as a line discount always has.

If your current software does not let you choose, find out which one it does.

What to check on your own system this week

  • Change your rate, ring up a sale, and check that yesterday's bills still report the old rate.
  • Refund something from last month and check the reversal used last month's rate.
  • Sum the tax column on ten bills by hand and compare it to what the report says for those ten bills.
  • Give a bill-level discount and work out, by hand, whether the tax went down.
  • Export the report. If it only exists on screen, it is not a record.

Any of those failing is worth knowing now rather than at filing time.

Downloads matter more than screens

A report you can only look at is a report you cannot attach to anything. Every tax, sales and stock report should come out as a spreadsheet, with real numeric cells rather than text — so that a column of amounts can actually be summed in Excel, and a barcode column does not turn into scientific notation the moment the file is opened.


SalezFlow POS snapshots the rate onto every line at the moment of sale, groups the tax report by rate, reverses returns at the rate their own bill charged, and reconciles to the paisa with the tax recorded on the bills. Every report downloads as a real spreadsheet. See the full feature list, or read the manual before you install anything.

Read next