Factur-X: France's E-Invoice Format Explained
A practical guide to Factur-X โ France's mandatory e-invoice format. Profiles explained, differences from ZUGFeRD, and how to generate compliant invoices.
Factur-X: France's E-Invoice Format Explained
Factur-X is France's national electronic invoice format and the required format for the 2026 B2B e-invoicing mandate. Understanding it is the first step to compliance.
The Core Concept: A Hybrid Document
Factur-X is not a purely technical XML format like Germany's XRechnung. It is a hybrid document: a normal-looking PDF that contains embedded, machine-readable XML data. This design was intentional โ it allows humans to read invoices the traditional way while software processes the structured data automatically.
Think of it like a Word document and a spreadsheet merged into one file. The PDF you see and print is the invoice. The XML inside is what your accounting system, your customer's system, and the tax authority all read and validate.
Factur-X and ZUGFeRD: The Same Standard
Here is a fact that confuses many finance professionals: Factur-X and ZUGFeRD 2.x are technically identical standards. They share the same XML schema and the same profile structure. The difference is only in name and national branding:
- Germany calls it ZUGFeRD 2.x (or ZUGFeRD 2.3)
- France calls it Factur-X 1.x
The practical consequence: if your software already generates ZUGFeRD EN 16931 profile invoices, it can almost certainly generate Factur-X with a simple configuration change โ no new software purchase required.
The Five Factur-X Profiles
Factur-X has five profiles, each carrying more data than the last. Not all profiles are sufficient for mandate compliance.
MINIMUM
The simplest profile. Contains only the absolute basics: invoice number, date, buyer and seller, and total amount. Does not qualify for the B2B mandate. Useful only for archiving historical invoices.
BASIC WL (Without Lines)
Adds more header data but still no line-item detail. Does not qualify for the mandate. Used for summary invoices in some B2G contexts.
BASIC
Includes line items but still lacks some fields required by EN 16931. Does not qualify for the mandate.
EN 16931 (Confort)
The minimum profile that fully implements the EN 16931 European standard. โ Qualifies for the French B2B mandate. Includes all mandatory fields: line items, VAT breakdown, payment terms, and bank details.
EXTENDED
A superset of EN 16931 with additional French-specific fields. โ Qualifies. Used in complex invoicing scenarios such as public procurement and cross-border transactions.
For most businesses, the EN 16931 (Confort) profile is the right choice. Extended is only needed if your industry or trading partners require the additional fields.
How to Verify Your Software Generates Correct Factur-X
You can validate your Factur-X invoices using the open-source Mustang validation library or the official French validator when it becomes available from DGFiP. The key things to check:
- The PDF file contains an embedded XML attachment named
factur-x.xml - The XML conforms to the UN/CEFACT CII D16B syntax (Cross Industry Invoice)
- The profile is at least EN 16931
- The mandatory fields are all populated
Factur-X vs. Chorus Pro
These are two different things that are sometimes confused:
- Factur-X is the format โ the structure of the invoice document itself
- Chorus Pro is the platform โ the government's portal for B2G invoices
For B2G invoicing (to French government entities), you submit Factur-X invoices via Chorus Pro. For B2B invoicing (between companies), Factur-X invoices are routed via a PDP (private platform) or the PPF (government fallback).
Practical Steps for Software Teams
If you are building or configuring software to generate Factur-X:
- Use a library that supports ZUGFeRD 2.x / Factur-X โ Mustang (Java), Konik (Java), Facturx-python (Python), or Zugferd-php (PHP)
- Generate the EN 16931 profile as a minimum
- Embed the XML in a PDF/A-3 document (not PDF/A-1 or PDF/A-2)
- Name the attachment
factur-x.xmlwith the correct MIME type - Set the XMP metadata in the PDF to declare the Factur-X version and profile