Receive self-billing documents: ERS incoming, SMP capabilities, VAT pass-through and processing flow.
As a supplier, you receive self-billing invoices from your buyers (ERS incoming). The buyer creates the invoice on your behalf and sends it via the Peppol network. Functionally it is an incoming Peppol invoice; legally and content-wise it is self-billing. In your own accounting you process it as a sales invoice, not a purchase invoice. This article describes what registration you need and how to process the received documents.
Self-billing invoices use the same receive flow as other incoming Peppol invoices. There is no separate transport channel. The PSB sends a webhook notification and you download the document via the download API. The difference lies in recognition (InvoiceTypeCode / profile), the SMP registration per variant and how your ERP books the document.
The receiving flow:
389) or self-billing credit note (261) via the PSBInvoiceReceived event to your webhookTo receive self-billing invoices, your organisation must be registered in the Peppol SMP. Which registration you need depends on the variant:
If you are already registered to receive regular NLCIUS invoices, no additional steps are needed. Self-billing invoices with InvoiceTypeCode 389 are delivered via the same profile. The PSB automatically recognises the document type.
The BIS Self-Billing 3.0 profile requires a separate registration. This profile has its own CustomizationID and ProfileID, and requires a specific SMP configuration.
Configure the self-billing capability via the Peppol config API:
PUT /api/v1/peppol/config HTTP/1.1
Host: psb.econnect.eu
Authorization: Bearer {access_token}
Content-Type: application/json
{
"selfBilling": {
"state": "on"
}
}
Without this registration, buyers using the BIS Self-Billing 3.0 profile cannot find you via a Peppol SMP lookup.
Use the same topic as for regular purchase invoices:
{
"action": "https://mijn-systeem.nl/webhook/invoices#mijnSecretKey",
"topics": ["InvoiceReceived"]
}
Self-billing invoices arrive as InvoiceReceived events. You can distinguish them from regular invoices by checking the InvoiceTypeCode in the XML document: 389 for a self-billing invoice, 261 for a self-billing credit note.
Download the document in the same way as other incoming Peppol invoices. Both routes cover self-billing:
GET /api/v1/{partyId}/purchaseInvoice/{documentId}/download HTTP/1.1
Host: psb.econnect.eu
Authorization: Bearer {access_token}
Or via the generic download path:
GET /api/v1/{partyId}/generic/{documentId}/download HTTP/1.1
Host: psb.econnect.eu
Authorization: Bearer {access_token}
Optionally, you can use targetDocumentTypeId to retrieve the document in a different format if your system requires it.
After downloading, you can check the XML document to determine whether it is a self-billing invoice:
<!-- InvoiceTypeCode 389 = self-billing invoice -->
<InvoiceTypeCode>389</InvoiceTypeCode>
<!-- InvoiceTypeCode 261 = self-billing credit note -->
<InvoiceTypeCode>261</InvoiceTypeCode>
At BIS Self-Billing 3.0 you can also recognise the document by its own CustomizationID and ProfileID (see Self-billing overview).
In a self-billing invoice, the AccountingSupplierParty is your organisation (the supplier), while the AccountingCustomerParty is the buyer who created the invoice.
Amounts, percentages and VAT categories are taken over exactly as delivered in the UBL. The PSB does not calculate or change VAT. VAT logic and checks belong in the receiving ERP or accounting system.
The receiving application must recognise self-billing (including InvoiceTypeCode 389/261, and for BIS also CustomizationID/ProfileID) and book the document correctly as a sales invoice. Do not book it as a purchase invoice: you are the supplier receiving the invoice that the buyer created on your behalf.
After reception, you can send an Invoice Response back to the buyer to confirm processing or reject the invoice. The flow is identical to that for regular invoices:
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"
}
See Send an Invoice Response for the full overview of status codes and clarification codes.
The retention rules for self-billing documents are the same as for regular purchase invoices: stored for 90 days after reception, 7 days after download. Retrieve documents promptly and store them in your own system.
No, self-billing uses the same topic as regular purchase invoices: InvoiceReceived. You distinguish self-billing in your processing by reading the InvoiceTypeCode in the XML (389 for invoice, 261 for credit note).
If you already receive NLCIUS purchase invoices, that registration also covers NLCIUS self-billing with code 389 or 261. For BIS Self-Billing 3.0 a separate capability is required; set selfBilling.state to on via PUT /api/v1/peppol/config, otherwise buyers cannot find you for that profile in the SMP.
Use GET /api/v1/{partyId}/purchaseInvoice/{documentId}/download or GET /api/v1/{partyId}/generic/{documentId}/download. With the query parameter targetDocumentTypeId you can request a different target format if your back-end system requires it. After download, check in the XML which party is the supplier and which is the buyer according to AccountingSupplierParty and AccountingCustomerParty, and book the document as a sales invoice.
No. The PSB takes over VAT amounts, percentages and categories from the UBL (pass-through). Calculation and checking of VAT happens in your own ERP or accounting system.
Whether you receive NLCIUS or BIS Self-Billing 3.0 as a supplier depends on what the buyer sends. Only for BIS Self-Billing 3.0 is extra SMP registration with the selfbilling capability needed; for the NLCIUS variant your existing receive registration suffices. When in doubt: register for both.
PSB tutorials: send self-billing, receive self-billing, example UBL BIS Self-Billing.
View the API documentation