Context
In France, the Directorate General of Public Finances (DGFiP) is implementing a new Business-to-Business (B2B) electronic invoicing (e-invoicing) reform which will be mandated for enterprises progressively, depending on business size, from 1st of September 2026. This reform is intended to improve the efficiency of business transactions, reduce administrative costs, and ensure better Value Added Tax (VAT) compliance.
For the purposes of the new DGFiP invoice regime, BNP Paribas Leasing Solutions (BPLS) have decided to connect their selected PDP provider to internal operation systems via a bespoke in-house tool, the Invoice PDP Facility (IPF).
Presentation of the API
The DGFiP e-invoicing reform redefines how invoices and associated life-cycle messaging will be exchanged in France. For companies, such as BPLS, the PDP’s act as the access points to the e-invoicing exchange network. The IPF will act as a bridge between the PDP and internal BPLS operation systems.
The concept of the life-cycle is important because a major role of the IPF is to orchestrate business actions when new life-cycle messages are received and keep track of the state.
This API is the link between to transmit lifecycle messages to the Invoicing PDP Facilility (IPF) application from PDP.
This API allows an external system to message IPF for an invoice status change. It allows IPF to be up to date for invoice statuses.
Once received by IPF, some processes may happen according to IPF configuration. The tasks list related to the status for a specific invoice is done asynchronously.
Besides the path parameters, here below 2 examples of body message to transmit invoice lifecycle status update:
Example when an invoice has been received by PDP and its lifecycle status change (to available for IPF) is transmitted to IPF.
{ "invoiceUrl": "https://invoicelinkurl_001/", "pdpInternalStatus": "myPDPinternalStatus_005", "crossDomainAcknowledgementAndResponse": { "acknowledgementDocument": { "referenceReferencedDocument": { "processConditionCode": 203, "processCondition": "Made available", } } }}
Example when an invoice has been rejected and its lifecycle status change is transmitted to IPF.
{ "invoiceUrl": "https://invoicelinkurl_002/", "pdpInternalStatus": "myPDPinternalStatus_006", "crossDomainAcknowledgementAndResponse": { "acknowledgementDocument": { "referenceReferencedDocument": { "processConditionCode": 210, "processCondition": "Refused", "specifiedDocumentStatus": { "reasonCode": "LIVR_INCOMP", "includedNote": { "content": "Delivery was incomplete, missing part X" } } } } }}