Sales tax vs. VAT: on top, or already included

Tax on an invoice comes in one of two shapes. Either it sits on top of the price — you quote 100.00 and the customer pays 100.00 plus whatever the rate adds — or it is already inside the price you advertised, so the 120.00 on the label contains the tax rather than attracting it. Which shape applies depends on where you are and what you sell. The arithmetic differs between them, and the second case is where hand-made invoices most often go wrong.

Added on top: the sales tax model

In the United States, sales tax is generally computed from the price and added at the point of sale, and prices are commonly advertised without it. The listed price is usually what the seller keeps; the tax is a separate line that the seller collects and remits. On an invoice this is straightforward: 100.00 of goods at an example rate of 7% produces 7.00 of tax and a total of 107.00. The subtotal, the tax, and the total are three distinct numbers and none of them has to be worked backward out of another.

Already included: the VAT and GST model

Value-added tax and goods-and-services tax systems generally require consumer-facing prices to be shown tax-inclusive, so the advertised figure is the whole amount the buyer pays. That does not mean the tax disappears from the paperwork. A business invoice typically still has to state the net amount, the tax, and the gross separately, because the buyer may be entitled to reclaim the tax and needs to see the figure. So the seller starts from a gross price and has to find the tax that is already sitting inside it.

The arithmetic: divide, do not subtract

To find the tax inside a tax-inclusive price, divide by 1 plus the rate. Take 120.00 at a rate of 20%:

  • Correct: 120.00 ÷ 1.20 = 100.00 net. The tax is 120.00 − 100.00 = 20.00, and the total stays 120.00.
  • Wrong: 20% of 120.00 = 24.00, leaving a net of 96.00. The tax is overstated by 4.00 — a fifth of the correct figure — and the net is understated by the same amount.

The reason is that a percentage is always a percentage of something, and the something here is the net price, not the gross one. The 20.00 of tax is 20% of 100.00, which is what the rate means. Taking 20% of 120.00 charges tax on the tax. The overstatement works out to the rate itself, expressed as a share of the correct tax: at 5% you overstate the tax by a twentieth, at 20% by a fifth, at 25% by a quarter.

As a general formula, the tax inside a gross price is gross × rate ÷ (1 + rate). At 20% that reduces to dividing the gross by six; at 10%, dividing by eleven. Those shortcuts are just the same division written differently, and they let you check a printed invoice in your head.

Which mode to pick in the generator

The invoice generator offers three tax modes, and the choice is only about what the price you typed already contains:

  • No tax — no tax line is printed at all.
  • Added on top — the unit prices you entered are net. Tax is computed from the taxable base and added, so the tax line increases the total.
  • Already included — the unit prices you entered are gross. Tax is extracted by division and shown on its own line, which does not change the total.

A separate tax label field controls what the line is called, so it can read VAT, GST, sales tax, or whatever term your customers expect. The label is cosmetic; the mode is the part that changes the numbers. If you enter tax-inclusive prices but leave the mode on “added on top”, the tool will faithfully add tax a second time, and the total will be wrong in a way that is easy to miss because every individual figure looks plausible.

One ordering detail matters in both modes: a discount comes off before the tax is worked out, because tax follows what was actually charged. The methodology page sets out the full order of operations, the integer-cent arithmetic, and the rounding rule, with the inclusive and exclusive examples computed at build time by the same engine the tool uses.

The examples above, run through the engine

Every figure in this guide is produced by the same money engine the generator runs, at the moment this page is built, from a fictional document described in the sentence that quotes it. If the engine changed, this page would change with it, and a figure that disagreed with the tool could not be published. This section takes the three examples above and reads them back as the engine reports them: a subtotal, a tax line and a total.

Start with the sales-tax example. A one-line document for 100.00 of goods, with the mode set to added on top and a rate of 7%, comes back from the engine with a subtotal of 100.00, a tax of 7.00 and a total of 107.00. The tax was computed from the taxable base and added, so the total exceeds the subtotal by exactly the tax.

Now the inclusive example. The same one-line document for 120.00, with the mode set to already included and a rate of 20%, comes back with a subtotal of 120.00, a tax of 20.00 and a total of 120.00. The subtotal and the total are the same number, because the tax was found inside the price rather than put on top of it; the net is the difference, 100.00.

And the mistake the guide warns about, made deliberately. Hand the engine the same 120.00 but leave the mode on added on top: the tax becomes 24.00 and the total 144.00. Nothing here is a bug. The engine was told the 120.00 was net, so it computed 20% of 120.00 and added it — the “wrong” column from the list above, arriving by a different route. The gap between the two tax figures, 4.00, is the overstatement. Because a document in the wrong mode has a plausible subtotal, a plausible tax line and a plausible total, nothing on the page looks wrong until someone divides.

