Factur-X: the hybrid e-invoice for France, explained for developers
Factur-X is a PDF invoice with the complete invoice data embedded as XML. It is one of the three formats that every French e-invoicing platform has to accept, and it is the same format Germany calls ZUGFeRD.
Updated 19 October 2026
What a Factur-X file is
- A PDF/A-3 document that a person can read like any invoice.
- An embedded file
factur-x.xmlin the UN/CEFACT CII syntax (Cross Industry Invoice, release D22B in current versions). - XMP metadata declaring the attachment, the version and the profile.
Factur-X is published by the FNFE-MPE (Forum National de la Facture Électronique et des Marchés Publics Électroniques) together with the German FeRD. The FNFE-MPE calls Factur-X and ZUGFeRD technically identical: same XML, same profiles, same attachment name. A tool that handles one handles the other.
Current version
Factur-X 1.09.2, published with ZUGFeRD 2.5.2 on 4 August 2026 and aligned with the latest EN 16931 code lists (FNFE-MPE, FeRD). The previous release, 1.08 (December 2025), added changes to the EXTENDED profile for the French B2B obligation. Minor versions are backward compatible.
Profiles
| Profile | What it carries |
|---|---|
| MINIMUM | The header data Chorus Pro, the French public-sector portal, asks for. No invoice lines. |
| BASIC WL | Header and footer data a buyer usually needs, still no lines ("without lines"). |
| BASIC | BASIC WL plus the essential line data. |
| EN 16931 | Everything the European standard EN 16931 defines. |
| EXTENDED | EN 16931 plus additional data for more complex invoices. |
MINIMUM and BASIC WL carry no invoice lines, so they cannot hold a complete invoice. In Germany they do not count as an e-invoice at all (BMF FAQ, question 7). For new integrations use EN 16931; use EXTENDED only for the fields EN 16931 does not have.
Factur-X in the French reform
From 1 September 2026 every business subject to VAT in France must be able to receive e-invoices, and large and mid-sized companies must issue them; small and micro businesses follow on 1 September 2027 (impots.gouv.fr). The details are on the French e-invoicing mandate page. For Factur-X, three things matter:
- It is in the "socle". The reform defines a minimum set of formats every approved platform must accept: UBL, CII and the mixed format, which is Factur-X (FNFE-MPE). The formats and profiles are fixed in the AFNOR standard XP Z12-012, which the tax authority's external specifications refer to (version 3.2, 30 April 2026).
- It travels through a platform. Invoices between French businesses go through a plateforme agréée (approved platform), which also passes the required data to the tax authority. Emailing a Factur-X PDF straight to the buyer is no longer a compliant B2B invoice once the obligation applies to you.
- The XML is what gets checked. Platforms validate the structured data. A file that fails the EN 16931 rules is rejected, however good the PDF looks.
So the job of your software is to produce a valid Factur-X (or UBL, or CII) file and hand it to the platform the customer chose. Invoir does the first part: generation and validation, not transmission.
Validating Factur-X
The checks are the same as for ZUGFeRD: PDF/A-3 conformance, the XMP metadata, the XML schema of the profile, and the Schematron business rules. Validate a ZUGFeRD or Factur-X file explains the errors that come up most and how to fix them. The free validator runs all four layers in the browser.
Factur-X API
Validate a Factur-X PDF with one call and get a JSON report with rule IDs, messages and XML locations:
curl https://validate.invoir.dev/api/v1/validate \
-H "Authorization: Bearer inv_YOUR_KEY" \
-F [email protected]
POST /api/v1/extract returns the embedded factur-x.xml. See the API docs. Generating Factur-X from JSON (your template, your logo, validated before it is returned) is in development. Open-source options if you build it yourself: factur-x (Python), Mustang (Java), horstoeko/zugferd (PHP).
Check a file in your browser, or over the API. The free validator runs the official rules (KoSIT, CEN and Peppol Schematron, Mustang, veraPDF) and lists every error with its rule ID. Nothing is stored. The same check is one HTTP call with a free API key: 25 documents a month, no credit card.
Sources
- FNFE-MPE: Factur-X, version 1.09.2, profiles, socle formats.
- FeRD: ZUGFeRD 2.5.2 / Factur-X 1.09.2.
- DGFiP: Je découvre la facturation électronique; spécifications externes.
- Bundesministerium der Finanzen: FAQ E-Rechnung, question 7.