Facture électronique in France — sending your first invoice to Chorus Pro via PISTE
Selling to the French public sector means Chorus Pro. Here's how the PISTE API portal, the qualification sandbox and the technical account fit together — and how to test without risking anything.
Facture électronique in France — sending your first invoice to Chorus Pro via PISTE
If you invoice a French public-sector body — a ministry, a mairie, a hospital, a public university — a PDF by email doesn't count. Since 2020, every B2G invoice in France must go through Chorus Pro, the state invoicing platform. And since the modernisation of the state's API estate, the road into Chorus Pro for software runs through PISTE, the government API portal. Here's the map.
The three systems (and why people get lost)
- Chorus Pro (
chorus-pro.gouv.fr) is the invoicing platform itself:
it receives, validates, routes and tracks invoices to every French public entity. It has its own accounts and its own test twin, the qualification environment.
- PISTE (
piste.gouv.fr) is the API gateway in front of it. You
register an application, subscribe it to the Chorus Pro – Factures API, and get OAuth2 credentials (client ID + secret). Sandbox subscriptions point at the qualification environment.
- The technical account (compte technique) is a third credential,
created inside Chorus Pro itself, that identifies your company's structure when the API deposits an invoice.
The classic mistake is doing only the PISTE half. An app with keys but no API subscription mints OAuth tokens happily — and then every real call is refused. If your portal says "Subscribed APIs: none", that's the missing step.
What actually travels
Chorus Pro accepts several syntaxes; the clean modern choice is the EN 16931 UBL invoice — the same European semantic standard behind PEPPOL and Germany's XRechnung. The API call itself is unglamorous: an OAuth2 client_credentials token, then a deposer/flux POST with your XML base64-wrapped, your SIRET, and the buyer's service code. Chorus Pro answers with a flux number you can track.
Note for B2B: France's broader reform (2026–2027) routes business-to- business invoices through plateformes de dématérialisation partenaires (PDPs) — a different track. Chorus Pro remains the B2G front door.
Test before you trust
The qualification sandbox exists so you can get every screw tightened without a single real invoice at stake:
- On PISTE, subscribe your app to Chorus Pro – Factures in the
sandbox environment.
- On the Chorus Pro qualification portal, create your user, your
structure (test SIRETs are provided) and an API technical account.
- Send a deliberately minimal test invoice and read the platform's
answer. A flux number — or even a functional rejection about content — proves the whole chain: OAuth, subscription, technical account, endpoint.
How Eurobillr wires this
Eurobillr's France console (E-invoicing → France · Chorus Pro) is built exactly around that flow: you drop your PISTE client ID/secret and technical account into the configuration, a checklist shows what's missing, one button tests the PISTE OAuth connection, and another sends a sandbox test invoice down the very same code path a real dispatch uses. Until you flip live mode on, everything runs in audit-only: payloads are built, stored and inspectable, and nothing leaves the house. Your French dispatches — with the returned flux numbers — are listed right there.
The invoice XML itself is the same EN 16931 UBL Eurobillr already produces for PEPPOL, so nothing about your invoicing habits changes: pick the invoice, pick the format, dispatch.
Background reading: our France e-invoicing guide, EN 16931, PEPPOL.