The overstatement at several rates

The guide says the overstatement equals the rate itself, taken as a share of the correct tax: a twentieth at 5%, a fifth at 20%, a quarter at 25%. The table below checks that claim with the engine rather than by hand, at four example rates. Each row starts from a fictional net price of 200.00, which the engine first turns into a gross price in added-on-top mode. That gross is then handed back to the engine as an already-included price at the same rate, and the tax it extracts is set beside what the engine produces when the gross is fed to it as if it were net — which is exactly “take the rate off the gross”, the subtraction error.

Rate Gross price Tax extracted by division Rate taken off the gross Overstated by Correct tax ÷ overstatement
5% 210.00 10.00 10.50 0.50 20
10% 220.00 20.00 22.00 2.00 10
20% 240.00 40.00 48.00 8.00 5
25% 250.00 50.00 62.50 12.50 4

Three things were confirmed when this table was built. In every row, gross minus extracted tax returns exactly the 200.00 the row started from. In every row, the last column is the reciprocal of the rate taken as a fraction of one — 20 at 5%, 10 at 10%, 5 at 20%, 4 at 25% — which is the arithmetic behind “a twentieth, a fifth, a quarter”: the overstatement is the correct tax divided by the reciprocal of the rate. And the two shortcuts hold: in the 20% row the gross divided by six is the extracted tax, and in the 10% row the gross divided by eleven is. Each of those checks is a condition the build has to pass, not a sentence someone remembered to update.

A longer document in each of the three modes

A single line hides what the mode does to a real document, so take a fictional invoice from a joinery workshop with three lines: fitted shelving at 6.5 metres × 84.00 per metre, fourteen oak boards at 23.90 each, and one site visit at 60.00; a 5% discount; shipping of 25.00; and a rate of 20%. The engine computes each line first, rounding once at the line: 546.00, 334.60 and 60.00, for a subtotal of 940.60. The discount of 47.03 comes off next, leaving a taxable base of 893.57. Up to this point the three modes have produced identical numbers, because the mode has not been consulted yet.

  • No tax: nothing is computed for tax. The total is the taxable base plus shipping, 918.57.
  • Added on top: tax of 178.71 is computed on the taxable base and added, then the shipping, for a total of 1,097.28.
  • Already included: tax of 148.93 is extracted from the taxable base by dividing by 1.20, and the total is the taxable base plus shipping, 918.57 — the same figure as the no-tax total, because the tax was already inside the prices.

Two things in that list are easy to miss. The already-included total matches the no-tax total to the cent, which is the whole point of the mode: switching it on changes what the document says about the price, not the price. And shipping sits outside the tax in both taxed modes, because it is added after the tax has been worked out. The methodology page records that as a deliberate simplification — some jurisdictions tax freight, and this tool does not model that — and notes that shipping entered as a line item falls inside the taxable base instead.

When the division does not land on a cent

Dividing by 1 plus the rate rarely produces a whole number of cents. The engine holds every amount as an integer number of cents and rounds half away from zero, so for a fictional gross of 99.99 at 20% it finds a net of 83.33 and a tax of 16.66. The two add back to exactly 99.99, because the tax is defined as the gross minus the rounded net rather than rounded on its own. That is the same discipline as rounding each line once: whichever figure a reader checks with a calculator, the printed numbers reconcile. A reader working the division by hand may see a half-cent that the document has already resolved; the document's figure is the rounded one, and the net and tax it prints always sum to the gross it started from.

What the finished document says about the tax

The engine's document builder attaches two labels to those figures. The first is the tax label. Leave the field blank with the mode on already included and the tax line is called “VAT (included)”; leave it blank with the mode on added on top and it is called “Tax”. Type GST and the line is called “GST” whatever the mode, with every figure unchanged — the label is cosmetic, as the section above says, and the build confirms that the labelled and unlabelled documents carry the same tax and total. The second label belongs to the bottom line and depends on the kind of document rather than on the tax: the joinery invoice built above ends with “Balance due” of 918.57, the same figures on a receipt end with “Amount paid”, and on a quote with “Quote total”. The guide to receipts, quotes and the bottom-line label explains why that wording is not cosmetic. Left blank, the document number defaults to a date-stamped one — INV-20261001 for an invoice dated 1 October 2026 — and the generator does not number documents sequentially across sessions, which how to number invoices covers.

What the rate field accepts

