Identify and resolve e-invoice delivery failures in France

A recipient might not receive a French e-invoice even though ecosio has accepted it and legally submitted its regulatory data to the Direction générale des Finances publiques (DGFiP), the French tax authority, via the Portail Public de Facturation (PPF).

France defines separate data-exchange flows for regulatory reporting and invoice delivery:

  • Flow 1 sends the invoice’s regulatory data to the DGFiP.
  • Flow 2 delivers the invoice to the recipient through the relevant approved platforms.

In this scenario, ecosio completes Flow 1 but can't complete Flow 2.

Check whether the recipient received the invoice

The top-level API status might indicate successful processing because ecosio has completed Flow 1, even though Flow 2 delivery failed. Instead, you must include the relevant query parameter to retrieve additional status details for every submitted invoice.

To retrieve the additional status details, use the following requests:

  • Messaging API: GET /delivery/{messageId}?includeLog=true
  • Vertex Messaging API: GET /messages/{messageId}?view=details

The field names differ between the Messaging API and Vertex Messaging API:

Informationecosio Messaging APIVertex Messaging API
Top-level status fieldstatestatus
Additional status details arrayloghistory
Status fieldlog[].statehistory[].status
Message fieldlog[].messagehistory[].message

The log and history arrays contain only the most recent status. They don’t provide a complete record of previous statuses.

If the message field contains FLOW:SUBMITTED_NOT_TRANSMITTED, ecosio has reported the invoice’s regulatory data to the French tax authority but hasn’t delivered the invoice to the recipient.

You must send the invoice directly to the recipient outside the API. ecosio recommends sending it by email.

Submitted but not transmitted messages

The message field in the additional status details indicates why ecosio couldn’t deliver the invoice to the recipient.

Message in additional status detailsMeaning
FLOW:SUBMITTED_NOT_TRANSMITTED|Flow2 Peppol sending failed with non-temporary errorThe recipient has an active address in the French Directory (Annuaire), but ecosio couldn’t deliver the invoice through Peppol.
FLOW:SUBMITTED_NOT_TRANSMITTED|No active directory record for recipient, skipping sending Flow2!The recipient exists in the French Directory (Annuaire), but no active routing record is available.

Example responses

The following examples show where to find the additional status details in each API response.

{
  "state": "SENT",
  "log": [
    {
      "timestamp": "...",
      "state": "...",
      "message": "FLOW:SUBMITTED_NOT_TRANSMITTED|..."
    }
  ]
}