Skip to main content
France runs two parallel flows, and which one an invoice takes depends on whether the customer is registered in the Annuaire (the French directory).
  • Customers subject to VAT in France are handled through the e-invoicing flow for domestic B2B transactions, with status updates reported back throughout.
  • Customers not subject to VAT in France — international or B2C transactions, and territories excluded from the mandate such as Guyane, Mayotte, New Caledonia and French Polynesia — go through e-reporting instead.
This guide assumes you have already connected the Chargebee app and completed the general setup — see the Chargebee overview first if you haven’t. Required apps: France, Peppol, OASIS UBL
Before processing any invoices, you must register your supplier in the Annuaire through Invopop. See the registration guide for the e-invoicing flow and the e-reporting registration steps for the reporting flow.

Workflow

A single template covers both French flows and picks between them automatically from the result of the Lookup in Directory step.
  • found result means the customer is subject to e-invoicing, so Invopop records the document in the Annuaire, forwards it to the PPF, and sends it over Peppol.
  • not found result means the transaction falls outside domestic e-invoicing — international B2B, B2C, or a customer in a territory excluded from the mandate — so it is recorded for e-reporting. For those, the Can Send action checks whether the customer is reachable on the Peppol network: if it is (a Belgian party, for example), the workflow sends the invoice over Peppol as well.

Chargebee France

Syncs with Chargebee, looks the customer up in the French Annuaire, and branches automatically: registered parties are e-invoiced via Peppol France CIUS and forwarded to the PPF, while unregistered parties are recorded for e-reporting.

Customer routing & identifiers

A single SIREN registered in the Annuaire can have several directory entries, registered under the same or different Plateformes Agréées. Each entry has a unique identifier — mapped to the Peppol inbox — in one of the SIREN, SIREN_SIRET, SIREN_SIRET_suffix or SIREN_suffix forms. When no Peppol inbox is set on the customer, Invopop defaults to 0225:SIREN, ignoring any SIRET present in the customer’s identities. Use the custom fields below to control this. Set the Peppol inbox to target a specific directory entry, or provide the customer’s SIREN and SIRET so the directory lookup can resolve them. All three are configured as Single line text custom fields (or as metadata, using the hyphenated key):

E-reporting transaction fields

The e-reporting path applies the fr-ctc-flow10-v1 addon, which defines two invoice tax extensions. By default, the addon sets the billing mode to M1 — or M2 when the invoice is fully paid — and the B2C transaction category to TNT1. Use the custom fields below to override these defaults:
The metadata keys listed above follow the Chargebee metadata format (hyphens, no cf_ prefix). If you prefer to use custom fields instead, replace hyphens with underscores and add the cf_ prefix. See Custom fields & metadata for details.

FAQ

Two channels depending on the recipient: B2G uses Chorus Pro (CII format); B2B from September 2026 uses the Plateforme Agréée model (UBL, CII, or Factur-X via Peppol). Invopop is an approved PA — install the France PA app for B2B and the Chorus Pro app for B2G.
In Factur-X PDFs, the XML file is embedded within the PDF itself. To extract and view it, use the Attachments section in Adobe Acrobat Reader, or a tool like the SysTools PDF Extractor.
Invopop is an officially approved Plateforme Agréée under the DGFiP mandate. Registration, invoicing, and lifecycle status are available today; e-reporting (Flow 10) is in active development. See the PA hub readiness matrix for the current state.
The base FR tax regime plus the EN 16931 profile. For Peppol delivery, peppol-bis-v3. The forthcoming fr-ctc-flow10-v1 addon covers e-reporting payloads — separate from the e-invoicing flow.
No. Most Peppol countries treat self-billing as a document type of its own, but France models it as a standard invoice with the untdid-document-type extension set to 389. In GOBL you never set the code yourself: add the self-billed tag and the fr-ctc-flow2-v1 add-on applies it automatically. See Self-billing for the full flow.
In countries where Peppol is the standard but not mandatory, you may still need to issue an e-invoice when the recipient isn’t on the network. Both parties can agree on an alternative transfer method, but the invoice must still be EN16931 compliant.Recommended approach:
  • Set up a separate workflow that generates the XML without the send-Peppol-document step
  • Or reuse your existing workflow without the customer Peppol ID — the send step is automatically skipped
  • Fetch the generated XML and deliver it through the agreed channel, typically email
B2C invoices typically lack the structured customer information required for Peppol delivery, and most consumers don’t have inboxes. Use a conditional workflow:
  1. Add an If/Else step that checks for a customer inbox using count(customer.inboxes, true) > 0.
  2. On the false branch, generate a PDF and email it to the customer, then stop the flow.
This routes B2B invoices through Peppol while keeping a smooth path for consumers.
If a job fails with KO and receiver not found in the peppol network, treat it like an invalid email address — the recipient simply isn’t reachable on Peppol. Add the Lookup Participant ID step (ideally in a separate validation workflow run against customer data) so you catch missing IDs before generating the invoice.
No. The regime is automatically derived from the supplier’s settings, which is the recommended approach for Peppol — leave it unset on the document.
See the oasis-ubl-v2 addon and the Peppol app reference for required fields, supported document types, and Participant ID schemes.
More available in our France FAQ section

Participate in our community

Ask and answer questions about your Chargebee integration →