The rate is a percentage typed as a number. Tax rates run up to 100% and discounts up to 100%; a rate above the ceiling is refused with the message “The tax rate cannot exceed 100%.”, and a negative one with “The tax rate cannot be negative.”. A rate can carry up to four decimal places, so a fictional rate of 8.875% on 100.00 in added-on-top mode is accepted and produces a tax of 8.88 after rounding half away from zero; a fifth decimal place is refused with “The tax rate can have at most four decimal places.”. A trailing percent sign is tolerated, so 20% is read as 20. The rate field also prefers a fraction when it meets a comma: 8,875 typed as a rate is read as 8.875%, where the same characters in a price field are read as 8,875.00, because a comma before exactly three digits, after a whole part other than zero, is thousands grouping there. With a zero in front the grouping rule does not apply and the three digits are too many for a price, so 0,875 in a price field is refused with “Enter a valid unit price with at most 2 decimal places.”. Something that is not a number at all — the word twenty, say — is refused with “Enter a valid tax rate.”.

What the generator does and does not do here

It applies the rate you type, in the mode you select, to the taxable base the engine has already worked out, and prints the result beside the label you chose. Everything in the sections above is that one operation seen from different angles. It does not look up a rate, decide whether a sale is taxable, validate a tax number, apply per-jurisdiction tax rules, or file anything. It does not convert between currencies: the 10 currency symbols on offer are labels printed on the document, and no exchange rate is applied. It is a document generator, not an accounting system and not tax advice, and it stores nothing — close the tab and the document is gone, so download the PDF.

For the arithmetic underneath the tax line — whole cents, rounding once at the line, and the full order of operations from subtotal to balance due — see how invoice totals are computed. For the two tax modes treated on their own, with the overstatement worked at the same rates and the no-tax mode alongside them, see inclusive vs. exclusive tax arithmetic. The guides index lists everything else on this site, including what to put on an invoice and what payment terms mean.

Questions

Why did the total not change when I switched to “already included”?

Because in that mode the tax is found inside the prices rather than added to them. A one-line document for 120.00 at 20% has a total of 120.00 in the no-tax mode and 120.00 in the already-included mode — the same figure; the difference is that the second prints a tax line of 20.00 and the first prints none. Switching to added on top is what changes the total, to 144.00.

Why does 120.00 at 20% show 24.00 of tax instead of 20.00?

The mode is set to added on top, so the engine treats 120.00 as a net price and adds 20% of it. If 120.00 already contains the tax, the already-included mode extracts 20.00 by dividing by 1.20 and leaves the total at 120.00. The figures in the first case are not an arithmetic error; they are the right answer to a different question.

Does a discount come off before or after the tax in the already-included mode?

Before, in both modes. A fictional one-line document for 120.00 at 20% with a 10% discount has a subtotal of 120.00, a discount of 12.00 and a taxable base of 108.00. In the already-included mode the tax inside that base is 18.00 and the total is 108.00; in the added-on-top mode the tax is 21.60 and the total 129.60. The discount is taken from the subtotal first, so the tax follows what was actually charged.

What does the tax label do?

It names the line and nothing else. Left blank, the engine calls the line “VAT (included)” in the already-included mode and “Tax” in the added-on-top mode; typed as GST, it reads “GST”. The mode decides the figures; the label decides the word beside them.

What rates can I enter?

Any rate from zero up to 100%, with up to four decimal places. A rate above the ceiling is refused with “The tax rate cannot exceed 100%.”, a negative one with “The tax rate cannot be negative.”, and one with a fifth decimal place with “The tax rate can have at most four decimal places.”. A trailing percent sign is ignored, so 20% and 20 are read the same way.

Does the generator know whether my prices should be shown inclusive of tax?

No. It applies the rate you type in the mode you select and prints the result; it does not look up a jurisdiction, validate a tax number or decide whether a sale is taxable. Which mode applies to your prices is a question for your tax authority’s own guidance or an accountant who knows your situation, as the closing section of this guide says. Nothing on this site is tax or legal advice.

What the tool knows about your tax, which is nothing

Rates, registration thresholds, which goods are exempt or zero-rated, whether you must charge at all, and how cross-border sales are treated vary enormously between countries and, in the United States, between states and localities. A rate that is right for one customer can be wrong for the next one down the road. None of that is modeled here. The tool applies the rate you type, in the mode you select, and prints the result — it does not look up your jurisdiction, validate a tax number, or decide whether a sale is taxable.

That division of labor is deliberate, but it does put the substantive question on you. If you are unsure whether to charge, at what rate, or whether your prices should be shown inclusive of tax, that is a question for your tax authority's own guidance or an accountant who knows your situation. This page explains arithmetic, not obligations, and nothing on this site is tax or legal advice.