Invoice Generator

invoice-generator.comcontributed by Samuele Ongaro

YES

Replaceable in one session with an AI coding agent.

Fills in an invoice in the browser and hands back a PDF, with saved clients and line items so the next one takes a minute.

Promptfree, for everyone, and the only version there is
Build me an invoicing tool that replaces the online invoice generators: a proper invoice, numbered correctly, that I still have in five years.

STACK
- Node 20+ with Fastify, server-rendered HTML
- SQLite through better-sqlite3, WAL mode
- PDF generated server-side from HTML with a headless browser, or with a PDF library if you want no browser on the box
- Caddy in front

THE DATA MODEL
- businesses: id, name, address, tax_id, vat_number, iban, logo_path, default_currency, default_terms, invoice_prefix, next_number
- clients: id, business_id, name, address, tax_id, vat_number, email, currency, payment_terms_days, notes
- invoices: id, business_id, client_id, number, issued_on, due_on, currency, status, subtotal_cents, tax_cents, total_cents, notes, terms, pdf_path, pdf_hash, sent_at, paid_at, voided_at, void_reason
- lines: id, invoice_id, position, description, quantity, unit_price_cents, tax_rate, discount_percent
- payments: id, invoice_id, amount_cents, paid_on, method, reference
- number_sequences: business_id, year, last_number — numbering is a table, not a max() query
- Every amount in integer cents with its currency. Never a float. Say why in a comment: 0.1 + 0.2 is the oldest bug in billing

NUMBERING, WHICH IS A LEGAL MATTER IN MOST COUNTRIES
- Sequential with no gaps, per business and per year, allocated inside the transaction that creates the invoice
- A draft has no number; a number is taken only when the invoice is issued
- An issued invoice is never deleted and never edited. A mistake is voided with a reason and replaced by a credit note that references it
- A credit note is an invoice with negative lines and its own sequence
- The rules differ by country: the README says which assumptions were made, and the sequence format is configurable

TAX
- Per-line tax rate, and the totals broken out by rate — most tax authorities require the breakdown, not just the total
- Reverse charge for EU cross-border business customers, with the required sentence printed and the VAT number of both parties shown
- Zero-rate and exempt are different things and are stored differently
- A tax rate is stored on the line at the time of issue. Changing a rate later must never alter an invoice already issued

THE DOCUMENT
- One template that looks like an invoice a bookkeeper has seen before: issuer, client, number, dates, lines, tax breakdown, total, payment details, terms
- The PDF is generated once at issue and stored, with its hash. Regenerating must produce the same bytes or the original is served — an invoice that changes after being sent is not an invoice
- A public link to view it, unguessable and revocable
- Multi-currency, with the exchange rate and its date recorded if the accounts are kept in another currency

GETTING PAID
- Payment details on the document: bank transfer, or a link to a payment page
- Partial payments recorded, with the balance shown
- Status derived, never typed: draft, issued, overdue, partly paid, paid, void
- Reminders before and after the due date, on a schedule the business sets, each one recorded so nobody is chased twice in a day

RECURRING
- A template and a cadence; the worker issues the next one and emails it
- Idempotent: the worker can run twice without issuing twice
- A recurring series can be paused, and pausing does not renumber anything

WHAT COMES OUT
- Export every invoice as PDF and the data as CSV or JSON, per period
- A report by client, by month, by tax rate
- Everything must be exportable in one command, because the point of leaving a SaaS is not being locked into the next one

THE INTERFACE
- One screen to write an invoice: client, lines, done. Totals update as you type
- The list shows number, client, total, status, due date
- Dark and light, one accent, and a print stylesheet that matches the PDF

OPERATIONS
- .env: DATABASE_PATH, PDF_PATH, BASE_URL, SMTP_URL, SESSION_SECRET
- Migrations on boot, each once
- Backup covers the database and the PDF directory, and the restore is tested
- Health endpoint that checks disk space and renders a one-line PDF

WHAT MATTERS MOST
Numbering and immutability. Build the sequence allocation, the issue transaction and the stored PDF first, and try to break them: two invoices issued in the same millisecond, a voided one, a year boundary. Everything else is a form — but an invoice with a duplicate number is a conversation with an accountant.

Give me the repository, migrations, .env.example, a seed business with three clients and five invoices, and a README with deploy steps behind Caddy and a note on what to check with a local accountant.

What you lose

  • A hosted history of every invoice you issued, which you would otherwise have to store yourself
  • A template that already looks professional
  • Currency and tax formatting handled for several countries

If you would rather not build

  • A spreadsheet template, which many freelancers never outgrow
  • Stripe Invoicing, if you already use Stripe

What it costs

as published on their pricing page

PlanBilled monthlyBilled yearlyLast read
—$10/mo——

Their pricing page is where these came from. Seeing a different price? Tell us.

The escape hatch

open source · no votes, no paid placement

Crater

$0

Self-hosted invoicing with clients, estimates and a customer portal.

crater-invoice-inc/craterfree · open source

WeasyPrint

$0

Turns an HTML invoice into a properly paginated PDF.

Kozea/WeasyPrintfree · open source

Why this verdict

our own opinion · changed only by a person

92/100

Verdict yes at 92. An invoice is a form and a PDF. Gapless numbering and never regenerating an issued document are the two rules that matter.

History

tracked since 10 Aug 2026 · nothing is ever overwritten

Interest · last 30 dayspeak 4/day
views02430 Aug4 Sept9 Sept14 Sept19 Sept24 Sept28 Sept
— views— prompt copies none yet— votes none yet

Questions about Invoice Generator

answered from the record above

Is Invoice Generator free?

No — the plan we track is $10 a month. Around $10/month billed monthly for the account tier with saved clients and history.

Can you replace Invoice Generator by building your own?

YES. Replaceable in one session with an AI coding agent. Replacement score 92 out of 100, build time one session. Read what you lose before you decide.

How much does Invoice Generator cost?

$10 a month on Pro — $120 a year. Recorded 10 Aug 2026.

What do you lose by replacing Invoice Generator?

A hosted history of every invoice you issued, which you would otherwise have to store yourself; A template that already looks professional; Currency and tax formatting handled for several countries. If any of those carry weight for you, keep paying.

Is there an open-source alternative to Invoice Generator?

Yes: Crater, WeasyPrint. The prompt on this page is for when you want it your way instead.

Related entries

same category first, most replaced first

All 18 in Time tracking & invoicing

Not sending yet

Every week, something stops being worth paying for.

New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.

free forever · no tracking pixel · stored here, never passed to anyone

Esc