Back to Changelog

ZUGFeRD 2.4 + Factur-X 1.08

April 13, 2026

New output format versions selectable in the finalization dialog, plus a UI for sub-line-items with type selection (DETAIL/INFORMATION/GROUP). Existing 2.3 / 1.07 stays available.

ZUGFeRD 2.4

Latest German hybrid PDF + XML format, selectable via formatOptions.version.

Factur-X 1.08

Latest French hybrid format, selectable via formatOptions.facturxVersion.

Sub-line items

Per invoice line: add sub-items with type DETAIL/INFORMATION/GROUP and expand/collapse.

12 languages updated

bg, cs, de, en, es, fr, hu, it, nl, pl, pt, ro

New Output Formats

ZUGFeRD 2.4 (DE) and Factur-X 1.08 (FR) join the format dropdown in the finalization dialog. Existing versions 2.3 / 1.07 stay the default and remain fully supported.

ZUGFeRD

Choose between 2.3 (default) and 2.4 via formatOptions.version.

Factur-X

Choose between 1.07 (default) and 1.08 via formatOptions.facturxVersion.

Version Selector in the Dialog

Picking ZUGFeRD or Factur-X in the finalization dialog now reveals a new „Version“ dropdown right next to the format. Default values are 2.3 / 1.07 so existing workflows stay byte-stable; pick 2.4 / 1.08 when you need the newer revision.

The selection is forwarded to the API as formatOptions — see the REST API mapping below.

Sub-Line-Items (Unterpositionen)

Each invoice line now has a „+“ button to add sub-items. Sub-items appear indented under the main line, with an expand/collapse chevron. They support all standard fields (description, quantity, unit, price, tax rate, discount).

Sub-Item Types

DETAIL

Real detail line with quantity, price, and tax rate — counts toward totals.

INFORMATION

Pure info entry (notes, comments) — no impact on totals.

GROUP

Group/subtotal marker for structural readability.

REST API Mapping

Frontend formats map to backend format + version flag:

Frontend formatBackend formatformatOptions
zugferd-2.4zugferd{ version: '2.4' }
factur-x-1.08facturx{ facturxVersion: '1.08' }

PDF embedding (ZUGFeRD/Factur-X hybrid) works for both versions.

Example: ZUGFeRD 2.4 request with sub-items

json
1POST /api/v1/invoice/de/zugferd/generate
2 
3{
4 "invoice": {
5 "invoiceNumber": "RE-2026-100",
6 "type": "invoice",
7 "issueDate": "2026-04-13",
8 "currency": "EUR",
9 "seller": { "name": "Acme GmbH", "countryCode": "DE", "vatId": "DE123456789" },
10 "buyer": { "name": "Kunde AG", "countryCode": "DE" },
11 "items": [
12 {
13 "position": 1,
14 "description": "Projekt Q2 — Phase 1",
15 "quantity": 1,
16 "unitPrice": 10000.00,
17 "taxRate": 19,
18 "subItems": [
19 { "type": "DETAIL", "description": "Konzept", "netAmount": 3000.00 },
20 { "type": "DETAIL", "description": "Implementation", "netAmount": 6000.00 },
21 { "type": "INFORMATION", "description": "QA-Hinweis: extern abgenommen" },
22 { "type": "GROUP", "description": "Schulung", "netAmount": 1000.00 }
23 ]
24 }
25 ],
26 "subtotal": 10000.00,
27 "total": 11900.00
28 },
29 "formatOptions": {
30 "version": "2.4"
31 }
32}

Example: Factur-X 1.08 request

json
1POST /api/v1/invoice/fr/facturx/generate
2 
3{
4 "invoice": { /* ... */ },
5 "formatOptions": {
6 "facturxVersion": "1.08"
7 }
8}