← All posts

CSV Format Reference for Batch Invoice Generation

5 min read

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:

FieldAccepted column names
Client nameclient_name, client, to_name, company, customer
Invoice numberinvoice_no, invoice_number, inv_no, number
Issue dateissue_date, date, invoice_date
Item descriptionitem_description, description, item_desc, service, item1_desc
Item quantityitem_quantity, quantity, qty, hours, item1_qty
Item unit priceitem_price, unit_price, rate, price, amount, item1_price

Optional Fields

FieldAccepted column namesDefault
Due datedue_date, payment_due
CurrencycurrencyEUR
Item tax %item_tax, tax, vat, item1_tax0
Client emailemail, client_email, to_email
Client addressaddress, client_address, to_address
Client VAT numbervat_number, client_vat, tax_id
Notesnotes, note, memo
Payment termspayment_terms, terms
Discount %discount0

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:

SuffixMeaning
itemN_descLine item description
itemN_qtyQuantity
itemN_priceUnit price
itemN_taxTax 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-insensitiveClient_Name, client_name, and CLIENT_NAME all 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