Skip to main content

CSV overview

Real-world invoice CSVs come in three fundamentally different shapes. Nuntiq's inbound framework ships a global format template for each. The two whose column order is stable (one-invoice-per-file and repeated-header) also ship a column-named variant, for a total of five.

The three shapes

One invoice per file. Every file holds exactly one invoice. Row 1 is the header (invoice number, dates, party names, totals). Row 2 onwards are line items. Consultants pick this when the sender exports one invoice at a time.

Repeated header per line. Every row is a line item, and header-level fields repeat on each line. A new invoice starts on any change of the invoice number. Consultants pick this when the sender's ERP flattens the invoice into "one row per line item" and doesn't emit a separate header row. This is the most common shape for accounting-system exports.

Line-type discriminator. Column 1 is a record-type flag: H for header, L for line item, T for tax detail, D for cash discount, C for invoice-level charges (freight, handling, insurance, …). The rest of each row's columns are interpreted according to the flag. Consultants pick this when the sender's file already models the different record types explicitly, which is typical for EDI-ish CSVs.

Column names vs positional

For the one-invoice-per-file and repeated-header shapes, we ship two variants:

  • Column names. The first physical row is a header row that names each column. The seed's field locators reference those names (InvoiceNumber, DueDate, …). Choose this when the sender consistently emits the same header row.
  • Positional. No header row. The seed's locators use col_N, 1-based. Choose this when the sender omits the header row or when the column names drift between files but the column order is stable.

The line-type discriminator shape is positional only. Each record type (H, L, T, D, C) carries its own column layout, so a single header row can't describe the file. Any preamble the sender includes is skipped via the format's from_line parse setting.

Parse settings

Each seed carries its own parse_settings (delimiter, has-header-row, skip rows). Adjust those in the format detail page's Basic Information rail if the sender's file uses a semicolon or tab, a BOM, or a preamble that needs skipping.

Field coverage

Every seed maps a realistic invoice subset out of the box: header dates and totals, supplier and customer, bill-to and ship-to addresses, payment details, and per-line product / quantity / price / totals. The line-type seed adds per-invoice tax detail rows and cash-discount rows.