This invoice
Bill to
Line items
Totals
Invoice details
Notes & labels
Setup & library
Saved invoices
Saved invoices live in this browser only. Use Save to file for a backup you can keep or move to another computer.
Saved invoices live in this browser only. Use Save to file for a backup you can keep or move to another computer.
Everything stays in this browser. No account, no server — the invoice, your saved list and your logo never leave your device.
Fill in Your company (name, logo, address, tax ID), pick a template, currency and default tax rate, then Save as my default. Every new invoice starts pre-filled and the numbering continues automatically (INV-0007 → INV-0008).
Press Enter in any line to add the next one, Backspace on an empty line to remove it. Drag the ⋮⋮ handle — or use Alt + ↑/↓ — to reorder. The ⋯ button on a line opens per-line options: a unit ("hrs", "pcs"), a line discount and a line tax rate. A line with no tax rate of its own uses the invoice-wide rate.
The Discount in Totals applies to the whole invoice; Tax rate is the default for every line. When a line sets its own tax rate the summary just says "Tax", since the rate varies. If Amount paid is more than the total, the invoice shows a credit balance.
52 currencies with the correct decimals (JPY, KRW, VND use none) and symbol before or after the amount. Right-to-left layout mirrors the invoice document for Arabic, Hebrew and Persian — the editor itself stays left-to-right, and emails, phone numbers and addresses stay readable.
Click almost anything on the invoice — a heading, a line, the logo, the totals — and the editor jumps straight to that field.
Save keeps the invoice in this browser's storage; Saved invoices lists them. Export .json downloads a backup file you can keep or move to another computer; Import .json loads one back.
Download PDF uses your browser's own "Print → Save as PDF". In the print dialog, turn off "Headers and footers" and turn on "Background graphics" so the colours print.
Your browser prints its own page header and footer — the date, the page title and the file path. That text comes from the browser, not from this app, so it has to be switched off in the print dialog: