CSV Format Reference for Batch Invoice Generation
Quick Start
Each row in your CSV represents one invoice. The first row must be a header row with column names. Column names are case-insensitive and support several common aliases.
Minimum viable CSV (3 invoices):
client_name,invoice_no,issue_date,item_description,item_quantity,item_price
Acme Corp,INV-001,2026-04-01,Web design,1,2500
TechStart,INV-002,2026-04-01,Consulting,8,150
Blue Sky Ltd,INV-003,2026-04-15,Monthly retainer,1,1800
Required Fields
These fields must be present and non-empty for a row to be valid:
| Field | Accepted column names |
|---|---|
| Client name | client_name, client, to_name, company, customer |
| Invoice number | invoice_no, invoice_number, inv_no, number |
| Issue date | issue_date, date, invoice_date |
| Item description | item_description, description, item_desc, service, item1_desc |
| Item quantity | item_quantity, quantity, qty, hours, item1_qty |
| Item unit price | item_price, unit_price, rate, price, amount, item1_price |
Optional Fields
| Field | Accepted column names | Default |
|---|---|---|
| Due date | due_date, payment_due | — |
| Currency | currency | EUR |
| Item tax % | item_tax, tax, vat, item1_tax | 0 |
| Client email | email, client_email, to_email | — |
| Client address | address, client_address, to_address | — |
| Client VAT number | vat_number, client_vat, tax_id | — |
| Notes | notes, note, memo | — |
| Payment terms | payment_terms, terms | — |
| Discount % | discount | 0 |
Multi-Item Invoices
To add multiple line items to a single invoice, use numbered column suffixes item1_, item2_, and so on:
client_name,invoice_no,issue_date,item1_desc,item1_qty,item1_price,item2_desc,item2_qty,item2_price,currency
Acme Corp,INV-001,2026-04-01,Design phase,1,1500,Development phase,20,100,EUR
TechStart,INV-002,2026-04-01,Strategy session,2,500,Implementation,40,90,EUR
Up to 10 line items are supported per invoice (item1_ through item10_). Each numbered group follows the same pattern:
| Suffix | Meaning |
|---|---|
itemN_desc | Line item description |
itemN_qty | Quantity |
itemN_price | Unit price |
itemN_tax | Tax rate in % (optional, defaults to 0) |
If you use the single-item column names (item_description, quantity, unit_price) they map to the first item only.
JSON Alternative Format
Instead of a CSV you can upload a .json file. The format is a flat array of objects where keys match the same column names as the CSV:
[
{
"client_name": "Acme Corp",
"invoice_no": "INV-001",
"issue_date": "2026-04-01",
"item1_desc": "Web design",
"item1_qty": 1,
"item1_price": 2500,
"currency": "EUR"
},
{
"client_name": "TechStart",
"invoice_no": "INV-002",
"issue_date": "2026-04-01",
"item1_desc": "Consulting",
"item1_qty": 8,
"item1_price": 150,
"currency": "USD"
}
]
Multi-item syntax works identically: use item1_desc, item2_desc, etc.
Date Format
Dates must be in ISO 8601 format: YYYY-MM-DD (for example 2026-04-01). Other formats such as 01/04/2026 or April 1, 2026 may not parse consistently across all browsers and should be avoided.
Currency Codes
Use standard ISO 4217 currency codes. Supported codes: EUR, USD, GBP, CHF, SEK, NOK, DKK, HRK, RSD, BAM, PLN, CZK, HUF, RON. If the currency column is omitted, EUR is used as the default.
Download Sample Templates
Copy and save these ready-made templates to get started immediately.
Single-item invoices:
client_name,invoice_no,issue_date,item_description,item_quantity,item_price,currency,notes
Acme Corp,INV-2026-001,2026-04-01,Web design services,1,2500,EUR,
TechStart GmbH,INV-2026-002,2026-04-01,Monthly retainer,1,1800,EUR,Net 30
Blue Sky Ltd,INV-2026-003,2026-04-15,Consulting hours,12,150,USD,
Multi-item invoices:
client_name,invoice_no,issue_date,item1_desc,item1_qty,item1_price,item2_desc,item2_qty,item2_price,currency
Acme Corp,INV-2026-001,2026-04-01,Design phase,1,1500,Development phase,20,100,EUR
TechStart GmbH,INV-2026-002,2026-04-01,Strategy session,2,500,Implementation,40,90,EUR
You can also download the sample CSV file directly.
Column Mapping Notes
- Column names are case-insensitive —
Client_Name,client_name, andCLIENT_NAMEall work the same way - Extra columns that do not map to any invoice field are silently ignored
- If auto-detection misses a column, use the Column Mapper (step 2 of the batch flow) to assign it manually
- Saved mapping templates let you skip the mapping step on subsequent uploads of the same CSV structure
- For the full step-by-step workflow, see How to Generate Multiple Invoices from CSV