Send a compliant e-invoice from your app (France)

France's e-invoicing reform phases in reception and issuance obligations for domestic B2B transactions starting 1 September 2026. This page is honest about what Vantane supports today versus what's coming — no degraded guesses, per our own product principles.

The mandate

All French businesses must be able to receive structured e-invoices from 1 September 2026. Issuance phases in by size: large and mid-size businesses (ETI) from 1 September 2026, small and micro businesses from 1 September 2027. Invoices must be routed through an accredited platform (a PDP, or the public PPF) in an accepted format — Factur-X (hybrid PDF/CII), UBL, or CII.

What Vantane supports today

Query the live routing matrix — this is the same data your integration can check at runtime before deciding how to handle a French buyer:

curl -sS https://vantane.com/v1/capabilities | grep -A4 'fr-buyer-facturx-mandate'

As of today, native Factur-X generation is not yet implemented (supported: false for French-buyer routing). We're not going to pretend otherwise or hand you an invalid document — /v1/capabilities states this plainly so your integration can detect it and branch, rather than silently producing something a PDP will reject.

What actually works right now

Document generation and validation (EN 16931 / Peppol BIS 3.0 UBL) are not country-specific — they work identically for any buyer. And Peppol network delivery is not gated by buyer country either: whenever a buyer is reachable on Peppol (has a registered participant identifier), Vantane delivers to them over the network today, regardless of whether they're French. Try it in sandbox:

curl -sS https://vantane.com/v1/validate \
  -H 'content-type: application/json' \
  -d '{"id":"FR-GUIDE-DOM-01","invoiceTypeCode":"380","issueDate":"2026-07-01","dueDate":"2026-07-31","currencyCode":"EUR","buyerReference":"PO-7001","seller":{"name":"Lyon Software SAS","vatId":"FR12345678901","registrationNumber":"123456789","address":{"line1":"10 Rue de la République","city":"Lyon","postalCode":"69001","countryCode":"FR"},"electronicAddress":{"scheme":"0088","value":"3760012345670"}},"buyer":{"name":"Marseille Retail SARL","vatId":"FR98765432109","registrationNumber":"987654321","address":{"line1":"5 Rue Saint-Ferréol","city":"Marseille","postalCode":"13001","countryCode":"FR"},"electronicAddress":{"scheme":"0088","value":"3760098765430"}},"lines":[{"id":"1","description":"Point-of-sale software licence","quantity":1,"unitCode":"EA","unitPrice":60000,"vat":{"categoryCode":"S","rate":20}}],"paymentMeans":{"typeCode":"30","iban":"FR7630006000011234567890189","bic":"AGRIFRPP","accountName":"Lyon Software SAS"}}'

curl -sS https://vantane.com/v1/invoices \
  -H 'authorization: Bearer vantane_sandbox_public' \
  -H 'content-type: application/json' \
  -d '{"invoice":{"id":"FR-GUIDE-DOM-01","invoiceTypeCode":"380","issueDate":"2026-07-01","dueDate":"2026-07-31","currencyCode":"EUR","buyerReference":"PO-7001","seller":{"name":"Lyon Software SAS","vatId":"FR12345678901","registrationNumber":"123456789","address":{"line1":"10 Rue de la République","city":"Lyon","postalCode":"69001","countryCode":"FR"},"electronicAddress":{"scheme":"0088","value":"3760012345670"}},"buyer":{"name":"Marseille Retail SARL","vatId":"FR98765432109","registrationNumber":"987654321","address":{"line1":"5 Rue Saint-Ferréol","city":"Marseille","postalCode":"13001","countryCode":"FR"},"electronicAddress":{"scheme":"0088","value":"3760098765430"}},"lines":[{"id":"1","description":"Point-of-sale software licence","quantity":1,"unitCode":"EA","unitPrice":60000,"vat":{"categoryCode":"S","rate":20}}],"paymentMeans":{"typeCode":"30","iban":"FR7630006000011234567890189","bic":"AGRIFRPP","accountName":"Lyon Software SAS"}},"options":{"deliver":true}}'

Be precise about what this does and doesn't satisfy: delivering a Peppol BIS 3.0 UBL document to a Peppol-reachable French buyer is a real, working, compliant e-invoice — but it does not by itself satisfy the French national mandate's specific PDP/PPF-routing requirement. If you must comply with the French domestic mandate today, you need a PDP that speaks Factur-X/PPF routing; if you simply need to send a legally compliant e-invoice to a French counterparty who happens to be Peppol-reachable (e.g. outside the mandate's current scope, or as an EU cross-border transaction), this already works. We'll update this page the moment native Factur-X/PDP routing ships — track the date via /v1/capabilities rather than a changelog you'd have to remember to check.

See also: Belgium · Germany · How delivery works