Skip to main content

Documentation Index

Fetch the complete documentation index at: https://invopop-mintlify-gobl-payment-methods-1778254135.mintlify.app/llms.txt

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

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 records the status against the originating invoice, generates a CDAR XML payload, 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

Record Status

Stores the status against the originating invoice in the local PA database. The status_code and reason_code come from the workflow config or from job arguments at runtime.
2

Generate CDAR

Uses the CII app to produce a CDAR XML envelope from the recorded status.
3

Send Peppol Document

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

Forward Status to PPF

For the two mandatory statuses (210 and 212), forwards the CDAR to the PPF. 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.
ArgumentDescription
codeStatus code (200213).
reason-codeReason code (e.g. MONTANTTOTAL_ERR). Defaults by status code if omitted.
reason-textOptional free-text explanation.
{
  "args": {
    "code": "210",
    "reason-code": "DOUBLON",
    "reason-text": "Duplicate invoice already processed"
  }
}
Use one workflow per mandatory status (paid, refused) with the code pre-configured, rather than a single generic workflow. Keeps runbooks simple.

Workflow code

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

Record Status

Files the status under the originating invoice in the local PA database.

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

CodeFrenchEnglishMandatory to PPF
200DéposéeDepositedYes (automatic)
205ApprouvéeAcceptedNo
206Partiellement approuvéePartially ApprovedNo
207En litigeDisputedNo
208SuspendueSuspendedNo
209ComplétéeCompletedNo
210RefuséeRefused by buyerYes (manual)
211Paiement transmisPayment transmittedNo
212EncaisséeCashed/PaidYes (manual)
213RejetéeRejected by platformYes (automatic)

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.
Reason codeFrenchEnglish
NON_TRANSMISEDestinataire non connectéRecipient not connected
AUTRE is applied if the reason code is omitted
Reason codeFrenchEnglish
AUTRE AutreOther
TX_TVA_ERRTaux de TVA erronéIncorrect VAT rate
MONTANTTOTAL_ERRMontant total erronéIncorrect total amount
CALCUL_ERRErreur de calcul de la factureInvoice calculation error
NON_CONFORMEMention légale manquanteMissing legal mention
DOUBLONFacture en doublonDuplicate invoice
DEST_ERRErreur de destinataireRecipient error
TRANSAC_INCTransaction inconnueUnknown transaction
EMMET_INCÉmetteur inconnuUnknown issuer
CONTRAT_TERMContrat terminéContract ended
DOUBLE_FACTDouble factureDouble invoicing
CMD_ERRN° de commande incorrect ou manquantIncorrect or missing order number
ADR_ERRAdresse de facturation électronique erronéeIncorrect electronic billing address
SIRET_ERRSIRET erroné ou absentIncorrect or missing SIRET
CODE_ROUTAGE_ERRCODE_ROUTAGE absent ou erronéMissing or incorrect routing code
REF_CT_ABSENTRéférence contractuelle nécessaireContractual reference required
REF_ERRRéférence incorrecteIncorrect reference
PU_ERRPrix unitaires incorrectsIncorrect unit prices
REM_ERRRemise erronéeIncorrect discount
QTE_ERRQuantité facturée incorrecteIncorrect invoiced quantity
ART_ERRArticle facturé incorrectIncorrect invoiced item
MODPAI_ERRModalités de paiement incorrectesIncorrect payment terms
QUALITE_ERRQualité d’article livré incorrecteIncorrect quality of delivered item
LIVR_INCOMPProblème de livraisonDelivery problem
AUTRE is applied if the reason-code is omitted
Reason codeFrenchEnglish
AUTRE AutreOther
TX_TVA_ERRTaux de TVA erronéIncorrect VAT rate
MONTANTTOTAL_ERRMontant total erronéIncorrect total amount
CALCUL_ERRErreur de calcul de la factureInvoice calculation error
NON_CONFORMEMention légale manquanteMissing legal mention
DOUBLONFacture en doublonDuplicate invoice
DEST_ERRErreur de destinataireRecipient error
TRANSAC_INCTransaction inconnueUnknown transaction
EMMET_INCÉmetteur inconnuUnknown issuer
CONTRAT_TERMContrat terminéContract ended
DOUBLE_FACTDouble factureDouble invoicing
CMD_ERRN° de commande incorrect ou manquantIncorrect or missing order number
JUSTIF_ABS is applied if the reason code is omitted
Reason codeFrenchEnglish
JUSTIF_ABS Justificatif absent ou insuffisantMissing or insufficient supporting document
SIRET_ERRSIRET erroné ou absentIncorrect or missing SIRET
CODE_ROUTAGE_ERRCODE_ROUTAGE absent ou erronéMissing or incorrect routing code
REF_CT_ABSENTRéférence contractuelle nécessaireContractual reference required
REF_ERRRéférence incorrecteIncorrect reference
CMD_ERRN° de commande incorrect ou manquantIncorrect or missing order number
ADR_ERRAdresse de facturation électronique erronéeIncorrect electronic billing address
TRANSAC_INC is applied if the reason code is omitted
Reason codeFrenchEnglish
TRANSAC_INC Transaction inconnueUnknown transaction
COORD_BANC_ERRErreur de coordonnées bancairesIncorrect bank details
TX_TVA_ERRTaux de TVA erronéIncorrect VAT rate
MONTANTTOTAL_ERRMontant total erronéIncorrect total amount
CALCUL_ERRErreur de calcul de la factureInvoice calculation error
NON_CONFORMEMention légale manquanteMissing legal mention
DOUBLONFacture en doublonDuplicate invoice
DEST_ERRErreur de destinataireRecipient error
EMMET_INCÉmetteur inconnuUnknown issuer
CONTRAT_TERMContrat terminéContract ended
DOUBLE_FACTDouble factureDouble invoicing
CMD_ERRN° de commande incorrect ou manquantIncorrect or missing order number
ADR_ERRAdresse de facturation électronique erronéeIncorrect electronic billing address
SIRET_ERRSIRET erroné ou absentIncorrect or missing SIRET
CODE_ROUTAGE_ERRCODE_ROUTAGE absent ou erronéMissing or incorrect routing code
REF_CT_ABSENTRéférence contractuelle nécessaireContractual reference required
REF_ERRRéférence incorrecteIncorrect reference
PU_ERRPrix unitaires incorrectsIncorrect unit prices
REM_ERRRemise erronéeIncorrect discount
QTE_ERRQuantité facturée incorrecteIncorrect invoiced quantity
ART_ERRArticle facturé incorrectIncorrect invoiced item
MODPAI_ERRModalités de paiement incorrectesIncorrect payment terms
QUALITE_ERRQualité d’article livré incorrecteIncorrect quality of delivered item
LIVR_INCOMPProblème de livraisonDelivery problem
REJ_SEMAN is applied if the reason code is omitted.
Reason codeFrenchEnglish
REJ_SEMAN Rejet pour erreur sémantiqueRejection for semantic error
REJ_UNIRejet sur contrôle unicitéRejection on uniqueness check
REJ_COHRejet sur contrôle cohérence de donnéesRejection on data consistency check
REJ_ADRRejet sur contrôle d’adressageRejection on addressing check
REJ_CONT_B2GRejet sur contrôles métier B2GRejection on B2G business checks
REJ_REF_PJRejet sur référence de PJRejection on attachment reference
REJ_ASS_PJRejet sur erreur d’association de la PJRejection on attachment association error
IRR_VIDE_FContrôle de non vide sur les fichiers du fluxNon-empty check on flow files
IRR_TYPE_FContrôle de type et extension des fichiersFile type and extension check
IRR_SYNTAXContrôle syntaxique des fichiers du fluxSyntactic check on flow files
IRR_TAILLE_PJContrôle de taille des PJAttachment size check
IRR_NOM_PJContrôle du nom des PJAttachment name check
IRR_VID_PJContrôle de PJ non videNon-empty attachment check
IRR_EXT_DOCContrôle de l’extension des PJAttachment extension check
IRR_TAILLE_FContrôle de taille max des fichiersMaximum file size check
IRR_ANTIVIRUSContrôle anti-virusAnti-virus check
DEST_INCDestinataire inconnuUnknown recipient
ADR_ERRAdresse de facturation électronique erronéeIncorrect electronic billing address
DOUBLONFacture en doublonDuplicate invoice
CALCUL_ERRErreur de calcul de la factureInvoice calculation error
TX_TVA_ERRTaux de TVA erronéIncorrect VAT rate
MONTANTTOTAL_ERRMontant total erronéIncorrect total amount