# Tutorial: Send Self-billed Invoices

This page describes how to send self-billed invoices via Peppol.

# What is Self-Billing?

Self-billing is a process where the buyer creates and sends the invoice on behalf of the seller. Instead of waiting for the supplier to invoice them, the buyer generates the invoice and sends it to the supplier for acceptance or rejection.

This process is formally specified in the Peppol BIS Self-Billing 3.0 (opens new window) specification. In self-billing:

  • The buyer (customer) creates the invoice
  • The invoice is sent to the seller (supplier) for acceptance
  • The seller books and accepts (or rejects) via an invoice response message the self-billed invoice
  • Corrections can be made using a self-billed credit note

# Prerequisites

  • You have registered a hook with the topics InvoiceSent and InvoiceSentError. If not, go to hooks.
  • Important: The seller (invoice recipient) must be registered in Peppol for receiving self-billed invoices. This is a different variant than the standard registration for receiving invoices. Not all access points support self-billing functionality, so confirm this with your supplier beforehand.
  • There is a prior agreement between buyer and seller that explicitly authorizes the buyer to issue invoices on behalf of the seller (Directive 2006/112/EC Article 224 (opens new window)).
  • You are able to produce an XML document in the required format (see Peppol BIS Self-Billing XML Format below).

# Peppol BIS Self-Billing XML Format

Submit a properly formatted Peppol BIS Self-Billing 3.0 XML document. A self-billed invoice differs from a regular invoice in three key elements:

  • cbc:CustomizationID must contain:

    urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:selfbilling:3.0
    
  • cbc:ProfileID must contain:

    urn:fdc:peppol.eu:2017:poacc:selfbilling:01:1.0
    
  • Invoice type code must be:

    • 389 for a self-billing invoice in cbc:InvoiceTypeCode
    • 261 for a self-billed credit note in cbc:CreditNoteTypeCode

In our documentation you can find an example self-billing invoice.

Important: You do not need to swap the supplier and customer parties in the XML. Our service automatically recognizes the invoice type code 389 or 261 and routes the document to the supplier's endpoint.

# Step 1: Query Recipient Party

Before sending a self-billing invoice, verify that the recipient (seller/supplier) can receive it using the salesInvoice/QueryRecipientParty endpoint. Even though it is the salesInvoice api and self-billed invoices are purchase invoices, it will detect the receiving capabilities for selfbilling invoices.

Example request using the supplier's identifiers:

{
  "senderPartyId": "0106:12345678",
  "receiverPartyIds": [
    "0106:87654321",
    "0190:0000000123456789000",
    "9944:NL987654321B01"
  ],
  "documentType": "urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:selfbilling:3.0::2.1"
}

Example response:

{
  "channel": "peppol",
  "description": "default send via peppol delivery",
  "id": "0106:87654321"
}

If the supplier is not registered for receiving self-billing invoices, you will receive an error indicating they cannot be found or do not support this document type.

# Step 2: Send the Self-Billing Invoice

Use the Generic/Send endpoint to send your self-billing invoice. While you can also use the SalesInvoice/Send endpoint, using the Generic endpoint is recommended to avoid confusion, as you are sending a purchase invoice.

# Step 3: Monitor Delivery Status

Monitor the delivery status using webhooks. See the step 3 of the send invoice tutorial for receiving information on the delivery status.

# Self-Billing in the Netherlands (NLCIUS)

The implementation of self-billing in the Netherlands follows a simplified approach compared to the standard Peppol BIS Self-Billing 3.0 specification.

# Simplified Dutch Approach

In the Netherlands (NLCIUS/SI-UBL 2.0), you can maintain the exact same XML structure as a regular invoice. The only change required is:

  • Set cbc:InvoiceTypeCode to 389 for a self-billing invoice
  • Set cbc:CreditNoteTypeCode to 261 for a self-billed credit note

You do not need to modify:

  • The cbc:CustomizationID
  • The cbc:ProfileID
  • The party roles (supplier/customer)

Our service automatically recognizes the invoice type code and routes the document to the correct recipient (the supplier instead of the customer).

© 2025 eConnect International B.V.