Invoice Generator
Build an invoice with line items, tax, discount and totals, then print it or save it as a PDF straight from your browser.
Build a clean invoice with line items, tax and totals, ready to print or save as PDF from your browser.
Invoice
Invoice
INV-2026-014
From
Ada Lovelace
12 Analytical Way London, EC1A 1BB VAT GB123456789
Bill to
Acme Corporation
500 Enterprise Road New York, NY 10001
| Description | Qty | Rate | Amount |
|---|---|---|---|
| Landing page design | 1 | $1,800.00 | $1,800.00 |
| Component library build | 24 | $85.00 | $2,040.00 |
| Accessibility audit | 1 | $450.00 | $450.00 |
| Subtotal | $4,290.00 | ||
| VAT 20% | $858.00 | ||
| Total due | $5,148.00 | ||
Nothing is stored or sent. Copy the HTML, open it in a browser and print to PDF. This produces the document; chasing the payment is a different job and needs a service that can send email on a schedule.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Invoice INV-2026-014</title>
<style>
@media print { body { margin: 0 } .no-print { display: none } }
body { font-family: -apple-system, Segoe UI, Roboto, Arial, sans-serif; color: #111827; max-width: 800px; margin: 40px auto; padding: 0 24px; }
</style>
</head>
<body>
<table width="100%" cellpadding="0" cellspacing="0" style="border-collapse:collapse;margin-bottom:32px">
<tr>
<td style="vertical-align:top">
<h1 style="margin:0;font-size:28px;letter-spacing:-0.5px">Invoice</h1>
<p style="margin:4px 0 0;color:#6b7280">INV-2026-014</p>
</td>
<td style="vertical-align:top;text-align:right;color:#6b7280;font-size:14px">
</td>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0" style="border-collapse:collapse;margin-bottom:32px">
<tr>
<td style="vertical-align:top;width:50%">
<p style="margin:0 0 6px;font-size:11px;text-transform:uppercase;letter-spacing:1px;color:#6b7280">From</p>
<p style="margin:0;font-weight:600">Ada Lovelace</p>
<p style="margin:4px 0 0;color:#6b7280;font-size:14px;white-space:pre-line">12 Analytical Way
London, EC1A 1BB
VAT GB123456789</p>
</td>
<td style="vertical-align:top;width:50%">
<p style="margin:0 0 6px;font-size:11px;text-transform:uppercase;letter-spacing:1px;color:#6b7280">Bill to</p>
<p style="margin:0;font-weight:600">Acme Corporation</p>
<p style="margin:4px 0 0;color:#6b7280;font-size:14px;white-space:pre-line">500 Enterprise Road
New York, NY 10001</p>
</td>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0" style="border-collapse:collapse;font-size:14px">
<thead>
<tr>
<th style="text-align:left;padding:0 0 8px;font-size:11px;text-transform:uppercase;letter-spacing:1px;color:#6b7280;border-bottom:2px solid #111827">Description</th>
<th style="text-align:right;padding:0 0 8px;font-size:11px;text-transform:uppercase;letter-spacing:1px;color:#6b7280;border-bottom:2px solid #111827">Qty</th>
<th style="text-align:right;padding:0 0 8px;font-size:11px;text-transform:uppercase;letter-spacing:1px;color:#6b7280;border-bottom:2px solid #111827">Rate</th>
<th style="text-align:right;padding:0 0 8px;font-size:11px;text-transform:uppercase;letter-spacing:1px;color:#6b7280;border-bottom:2px solid #111827">Amount</th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding:10px 0;border-bottom:1px solid #e5e7eb">Landing page design</td>
<td style="padding:10px 0;border-bottom:1px solid #e5e7eb;text-align:right">1</td>
<td style="padding:10px 0;border-bottom:1px solid #e5e7eb;text-align:right">$1,800.00</td>
<td style="padding:10px 0;border-bottom:1px solid #e5e7eb;text-align:right">$1,800.00</td>
</tr>
<tr>
<td style="padding:10px 0;border-bottom:1px solid #e5e7eb">Component library build</td>
<td style="padding:10px 0;border-bottom:1px solid #e5e7eb;text-align:right">24</td>
<td style="padding:10px 0;border-bottom:1px solid #e5e7eb;text-align:right">$85.00</td>
<td style="padding:10px 0;border-bottom:1px solid #e5e7eb;text-align:right">$2,040.00</td>
</tr>
<tr>
<td style="padding:10px 0;border-bottom:1px solid #e5e7eb">Accessibility audit</td>
<td style="padding:10px 0;border-bottom:1px solid #e5e7eb;text-align:right">1</td>
<td style="padding:10px 0;border-bottom:1px solid #e5e7eb;text-align:right">$450.00</td>
<td style="padding:10px 0;border-bottom:1px solid #e5e7eb;text-align:right">$450.00</td>
</tr>
<tr>
<td colspan="2"></td>
<td style="padding:6px 0;text-align:right;color:#6b7280">Subtotal</td>
<td style="padding:6px 0;text-align:right;">$4,290.00</td>
</tr>
<tr>
<td colspan="2"></td>
<td style="padding:6px 0;text-align:right;color:#6b7280">VAT 20%</td>
<td style="padding:6px 0;text-align:right;">$858.00</td>
</tr>
<tr>
<td colspan="2"></td>
<td style="padding:6px 0;text-align:right;font-weight:bold;font-size:16px;border-top:2px solid #111827">Total due</td>
<td style="padding:6px 0;text-align:right;font-weight:bold;font-size:16px;border-top:2px solid #111827">$5,148.00</td>
</tr>
</tbody>
</table>
<div style="margin-top:36px;padding-top:16px;border-top:1px solid #e5e7eb;color:#6b7280;font-size:13px;white-space:pre-line">Payment due within 14 days by bank transfer.
Late payments are subject to interest at 8% above base rate.</div>
</body>
</html>About the invoice generator
An invoice is a document, not a service. Producing one needs no account, no subscription and no data leaving your machine, which is why almost every invoice tool that asks you to sign up is selling you something other than the invoice.
This calculates the line totals, applies discount before tax in the order accountants expect, and produces a clean printable document. Nothing is stored, so nothing can be lost or leaked.
The part it does not do is chase the payment. Reminders and escalations need a service that can send email on a schedule, which is a different kind of product entirely.
How to use it
- 1Fill in your details and the client's.
- 2Add line items as description, quantity and rate separated by a vertical bar.
- 3Set the tax rate and any discount.
- 4Copy the HTML, open it in your browser, and print to PDF.
Questions
Is my invoice data stored anywhere?
No. Everything is calculated in your browser and nothing is sent to a server. Close the tab and it is gone, so save the PDF.
How do I get a PDF?
Copy the HTML, save it as a .html file, open it in your browser and press Ctrl+P or Cmd+P, then choose Save as PDF. The print styles are already set up.
Is discount applied before or after tax?
Before. The discount reduces the subtotal, then tax is calculated on the reduced amount, which is the order tax authorities expect.
Can it chase late payments?
No, and that is a deliberate limit. Sending reminders on a schedule needs a service running around the clock with your client's email address stored. This produces the document only.
Does it handle VAT or sales tax?
It applies one rate to the whole invoice and lets you label it. Multiple rates on different lines need an accounting package.