Invoice Generator
Builds a printable invoice in your browser, reports both tax rounding methods and the penny between them, and says which fields are law rather than layout.
Enable JavaScript to change the document; what is below is the default, and it prints.
Sequential with no gaps is a rule about your whole series, which a tool that makes one document cannot enforce.
Their purchase order number, a project code, whatever the other side will search for.
One line each. Your tax registration number belongs here in most jurisdictions.
One a line. "Description | quantity | unit price | tax percent" is the full form; "3 x Licence @ 9.99" and "Hosting: 240" both work too. A line starting with # is a note.
Used for any line that does not carry its own rate.
Line by line, or once on the subtotal. Both are permitted in the EU and the UK if you are consistent, and they can differ by a penny. The document says which it used.
A percentage discount is spread across the lines in proportion, so the per-line tax still adds up to the total.
Empty uses the default. "Tax invoice", "Proforma invoice" and "Credit note" are different documents in some jurisdictions, so the word matters.
Invoice
From
Bucket Ltd
14 Example Street
London E1 6AN
VAT GB123456789
Billed to
A Client Ltd
1 Another Road
Manchester M1 2AB
| Description | Qty | Unit | Tax | Amount |
|---|---|---|---|---|
| Design work | 12 | £85.00 | 20% | £1,020.00 |
| Licence | 3 | £9.99 | 20% | £29.97 |
| Hosting for a year | 1 | £240.00 | 20% | £240.00 |
| Subtotal | £1,289.97 |
|---|---|
| Tax, line by line | £257.99 |
| Total | £1,547.96 |
Terms
Payment within 14 days by bank transfer.
- An invoice is a legal document in most places, with required fields that vary: a unique sequential number, your tax registration number, the customer's, the date of supply, and specific wording for a reverse charge or an exemption. This tool does the arithmetic and the layout, not the compliance.
- Sequential numbering usually means no gaps, which is a rule about your whole series rather than about one document. A tool that generates a number for each invoice separately cannot guarantee it.
Adding up an invoice is arithmetic until tax arrives. Then there are two defensible answers and they differ by pennies: tax worked out on each line and summed, or tax worked out once on the subtotal. Three lines of £9.99 at 20 percent is £6.00 of tax one way and £5.99 the other.
Both are permitted in the EU and the UK as long as you are consistent, and some authorities require one specifically. So this tool computes both, reports the difference, and prints which method the document used. A tool that quietly picks one is the reason an invoice total disagrees with an accounting system by a penny for a year.
The rest is layout, and the layout is deliberately plain: an invoice has to survive being printed by somebody else’s browser onto somebody else’s paper.
How to use
- Fill in the parties and the number. Your tax registration number belongs in the “from” block in most jurisdictions.
- Paste the lines.
Description | quantity | unit price | tax percentis the full form;3 x Licence @ 9.99andHosting: 240also work. - Print it. The browser’s own dialogue makes the PDF, which it does better than any tool could without a library, and it already knows the paper size.
Example
Twelve days of design work, three licences and a year of hosting, with 10 percent off:
Subtotal £1,289.97
Discount -£129.00
Net £1,160.97
Tax, line by line £232.19
Total £1,393.16
The discount is spread across the lines in proportion, which is why the per-line tax still adds up to the tax on the net. A discount applied only to the total would leave the two disagreeing.
Pitfalls
Rounding is a policy, not a preference. Pick one method, use it everywhere, and know that your accounting system has also picked one. The penny difference is where reconciliation goes wrong.
A percentage discount has to be spread across the lines. Otherwise the tax on each line no longer sums to the tax on the invoice, which an auditor will notice before you do.
Sequential numbering is about the series. Most tax authorities want no gaps. A tool that generates one document cannot guarantee that, so keep the sequence somewhere that persists.
The required fields vary. A unique number, both tax registration numbers, the date of supply as well as the date of issue, and specific wording for a reverse charge or an exemption. This tool does arithmetic and layout, not compliance.
“Invoice” is not a free choice of word. Tax invoice, proforma invoice and credit note are different documents with different effects in several jurisdictions. Set the heading deliberately.
Currency is a symbol here, not a conversion. There is no exchange rate in this tool, and an invoice in a currency the customer does not hold needs the rate and its date on it.
Keep the copy you sent. Not the tool, not the inputs: the document. An invoice is evidence, and regenerating it later from remembered inputs is not the same thing.
Compatibility
Runs in the browser: nothing is uploaded, and the document is built locally. The PDF comes from the browser’s print dialogue, which is available everywhere and produces a better result than a generated PDF would.
The arithmetic is a tested module, with the rounding helper putting the scaled amount through a precision step before rounding, because a double cannot hold 1.005: multiplying by a hundred gives 100.49999999999999 and rounding naively gives £1.00 where a person reading the invoice expects £1.01. The same trick, in both languages, is what keeps the server-rendered first paint and the hydrated document identical.
Both the arithmetic and the markup are mirrored in PHP and compared against the JavaScript on every build, with cases covering mixed tax rates, a fixed discount larger than the subtotal, taxed shipping, and the three-line 9.99 case that produces the penny.
The downloaded file carries its own stylesheet, so it prints the same on a machine that has never seen this site.
Frequently asked questions
Which rounding method should I use?
Can it make a PDF directly?
Is this a valid invoice?
How do I add my logo?
<img> in the header. The file is plain markup with one stylesheet, which is why
it is offered as a download rather than only as a print.