Factur-X / ZUGFeRD e-invoice format
Hybrid PDF/A-3 with embedded UN/CEFACT CII
One of three formats accepted under France’s B2B e-invoicing mandate (alongside UBL and CII). ZUGFeRD is the same format under Germany’s naming.
Deadline: France: September 2026 (receiving) / September 2027 (issuing), phased by company size.
Factur-X packages a normal, human-readable PDF together with a complete EN 16931 CII invoice embedded as an attachment, so one file works for a person and a machine. Getting genuine PDF/A-3 conformance right is the hard part: an OutputIntent with an embedded ICC profile, XMP metadata that properly declares the Factur-X extension schema (not just adds custom properties), embedded fonts, no transparency, and a file trailer ID.
InvoiceHub’s generator is verified against veraPDF — the open-source reference PDF/A conformance checker — in CI, not by eye. You can generate a default rendering, or embed the invoice data into a PDF you already have.
Try it
curl -X POST https://api.invoicehub.dev/api/v1/convert \
-H "Authorization: Bearer ih_live_xxx" \
-H "Content-Type: application/json" \
-d '{"from": "UBL_2.1", "to": "Factur-X", "document": "<source UBL document>"}'Structure
PDF/A-3b container
├─ visual invoice (rendered page — human-readable)
└─ embedded attachment: factur-x.xml (AFRelationship: Alternative)
└─ full EN 16931 CII invoice XML
XMP metadata: pdfaid:part=3, pdfaid:conformance=B,
fx:DocumentType=INVOICE, fx:ConformanceLevel=EN 16931Common validation errors
- DOC-06 — No embedded XML found under the expected filename (factur-x.xml) — not a genuine hybrid document.
- ISO 19005-3 §6.6.2.3.1/2 (PDF/A conformance) — Custom XMP namespace (fx:) used without a declared PDF/A Extension Schema block — a mistake many hand-rolled generators make.
- ISO 19005-3 §6.1.3 — Missing file /ID in the PDF trailer.
Generate or convert to Factur-X / ZUGFeRD
POST /api/v1/generate for structured JSON in, or POST /api/v1/convert from any other supported format.