CRATEAPI

The French e-invoicing mandate: a developer checklist (Sept 2026)

France2 min read

France's B2B e-invoicing reform is not a proposal anymore — it has a fixed start date. If you build or maintain invoicing for a company that sells to other French businesses, here's what actually changes, and what to check in your pipeline before it does.

The dates that matter

Receiving is the trap most teams miss: even if your own company is small enough to get an extra year on issuing, you still have to be able to receive a structured invoice from a large supplier starting September 2026.

How invoices actually move: the PDP model

France dropped the idea of a single free government exchange portal handling delivery. Instead, invoices travel through a Plateforme Agréée (PA/PDP) — a certified private platform your company (or your software) connects to. The state keeps a directory role (tracking who's registered, collecting e-reporting data) but the actual document exchange is PDP-to-PDP. Practically: pick a PA, or make sure the software you build plugs into one, since format compliance alone doesn't get an invoice delivered.

The checklist

  1. Pick a format. France accepts Factur-X (hybrid PDF + CII, good when a human-readable copy matters), or plain UBL/CII XML. There is no country-specific proprietary schema like Italy's or Poland's — French invoices stay inside the EN 16931 / UBL-CII family.
  2. Get the seller identifier right. The SIREN must appear in CompanyID with schemeID="0002" — one of the most common BR-FR failures is a missing or wrongly-schemed SIREN.
  3. Add the mandatory French payment mentions. Late-payment penalties, recovery costs and discount terms are required invoice notes (BT-22, with PMT/PMD/AAB prefixes) — generic EN 16931 leaves these optional, France doesn't.
  4. Don't forget e-reporting. B2C sales and cross-border transactions aren't e-invoiced the same way, but their transaction and payment data still has to be reported to the tax administration ("e-reporting") — a separate obligation from the invoice itself.
  5. Validate against the fr profile before you connect to a PA, not after. All 61 official BR-FR rules (AFNOR XP Z12-012 / FNFE-MPE) are checkable ahead of time:
curl -X POST "$BASE/v1/validate/ubl?profile=fr" \
  -H "Content-Type: application/xml" --data-binary @invoice.xml

Test before you integrate a PA. Every BR-FR rule we check comes with a plain-English explanation and a fix — run your invoices through the free validator first, so the errors you debug are yours, not a black box on the other side of a platform integration.

Where to go deeper

We keep a dedicated page tracking the reform in more detail, including all 61 BR-FR codes and sample Factur-X files: Plateforme Agréée: a developer's guide, plus a ready-to-download sample Factur-X invoice and the full error code reference for every BR-FR rule.

Keep reading

Want to try this against a real invoice?

Every example above calls the same API you can call today — validate for free, or read the full reference.