FacturX
← All articles

Factur-X: make your Shopify invoices EN 16931 compliant

Published on · FacturX

Factur-X invoice with embedded EN 16931 XML

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