Home › Free tools › Bulk invoice generator
Bulk invoice generator
Billing several clients at the end of the month, and the work is already in a spreadsheet? Paste the rows (or open a CSV), and this page turns them into one invoice per invoice number or per client, checks them, and prints them all in one go: one invoice per page, saved as a single PDF. English, English + Arabic or English + Urdu labels. No signup, and nothing leaves your browser.
PDFs saved? Now make sure they get paid.
This page forgets everything when you close the tab. The free Kitebill app keeps your invoices in your browser: mark each one sent and it turns overdue by itself after the due date, and when the money lands you record the exchange rate you got and what arrived after fees. Bring your client list across with Clients CSV for the Kitebill app (in the app: Clients → Import CSV). Then send each invoice across with Save in the app in the list above: the app opens in a new tab with that invoice filled in and saves it when you click Save, one invoice per click. Free for 3 clients and 10 invoices; Pro is US$29 once for unlimited clients and invoices and CSV export.
How it works
- One row = one invoice line. The first row must be a header. Columns are matched by name, so their order doesn’t matter: Invoice (or Invoice no.), Client, Client email, Client address, Description (or Item, Service), Qty (or Quantity, Hours), Rate (or Unit price, Price), Amount (or Line total), Currency, Date, Due date, Tax %, Discount, PO and Notes.
- Rows are grouped into invoices. Rows with the same invoice number make one invoice. With no Invoice column, each run of rows for the same client (and date) makes one invoice, numbered from the prefix you set. A row with an empty Client belongs to the invoice above it, the way most spreadsheets are laid out.
- Each line is qty × rate. No Qty column means a quantity of 1; no Rate means the Amount is used. If both are there and qty × rate doesn’t match the Amount, the page tells you which row and uses qty × rate.
- Totals work like the single invoice generator: subtotal, minus the discount (an amount), plus tax % on what is left. The first value in a group wins for invoice-level columns (client details, currency, dates, tax, discount, PO).
- Everything is checked before you print: a missing client, a zero total, a due date before the invoice date, two currencies on one invoice, an invoice number used for two clients, unreadable numbers or dates, and negative amounts (reduce a sent invoice with a credit note instead).
Sample on this page (made-up clients): 5 rows become 3 invoices. INV-0101 Acme GmbH, 450 + 300 = €750.00; INV-0102 Northwind Labs, (12 + 6) × 40 = $720.00 with PO-7781; INV-0103 Gulf Trading LLC, 2,500 + 5% tax = AED 2,625.00.
Getting the rows out of your spreadsheet
- Excel, Google Sheets, Numbers: select the cells including the header row, copy, and paste into the box. They arrive tab-separated, which the page reads.
- CSV file: File → Save as (Excel) or File → Download → CSV (Google Sheets), then Open a CSV file. Comma and semicolon CSVs both work, and quoted cells may contain commas or line breaks.
- Dates: 2026-10-31 is never ambiguous. For 03/10/2026, tell the page whether your dates are day first or month first.
- Limits: up to 2,000 rows and 100 invoices at a time. The single invoice generator takes up to 50 lines per invoice.
Not sure the bank details in How to pay are right? They are checked for typos as you type (IBAN, SWIFT/BIC, routing number, sort code), the same check as the free IBAN checker. A pass doesn’t prove the account exists.
What this page doesn’t do
It doesn’t email the invoices to your clients, it doesn’t keep a copy, and it can’t open .xlsx files (copy and paste the rows, or save as CSV). It prints what your rows say: check the totals in the list before you send anything. Whether an invoice is a valid tax invoice where you live depends on your country and registration; this is not tax or legal advice.
Keeping track after you send them
The free Kitebill app remembers each invoice until it is paid and marks it overdue after the due date; this page doesn’t. Clients CSV for the Kitebill app gives you your client list in its import format (Clients → Import CSV), and Save in the app sends one invoice at a time to the app for you to review and save. There is no bulk invoice import in the app. Free for 3 clients and 10 invoices; Pro is US$29 once.
Billing the same clients every month?
Plan the dates and numbers with the recurring invoice schedule. Billing by the hour? The timesheet to invoice tool rounds and groups the hours first. Choosing a numbering format? Try the invoice number generator. Wondering whether a spreadsheet or an invoicing app suits you better? Read invoice spreadsheet or invoicing app.
More free tools
Questions
How do I make many invoices at once from a spreadsheet?
Put one invoice line per row with a header row (for example Invoice, Client, Description, Qty, Rate), copy the rows with the header and paste them here, or save the sheet as CSV and open the file. Rows with the same invoice number become one invoice. Check the list, then Print all / Save as one PDF prints every invoice on its own page.
What columns does the bulk invoice generator understand?
Invoice (number), Client, Client email, Client address, Description, Qty (or Hours), Rate (or Unit price), Amount, Currency, Date, Due date, Tax %, Discount, PO and Notes. Only a Rate or Amount column and a Description or Client column are required; anything else is optional and other columns are ignored. If there is no Qty, the quantity is 1; if there is no Rate, the Amount is used.
What if my sheet has no invoice numbers?
Then each run of rows for the same client (and the same date, if there is a Date column) becomes one invoice, and the numbers are given in order from the prefix and the next number you set, for example INV-0001, INV-0002. Rows with an empty Client belong to the invoice above them.
Can I open an Excel file directly?
Not an .xlsx file. In Excel, Google Sheets or Numbers, either select the rows including the header and paste them into the box, or save / download the sheet as CSV and open that. Tab-, comma- and semicolon-separated rows all work.
Does this page email the invoices or save them?
No. It builds the invoices in your browser and prints them; it doesn’t send email, doesn’t store anything and makes no requests to other sites. Save the PDF before you close the tab. To change one invoice, use Edit in the generator on its row.
Can the invoices be in Arabic or Urdu?
Yes. Choose English + Arabic or English + Urdu: headings such as Invoice no., Bill to and Total due print in both languages; your own text prints as you typed it.