Factur-X: make your Shopify invoices EN 16931 compliant
Published on · FacturX
Factur-X is the Franco-German electronic invoice format at the heart of the French e-invoicing reform. If you sell on Shopify to French customers, it is very likely the format your invoices will need to be issued in. Good news: with the right tooling, it is completely transparent.
A hybrid invoice: human-readable, machine-processable
A Factur-X invoice is a perfectly normal PDF — the one your customer opens, prints or archives — that embeds a structured XML file containing all the invoice data: party identities, line items, amounts, VAT breakdown per rate.
It is the best of both worlds:
- your customer sees no difference: they receive a polished PDF in your brand colors;
- accounting software and dematerialization platforms (PDPs) read the XML directly, with no re-typing and no OCR.
Technically, the PDF must be PDF/A-3 (the archiving standard that allows attachments) and the XML follows the UN’s CII (Cross-Industry Invoice) syntax.
Factur-X profiles: MINIMUM is no longer enough
Factur-X comes in several “profiles”, from the most basic to the most complete: MINIMUM, BASIC WL, BASIC, EN 16931, EXTENDED.
The profile makes all the difference:
- MINIMUM only contains totals and identities — it is not considered an electronic invoice under the reform;
- EN 16931 is the profile aligned with the European standard of the same name: detailed invoice lines, VAT breakdown per rate, order references… That is the level expected for French e-invoicing.
If your invoicing tool advertises “Factur-X” without specifying the profile, check it: many stop at MINIMUM.
What a valid EN 16931 XML contains
The XML must be self-consistent: the standard defines calculation rules (the “BR-CO” rules) that validators check mercilessly. Among others:
- the sum of the lines must match the net total;
- each VAT rate must carry its basis and amount, and VAT = basis × rate;
- gross total = net total + VAT total;
- a credit note (TypeCode 381) carries positive amounts — the document type expresses the direction.
An inconsistent XML gets rejected by the platforms. That is why hand-rolling Factur-X is risky: the slightest rounding drift fails validation.
How to generate Factur-X from Shopify
Shopify does not produce Factur-X invoices (or even compliant French invoices). FacturX does it for you, automatically:
- every paid or fulfilled order generates a PDF/A-3 validated by veraPDF (0 errors) embedding an XML at the EN 16931 profile;
- line items, discounts, shipping and VAT rates are taken from the Shopify order, and the VAT breakdown is recomputed to be self-consistent by construction;
- B2B information (company name, SIRET, intra-community VAT number) collected at checkout is injected into the XML;
- refunds produce compliant credit notes (type 381).
The output has been validated with the industry’s reference tools (veraPDF for the PDF/A-3 container, XSD and Schematron schemas for the XML).
What if my customers have never heard of Factur-X?
That is precisely the point of the format: there is nothing to explain. Your consumer customers see a regular PDF. Your business customers can import the invoice into their accounting software without re-typing — and from September 2026, their platform will process it automatically.
Want to see a Factur-X invoice generated from your own store? Install FacturX for free and generate yours in two minutes.
Compliant invoices, on autopilot
FacturX automatically generates Factur-X invoices for your Shopify orders, with legal numbering and accounting exports. Free during early access.
Install FacturX