CalcOak

Invoice Generator: build a clean PDF invoice in your browser without an account

From
Bill to
DescriptionQtyUnit price
Preview

How to use the invoice generator

Start with the "From" block: your name or business, the address lines you want printed and an email for queries. These details are remembered in your browser, so you only type them once. Fill in who you are billing, then check the invoice number and the two dates. The number starts at INV-0001 and moves on by one each time you come back after downloading, so INV-0007 becomes INV-0008. The due date is set 30 days after the invoice date, but you can shorten it to 14 or 7 days if that is what your contract says.

Add a line for each thing you are charging for: a short description, a quantity (hours, days or units) and a unit price. The preview updates as you type and shows the subtotal, any discount, tax at the rate you enter, and shipping or other charges. Pick a currency from the list or type your own symbol, drop in a logo if you have one, put your payment terms in the notes box and press Download PDF. The file is named after the invoice number, so INV-0008.pdf lands in your downloads folder next to the rest of the sequence.

Why use this rather than a template or an invoicing app

A spreadsheet template works until you need to send a PDF from your phone, or until someone nudges a cell and the total quietly stops adding up. Subscription invoicing services are excellent if you send fifty invoices a month, but for a freelancer who sends two, an account, a login and a monthly fee are a lot of overhead to print one total. This page draws the PDF with a small library running inside your browser; nothing about you or your client leaves your device, which matters when an invoice carries addresses and bank details.

The output keeps to the layout accountants expect: sender and recipient blocks, a numbered document with issue and due dates, itemised lines with right-aligned amounts, a totals section that shows tax as a separate figure, and your terms at the bottom. Long descriptions wrap onto extra lines, and a long list of items flows onto a second page with the column headings repeated. If you charge VAT or GST, enter the rate here and use the GST/VAT calculator linked below to double-check the figure before you send it.

Frequently asked questions

Is my invoice data sent to a server?+

No. The form, the preview and the PDF itself are all produced by JavaScript running in your browser, and the page makes no network requests once it has loaded. The only things stored are your own "From" block and the last invoice number, kept in your browser's local storage so you do not have to retype them. Clearing site data removes them.

How is tax worked out when there is also a discount?+

The discount is taken off the subtotal first, then tax is applied to the discounted amount, and shipping or other charges are added last without tax. That is the order most tax authorities expect for a trade or early-payment discount. If your shipping charge is itself taxable, add it as a normal line item instead of using the shipping box.

Can I invoice in a currency that is not in the list?+

Yes. Choose "Custom symbol" in the currency menu and type whatever prefix you want, for example CHF, R or kr. Amounts are then shown with two decimal places. The built-in currencies use standard formatting, so Japanese yen appear without decimals and Indian rupees with the rupee sign in the preview and the ISO code in the PDF.

Why did the invoice number change when I came back?+

When you download a PDF the tool remembers that number, and on your next visit it offers the next one in the sequence, keeping any zero padding: INV-0009 becomes INV-0010. You can overwrite it with anything you like, and the counter will continue from whatever you download next.

What image formats can I use for the logo?+

PNG, JPEG and WebP files work in both the preview and the PDF; the image is scaled to fit a box about 45 mm wide. A PNG with a transparent background looks best. The logo is held in memory only and is not saved between visits, so pick it again the next time you make an invoice.