How to Generate Multiple Invoices from CSV: A Step-by-Step Guide
Why Batch Invoicing Saves Hours Every Month
If you bill multiple clients on a regular cycle β weekly retainer clients, monthly subscribers, or recurring project work β creating each invoice manually is pure repetition. A freelancer with 10 recurring clients spends 30β45 minutes per billing cycle just on copy-paste work. At the end of the year that's nearly 10 hours wasted on formatting.
InvoiNova's batch generation feature lets you upload a spreadsheet of client data and download a ZIP of professionally formatted PDFs in one click. No account needed, no data sent to any server β everything runs in your browser.
What You Need Before You Start
- A CSV or JSON file with your invoice data (one row per invoice)
- Your own details saved in InvoiNova (name, address, email) β fill in the "From" section on the main form and generate one invoice to save them
- A modern browser (Chrome, Firefox, Safari, Edge β any recent version)
Your sender information is filled once from your saved profile. Each row in the CSV provides the client-specific data for that invoice.
Step 1 β Prepare Your CSV File
Open any spreadsheet app (Excel, Google Sheets, LibreOffice Calc) and create a sheet with the following columns:
| Column | Example |
|---|---|
client_name | Acme Corp |
invoice_no | INV-2026-001 |
issue_date | 2026-04-01 |
item_description | Web design services |
item_quantity | 1 |
item_price | 2500 |
currency | EUR |
Save the file as CSV (UTF-8 encoding). Column names are flexible β InvoiNova auto-detects common variations like client, invoice_number, date, description, qty, amount, and more.
For the complete list of supported column names, optional fields, and multi-item syntax, see the CSV Format Reference.
Step 2 β Open Batch Generate
In InvoiNova, look for the layers icon (stack of three chevrons) in the top-right navigation bar. Click it to open the Batch Generate panel.
If you have not saved your sender details yet, fill in the "From" section on the main invoice form first and click "Download PDF" once β this saves your details for use in batch generation.
Step 3 β Upload Your CSV
In the upload step, either:
- Drag and drop your
.csv(or.json) file onto the upload zone, or - Click the upload zone to open a file picker
InvoiNova reads the file locally in your browser β nothing is sent to any server. After a successful upload you will see: "X invoices found", where X is the number of data rows (header row not counted).
Step 4 β Map Your Columns
InvoiNova automatically maps recognized column names to invoice fields. You will see a two-column table:
- Left column: the header names from your CSV
- Right column: a dropdown showing which invoice field each column maps to
Most standard column names are detected automatically. If a column was not recognized, select the correct field from the dropdown. You can also save your mapping as a named template β next time you upload a CSV in the same format, load the template and skip the mapping step entirely.
Step 5 β Preview and Validate
Click Preview to see a summary of all invoices. Each row shows:
| Column | Description |
|---|---|
| # | Row number |
| Client | Client name from the CSV |
| Invoice No | Invoice number |
| Date | Issue date |
| Total | Calculated total (items Γ quantity + tax) |
| Status | β valid or β invalid with reason |
Rows with missing required fields (client name, invoice number, issue date, at least one item) are flagged as invalid. You can either fix the source CSV and re-upload, or check "Skip invalid rows" to generate only the valid ones.
Step 6 β Generate and Download
Click Generate PDFs. A progress bar tracks each invoice as it renders. When all invoices are done, a ZIP file downloads automatically to your default downloads folder.
Inside the ZIP, each PDF is named {invoiceNo}_{clientName}.pdf, for example INV-2026-001_Acme_Corp.pdf. The ZIP itself is named invoices_{date}.zip.
Common Errors & Troubleshooting
"0 invoices found" β Your file has no data rows. Verify you saved it in CSV format and that data rows follow immediately after the header row. An empty file or a header-only file produces this error.
"No valid invoices to generate" β All rows failed validation. Open the preview step to see which fields are missing. The most common cause is a missing invoice number or client name column that was not mapped correctly.
Row marked invalid: "items required" β The item description, quantity, or unit price column was not mapped. Go back to the column mapping step and assign those fields. Use the CSV format reference to check the expected column names.
Columns not auto-detected β Your column names use non-standard spellings. Either rename them to a recognised alias or map them manually in the mapping step. Auto-detection works on common English terms; custom column names like "Recipient" or "Betrag" will need manual mapping.
Progress bar freezes at 0% β PDF rendering requires the browser tab to be active. If you switch to another tab immediately after clicking "Generate PDFs", rendering can pause. Keep the InvoiNova tab in the foreground until the download starts.
Ready to Try It?
Prepare a CSV with three rows and try it now β no account, no sign-up, no data leaves your device. Open InvoiNova and click the layers icon in the top-right navigation.