Skip to main content

Documentation Index

Fetch the complete documentation index at: https://invopop-mintlify-changelog-week-1778411791.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

E-invoicing in France applies domestic B2B invoicing where both parties are registered in the Annuaire. For B2C, cross-border, or any flow where one party is not in the Annuaire, use the reporting flow instead.
The France PA invoicing flow covers regulated B2B exchanges — both parties registered in the Annuaire. The same GOBL document drives both sides: a single invoice with the fr-ctc-flow2-v1 add-on, generated as the format negotiated with the receiver. On receipt, any of the accepted formats is converted back to that same representation.

Formats

The PA specification accepts five formats. In practice the three base formats below cover essentially all real-world traffic, and Invopop supports both sending and receiving on all three.
FormatNotes
UBLPeppol France CIUS — recommended default. Native Peppol format with the widest receiver support.
CIIUN/CEFACT XML, semantically equivalent to UBL. Common in cross-border and industrial contexts.
Factur-XHybrid PDF/A-3 with embedded CII. Identical to ZUGFeRD and aligned with EN 16931.
Switching format is a workflow-config change rather than a data-model change — you author and validate one GOBL invoice, and the workflow’s generation step produces whichever format the counterparty expects.

Sending

The send workflow records the invoice for compliance, generates the chosen format, transmits it to the receiver’s PA over Peppol, and forwards the F1 copy to the PPF as the fifth corner. The Record Invoice step validates SIRENs and checks both parties against the Annuaire. Invoices where either side is missing are rejected — branch non-regulated traffic into the reporting flow upstream of this workflow.

How it works

1

Set State → processing

Moves the invoice into a visible “in progress” state for operator dashboards.
2

Add Signature

Locks the GOBL envelope so downstream steps work against an immutable document.
3

Record Invoice

Validates SIRENs, checks both parties against the Annuaire, and stores the invoice in the local PA database.
4

Generate UBL Document

Produces a Peppol France CIUS UBL invoice or credit note. Swap for Generate CII Document if the receiver requires CII, or Generate PDF (Factur-X) for hybrid PDF.
5

Send Peppol Document

Transmits the generated document to the receiver’s PA over the Peppol network.
6

Set State → sent

Marks Peppol delivery as successful.
7

Forward Invoice to PPF

Generates the simplified F1 invoice and forwards it, along with the mandatory 200 déposée status, to the PPF.
8

Set State → completed

Marks the full e-invoicing flow — Peppol delivery and PPF reporting — as complete.

Workflow code

France PA send invoice workflow

Records and sends a France-compliant invoice via Peppol and the PPF.

Receiving

The receive workflow detects the inbound format, imports it into a GOBL document, and records it against your registered party. The same workflow handles UBL, CII, and Factur-X — the format-detection branch routes each payload to the correct importer.

How it works

1

Import Peppol Document

Pulls the inbound payload from Peppol and branches on the detected format:
  • UBLImport UBL Document converts the UBL XML to GOBL.
  • CIIImport UN/CEFACT CII Document converts the CII XML to GOBL.
  • PDFImport PDF (Factur-X) extracts the embedded CII and converts it to GOBL.
2

Set Folder → expenses

Files the invoice under the Invoices · Expenses folder so it lands in the right place for accounting workflows.
3

Record Invoice

Validates SIRENs, resolves your registered party as the customer (or supplier in self-billing flows), and guards against duplicate processing.
4

Set State → registered

Marks the incoming invoice as successfully received.

Workflow code

France PA receive invoice workflow

Imports an incoming Peppol invoice (UBL, CII, or Factur-X) and records it.

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-fec-v3 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.
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