Skip to main content
Lifecycle status updates on domestic B2B invoices — accepted, paid, refused, disputed. Statuses are exchanged between PAs over Peppol, with mandatory codes also forwarded to the PPF.
Status is moving to a first-class GOBL document. Today it is a CDAR XML attached to the originating invoice; the next iteration makes it a standalone document with its own schema. Workflow steps and job arguments will change before the September 2026 mandate.
France requires lifecycle status updates on B2B national invoices to be reported to the PPF. Two statuses are your responsibility to send — 212 Encaissée (paid) and 210 Refusée (refused). The other two mandatory codes (200 Déposée and 213 Rejetée) are emitted automatically by Invopop, so you do not need a workflow for them.

Sending

A status workflow generates a CDAR XML payload against the originating invoice, transmits it to the counterparty’s PA over Peppol, and — for the two mandatory statuses — forwards a copy to the PPF.

How it works

1

Generate Status (France)

Records the status against the originating invoice and produces the CDAR XML payload in a single step (gov-fr.status.generate). The status_code and reason_code come from the workflow config or from job arguments at runtime.
2

Send Peppol Document

Transmits the CDAR to the counterparty’s PA over the Peppol network.
3

Forward Status to PPF

For the two mandatory statuses (210 and 212), forwards the CDAR to the PPF (gov-fr.status.forward). Non-mandatory statuses skip this step.

Job arguments

Pass status details as job arguments to use one workflow for multiple status types. Arguments take priority over workflow config.
Use one workflow per mandatory status (paid, refused) with the code pre-configured, rather than a single generic workflow. Keeps runbooks simple.
The example below is configured for 207 (En litige) with reason MONTANTTOTAL_ERR. Override status_code / reason_code per workflow or via job arguments.

France PA send status workflow

Generates and forwards a CDAR status update via Peppol and the PPF.

Receiving

Incoming statuses arrive over the same Peppol transport as invoices. Peppol’s format detection identifies them as CDAR, the CII app imports them into GOBL, and the result is recorded against the originating invoice.
1

Import Peppol Document

Receives the inbound Peppol payload and detects that it is a CDAR status update rather than an invoice.
2

Import UN/CEFACT CII Document

Converts the CDAR XML into a GOBL representation.
3

Generate Status (France)

Files the status under the originating invoice in the local PA database (gov-fr.status.generate).

Deriving a status from an invoice

The Build Status from Invoice step creates a new silo entry with a status payload pre-filled from an existing invoice. The new entry can then trigger the Send status workflow. Use this when the events that drive a status — payment captured, dispute raised — live alongside invoices in your system, and you want to avoid building a CDAR payload from scratch.

Status codes

Reason codes

Each status accepts specific reason codes. Statuses not listed (205, 209, 211, 212) do not require one. Defaults are applied when reason-code is omitted.
Status 200 is automatically generated by Invopop when an invoice is sent. The code NON_TRANSMISE will be added if the recipient’s PA is unreachable.
AUTRE is applied if the reason code is omitted
AUTRE is applied if the reason-code is omitted
JUSTIF_ABS is applied if the reason code is omitted
TRANSAC_INC is applied if the reason code is omitted
REJ_SEMAN is applied if the reason code is omitted.

FAQ

For TVA, file via DGFiP’s portal — Invopop does not generate CA3 yet. For e-reporting (Flow 10): submit via your Plateforme Agréée — Invopop’s e-reporting workflow batches transactions per period and submits to the PPF.
TVA: DGFiP’s EDI-TVA XML schema. E-reporting Flow 10: a structured JSON/XML payload defined by the PPF specification (currently in beta). Invopop emits Flow 10 via the upcoming fr-ctc-flow10-v1 GOBL addon.
Flow 10 e-reporting: 3× per month (every 10 days) for B2C and cross-border transactions. Lifecycle status (CDAR): per event, near real-time. Specific deadlines depend on the supplier’s tax filing cadence (monthly/quarterly).
Flow 10 uses a JSON envelope wrapping aggregated transaction data, defined in the PPF technical specification. Lifecycle CDAR payloads are XML messages exchanged over Peppol with structured status codes.
More available in our France FAQ section