Invoice & Receipt Generator

Fill in the items and download a clean invoice or receipt PDF — totals in exact cents, built in your browser.

Informational content. This tool does not replace advice from a qualified professional. Use the results as a reference only.

How to use

  1. Fill in who is charging and who is being charged, then add one line per item with description, quantity and unit price.
  2. Add a discount, a tax rate or an extra charge if you need them — the subtotal and the total update as you type.
  3. Click "Generate PDF" to download the document. Everything is calculated and drawn in your browser; nothing is sent to any server.

About this tool

This tool turns a short form into a printable invoice or receipt: a header with the dates and the two parties, one line per item, the totals and room for payment instructions. It is what a freelancer, a small studio or a shop sends a client so they know what they owe and how to pay it. What it is not — and in Brazil this is the part worth reading twice — is a nota fiscal. An NF-e or NFS-e is issued through the Receita Federal or your city hall, carries an access key and a digital signature, and is the only document that settles a tax obligation. Nothing generated here does that.

The arithmetic is the part invoice generators get quietly wrong. Prices written as decimal numbers in JavaScript are binary floats: 0.1 + 0.2 famously comes out as 0.30000000000000004, and twenty lines added that way drift a cent from the sum your client checks by hand. Here every amount becomes whole cents the moment you type it and every quantity becomes thousandths, and rounding happens half up, on integers, only where a real cent has to be chosen. The order matters as much as the rounding, so it is printed on the document: discount first, tax on the discounted amount, shipping after tax.

The PDF is drawn on your device with jsPDF, an open-source library served from this site and downloaded only when you generate your first document. Your client's name, your tax ID, the amounts — none of it is uploaded or stored, which is the whole point of doing this in the browser. Two honest limits: the standard PDF fonts cover the Latin alphabet, so accents print perfectly while other writing systems are dropped with a warning; and the tool has no memory — no client list, no numbering, nothing saved when you close the tab.

The formula

Every amount is an integer number of cents and every quantity an integer number of thousandths. Line total = round(unit price × quantity ÷ 1000). Subtotal = sum of the line totals. Discount = round(subtotal × discount rate). Taxable amount = subtotal − discount. Tax = round(taxable amount × tax rate). Total = taxable amount + tax + extra charge. Rounding is half up and happens only at those four points.

Frequently asked questions

Does my invoice data leave my browser?

No. Client names, tax IDs, descriptions and amounts are read, calculated and drawn into the PDF by JavaScript on your own device. Nothing is uploaded, nothing is stored, and no one at Vai.la sees the document. The only download is the PDF library itself, from vai.la.

Is this a nota fiscal? Can I send it instead of an NF-e?

No — this is the one thing not to get wrong. A nota fiscal is issued through the Receita Federal or your city hall, gets an access key and a digital signature, and is what satisfies a tax obligation. This is a billing document: normal to send a client, useless as a fiscal record. If your activity requires an NF-e, issue it separately and ask your accountant.

Why do the cents always add up here?

Because no amount is ever a decimal number internally. Prices are stored as whole cents and quantities as thousandths, so sums are exact and each line is rounded once. A generator that multiplies floats can print a total one cent away from the sum of its own lines.

Should I type 1.234,56 or 1,234.56?

Either. The separator that appears last is the decimal one, so both write the same amount. With a single separator the number counts as thousands only when the grouping is perfect: 1.500 is one thousand five hundred, while 1.5 and 0,005 are decimals. A malformed number is refused, not silently mistotalled.

Can I invoice in dollars, euros or pounds?

Yes. Pick the currency at the top and the symbol and the separators follow it, on screen and in the PDF. It never converts between currencies — it writes the amounts you type.

Why did some characters disappear from my PDF?

The standard PDF fonts cover the Latin alphabet only. Accented Portuguese, Spanish, French and German text prints exactly as typed; Devanagari, Cyrillic, Greek, Chinese and Japanese characters, and emoji, are removed, with a warning under the button when that happens.

Related tools

Long links? Shorten them for free

Vai.la turns any URL into a short link with click statistics, QR Code and your own biolink.

Vai.la is not responsible for how the tools are used or for decisions made based on their results.