Send an Invoice Response (status messages)

Report invoice status back to the sender via Peppol BIS Invoice Response 3.0.

With an Invoice Response (also known as a status message), you as a recipient report the processing status of an invoice back to the sender. This could be a confirmation that the invoice was received, approved for payment, or rejected. This article describes how to send an Invoice Response via the PSB API in accordance with the Peppol BIS Invoice Response 3.0 standard.

Why Invoice Responses?

Without status messages, a supplier can only hope that their invoice arrived and is being processed. With Invoice Responses, you make the invoicing process transparent: the sender knows exactly what stage the invoice is at, and can take immediate action if it is rejected.

Status codes

The Peppol BIS Invoice Response 3.0 standard defines six status codes:

CodeNameMeaningABAcknowledgeInvoice received and readableIPIn ProcessInvoice is being processedUQUnder QueryAdditional information needed from the supplierRERejectedInvoice rejected (final status)APAcceptedInvoice approved, payment will followPDFully PaidInvoice has been paid (final status)

The statuses follow a logical order: AB, IP, UQ, AP, PD. The RE status can be sent at any point if the invoice is rejected.

Clarification codes

When changing status, you can include a Reason code and an Action code to clarify the reason and the desired action.

Reason codes (why)
CodeMeaningNONNo specific issueREFReferences incorrectLEGLegal issueRECRecipient unknownQUAQuality issueDELDelivery issuePRIPrices incorrectQTYQuantities incorrectITMItems incorrectPAYPayment terms incorrectUNRNot recognisedFINFinancial issuePPDPartially paidOTHOther
Action codes (what the sender should do)
CodeMeaningNOANo action neededPINProvide informationNINSend a new invoiceCNFSend a full credit noteCNPSend a partial credit noteCNARefund the amountOTHOther
Send an Invoice Response

Send an Invoice Response via the PurchaseInvoice endpoint:

POST /api/v1/{partyId}/purchaseInvoice/{documentId}/response HTTP/1.1
Host: psb.econnect.eu
Authorization: Bearer {access_token}
Content-Type: application/json
{
  "status": "AP",
  "clarificationCode": "NON",
  "actionCode": "NOA",
  "note": "Factuur goedgekeurd voor betaling."
}

The PSB automatically generates a Peppol BIS Invoice Response 3.0 message and sends it via the Peppol network to the sender's Access Point.

Requirements

To send Invoice Responses, your organisation must be registered as a Peppol recipient with the correct SMP capabilities. Check this via:

GET /api/v1/peppol/config HTTP/1.1
Host: psb.econnect.eu
Authorization: Bearer {access_token}

The invoiceResponse capability must have the state on. If it does not, activate it via:

PUT /api/v1/peppol/config HTTP/1.1
Host: psb.econnect.eu
Authorization: Bearer {access_token}
Content-Type: application/json

{
  "invoiceResponse": {
    "state": "on"
  }
}
Status flow example

A common flow when processing a purchase invoice:

  1. Invoice received, webhook event InvoiceReceived
  2. Send Invoice Response with status AB (confirm receipt)
  3. Check the invoice in your own system
  4. Send Invoice Response with status IP (in process)
  5. On approval: Invoice Response with status AP
  6. After payment: Invoice Response with status PD

You do not need to send every intermediate status. It is common to send at least AB (receipt confirmation) and AP or RE (final verdict).

Webhook notification for a sent response

After sending an Invoice Response, you receive an InvoiceResponseSent webhook event confirming that the message was successfully delivered to the sender.

Frequently asked questions
How do I send an Invoice Response and what request format do I use?

You post JSON to POST /api/v1/{partyId}/purchaseInvoice/{documentId}/response including status (for example AB, AP, RE), clarificationCode and actionCode, plus an optional note. The PSB builds a Peppol BIS Invoice Response 3.0 message from this and delivers it via Peppol to the sender.

What Peppol setting do I need to be able to send status messages?

Your organisation must be registered in the SMP with the capability for Invoice Response. Check GET /api/v1/peppol/config and if necessary set invoiceResponse.state to on via PUT /api/v1/peppol/config. Without an active capability, the counterparty's Access Point cannot correctly deliver your response.

Do I have to send all intermediate statuses (AB, IP, AP, etc.)?

No, that is not mandatory. A common approach is to send at least an acknowledgement of receipt (AB) and a final verdict (AP, PD or RE). For a rejection (RE), Reason and Action codes are relevant to inform the sender what is wrong and what follow-up step is expected.


The full specification of the Peppol BIS Invoice Response 3.0 can be found at docs.peppol.eu. The PSB endpoints and response models are available at psb.econnect.eu.

View the response endpoints