Sovos Docs

Show Page Sections

Belgium

Enabling support for Belgium PEPPOL invoices involves confirming prerequisites and product IDs, understanding format and PEPPOL requirements, and implementing business processes to issue and retrieve invoices.

Prerequisites

Requirements for Belgium PEPPOL e-invoicing integration:

  • You must have a Belgium enterprise number from the Crossroads Bank for Enterprises (CBE/KBO) to register on the PEPPOL network.

  • You must have an outsourcing authorization agreement when using Sovos as your service provider.

  • You must understand Belgium's January 2026 B2B e-invoicing mandate timeline.

Available products

  • be_invoice_outbound_1.0

  • be_invoice_inbound_1.0

Schemas and formats

Belgium requires mandatory support of EN 16931 (CIUS PEPPOL BIS Invoice on PEPPOL network) for both B2G and B2B mandates.

Both inbound and outbound flows support these documents:

  • Invoice and credit notes - PEPPOL BIS Billing 3.0 and SCI

  • Status - PEPPOL Invoice Response

Sovos validates documents using the PEPPOL BIS Billing 3.0 schematron.

General system characteristics

Belgium currently follows a post-audit system, which supports invoices in any format, including electronic, with buyer consent. In post-audit regimes, invoice issuers must maintain content integrity and origin authenticity from issuance through the required storage period.

Starting January 1, 2026, Belgium requires B2B e-invoicing. The e-invoicing mandate applies to taxpayers established in Belgium, who must issue and transmit invoices in a structured electronic format.

As part of the e-invoicing mandate, Belgium established PEPPOL as the default method for the exchange of invoices, but the trading parties can mutually agree on other processes and format. Starting in 2028, Belgium plans to introduce a CTC component, transitioning from a post-audit model to a CTC model. This shift will likely require the transmission of invoice data to tax authorities.

Network architecture

Belgium uses the PEPPOL four-corner model for e-invoice exchange:

  1. Supplier (Corner 1) - Creates and sends the invoice

  2. Supplier's Access Point (Corner 2) - Validates and transmits the invoice through PEPPOL network

  3. Buyer's Access Point (Corner 3) - Receives and validates the invoice

  4. Buyer (Corner 4) - Receives the invoice for processing

Sovos acts as the Access Point (corner 2 for suppliers, corner 3 for buyers) in this model. Sovos handles document validation, format conversion, and secure transmission through the PEPPOL network.

Note:

Future changes: Starting in 2028, Belgium plans to introduce a five-corner model that includes the tax authority as the fifth corner for real-time reporting requirements.

Belgium-specific validations

Belgium applies PEPPOL BIS Billing 3.0 validations plus one Belgium-specific rule:

PEPPOL-COMMON-R043: Validates Belgian enterprise number format (0208 scheme identifier). This rule checks the enterprise number to follow the correct structure required by Belgian authorities.

All new documents go through validation stages in this order:

  1. Schema validation - Sovos validates XSD structure
  2. Duplicate detection - Sovos checks if document already exists

  3. Internal format validation - Sovos checks data model consistency

  4. Mandate validation - Sovos applies PEPPOL BIS 3.0 schematron rules

  5. Additional data enrichment and processing

Note:

Duplicate detection runs early to prevent unnecessary processing of documents that already exist in the system.

PEPPOL participant identifiers

To send and receive invoices through PEPPOL, your company must register on the PEPPOL network using a participant identifier. The Belgian PEPPOL Authority (BOSA) requires all Belgian companies to register using scheme 0208 as the primary identifier. Additional schemes are optional and improve discoverability across different trading contexts and partner requirements.

Scheme IDNameFormatStatus
0208Belgian Enterprise Number (CBE)10 digitsRequired (must register first)
9925Belgian VAT NumberBE + 10 digitsOptional
0088Global Location Number (GLN)13 digitsOptional
0060DUNS Number9 digitsOptional

A complete PEPPOL Participant ID uses this format: iso6523-actorid-upis::0208:0123456789

You can register optional schemes only after the 0208 endpoint exists. For registration steps, see Retrieve Invoice.

0208 format requirements
The 0208 scheme uses your enterprise number from the Belgian Crossroads Bank for Enterprises (CBE/KBO). The scheme (0208) is specified in the schemeID attribute, while the identifier value has only the 10-digit enterprise number.

Format requirements:

  • Exactly 10 digits

  • Numbers only (0-9)

  • No "BE" prefix

  • No "0208" prefix in the identifier value

Example: <cbc:EndpointID schemeID="0208">0123456789</cbc:EndpointID>

Common formatting errors:

  • Including "BE" prefix: BE0123456789 (incorrect)

  • Including scheme in value: 0208:0123456789 (incorrect)

  • Using spaces or hyphens: 0123 456 789 or 0123-456-789 (incorrect)

If the format is incorrect, you will receive error PEPPOL-COMMON-R043: "Belgian enterprise number MUST be stated in the correct format".

Error handling

When handling errors, the client application must follow the Indirect Tax API's error handling principles, as specified in the error handling documentation.

In general, all error codes in the 400 range are client errors, which you need to analyze. After fixing the error, you can resend the request. Error codes 408 and 429 are exceptions: In these cases, you should wait at least 60 seconds before retrying. Error codes in the 500 range are server errors. In that case, resend the request according to the instructions given on the error handling documentation, which also includes a full list of error codes Indirect Tax API can return.

Errors coming from the tax authority are shown in the application response. This means that if the tax authority rejects the request, SCIResponseCode is set to "RE" and any error codes will be located in the SCIGovtStatusCode element.

Issue invoice

The following diagram provides a detailed overview of the inbound flow process for e-invoice retrieval in PEPPOL network.

Belgium outbound flow.

Step 1: Supplier creates Standard Business Document

Each invoice sent to Sovos must be part of a Standard Business Document . This document includes a Standard Business Document Header (SBDH) and a Sovos Document node, which in turn includes a Sovos Canonical Invoice (SCI). To create the SBD, follow the detailed instructions in the SBDH, Sovos Document, and SCI pages. The following section explains some of the most important elements that you should include in the SBD and the invoice.

SBDH - Invoice / Lifecycle
The SBDH must be created using the following values:
Note:

Include all the required nodes as specified in the SBDH schema. If the information cannot be provided, and the respective required node has not been mentioned on the current page, for example, the receiver.identifier, the node can be left empty but must still be included in the SBDH.

NodeRequiredAttributesValue
StandardBusinessDocumentHeader.Sender.IdentifierYesAuthority="BE"Supplier's VAT Number
StandardBusinessDocumentHeader.Receiver.IdentifierYesAuthority="BE"Buyer's VAT Number
StandardBusinessDocumentHeader.DocumentIdentification.StandardYesurn:oasis:names:specification:ubl:schema:xsd:Invoice-2
StandardBusinessDocumentHeader.DocumentIdentification.TypeVersionYes2.1
StandardBusinessDocumentHeader.DocumentIdentification.TypeYesInvoice
StandardBusinessDocumentHeader.BusinessScope.Scope (with child nodes)Yes

Child node Type: Country

Child node Identifier: BE

StandardBusinessDocumentHeader.BusinessScope.Scope (with child nodes)Yes

Child node Type: ProcessType

Child node Identifier: Outbound

StandardBusinessDocumentHeader.BusinessScope.Scope (with child nodes)Yes

Child node Type: CompanyCode

Child node Identifier: Supplier's VAT Number

StandardBusinessDocumentHeader.BusinessScope.Scope (with child nodes)Yes

Child node Type: SenderDocumentId

Child node Identifier: A unique document ID. We recommend the ERP document ID.

StandardBusinessDocumentHeader.BusinessScope.Scope (with child nodes)Yes

Child node Type: SenderSystemId

Child node Identifier: The definition of formats, protocols, and integration rules with our system is now incorporated into ERP System Communications through the setup of these configurations on top of a predefined ERP System ID. The value must be defined by you and configured by SOVOS support.

StandardBusinessDocumentHeader.BusinessScope.Scope (with child nodes)Yes

Child node Type: BusinessCategory

Child node Identifier: B2B

StandardBusinessDocumentHeader.BusinessScope.Scope (with child nodes)Yes

Child node Type: Mapping.InputSchema

Child node Identifier: One of: ALL-PEPPOLBISUBL-3.0-INVOICE-1.0 ALL-PEPPOLSCI-1.0-INVOICE-1.0

StandardBusinessDocumentHeader.BusinessScope.Scope

BusinessService.BusinessServiceName

YesDefault
SovosDocument.SovosCanonicalInvoice.Invoice*Yes (only if document type is ALL-PEPPOLSCI-1.0-INVOICE-1.0) SCI
SovosDocument.SovosLegalDocument.Base64Document*Yes (for document types: ALL-PEPPOLBISUBL-3.0-INVOICE-1.0) Other supported formats

Step 2: Supplier sends SBD to Sovos

The supplier sends a POST request to the /documents endpoint.

The request must include the following request body parameters:

NameTypeRequiredDescription
datastringYes The Base64-encoded SBD from step 1
dataEncodingstringYesUse "base64"
Request sample
curl --location --request POST ' https://api-test.sovos.com/v1/documents' \
--header 'x-correlationId: SET-TO-UNIQUE-VALUE' \
--header 'Authorization: Bearer TOKEN' \
--header 'Content-Type: application/json' \
--data-raw ' {
   "data": "base64_invoice_data",
   " dataEncoding": "base64",
}'
Response sample
{
	"status": 202,
	"message": "Accepted",
	"success": true,
	"timestamp": 1672405631469,
	"data": {
		"documentId": "DOCUMENT-ID",
         "transactionId": "TRANSACTION-ID"
	}
}
Response sample - failure
{
  "success": false,
  "status": 400,
  "message": "Bad Request",
  "timestamp": 1601666692,
  "errors": [
    {
      "subCode": " XSD_SYNTAX_ERROR",
      "message": " An XML comment cannot contain '--', and '-' cannot be the last character. Line 276, position 11. "
    }
  ]
}

Step 3: Sovos validates the document

Sovos performs the necessary semantic, syntactic, and legal checks, and verifies that the XML file matches the official schema. If validation fails, the application returns an error message.

The application generates a response with validation results and status codes:

FlowStatus codePortal status
Outbound215Made available
Outbound401Rejected
Inbound204SendByThePlatform

Step 4: Mapping

Once the XML passes Sovos validation, Sovos converts the document to the appropriate PEPPOL format (BIS3 or PINT). The conversion depends on the recipient's capabilities as published in the PEPPOL SMP.

Step 5: Sovos generates and transmits the document

Sovos generates the document and transmits it to the buyer's PEPPOL Access Point (AP).

Step 6: Buyer's Access Point receives the document

The buyer's access point validates the received document and makes it available to the buyer.

Step 7: Buyer sends the invoice response through PEPPOL

If Sovos issuer wants to receive status updates from the buyer, the issuer must associate the lifecycle to the corresponding endpoint. If the buyer can send invoice response documents, the issuer receives an application response with the corresponding codes:

Peppol Status CodeCN statusCN status codesDescription
ABReceived216Document acknowledged by the recipient
APApproved203Document accepted by the recipient
RERejected405Document rejected by the recipient
IPIn Process108Document being processed by the recipient
UQDisputed218Document disputed by the recipient
CAConditionally Accepted225Document conditionally accepted by the recipient
PDPayment sent213Document payment sent by the recipient

Step 8: Supplier retrieves the application responses

Attachments configuration

There are three ways you can access your attachments:

  • As binary data, so the file is embedded in the Base64-encoded application response.

  • As open download links, in which the response contains a public URL to download the file.

  • As secure download links, in which you need to use the Indirect Tax API's bearer token to download the attachment.

By default, Sovos configures your attachments as open download links to avoid potential size limitations when retrieving responses. To improve security, you should configure them as secure links. Then, make a GET call to the secure link returned by the Indirect Tax API, and include the API token. Sample request:

curl --location 'https://einvoicing-api.sovos.com/download/api/v1/download/JqYyqliXiJFKhXshnBQZfW3qpfwATVGE5Q73T41JUynNLJD8zHy5VH__9qzL9No-Kia9olSw3_lNX3KmaA9Je89Xx--vk5pQjyKx0iT_4CwPSABD0Yg7uxXZ8SNiliEhFY-4TOX7m1TV5FwwfqntehbGaiGMI2JVYu18VBDiC_0/plain%27 \
--header 'Authorization: Bearer TOKEN'Y

As a response to the initial sending of the document, the client receives a JSON response message with an HTTP status code of 202 (asynchronous transaction). This means that the supplier must retrieve the application responses that become available during the transaction.

To retrieve the application responses, the supplier can use the following API methods:

  • GET /notifications/BE

  • GET /documents/BE/{documentId}/notifications

GET /notifications/BE
The supplier can send a GET request to the /notifications/BE endpoint to retrieve application responses that match the set search criteria. To make this request, set the following query parameters:
NameTypeRequiredDefaultDescription
taxIdstringNoInclude only notifications related to the specified taxId. This value is related to the CompanyCode in the SBDH. It's important to note that once a request doesn't include this parameter it will return all notifications related to the country and sourceSystemId.
pageintegerNoTo specify the page to be returned, enter a value between 1 and 10.
includeAcknowledgedbooleanNofalseUse "true" to include previously acknowledged notifications, within 24 hours of acknowledgment, in the response.
perPageintegerNoTo specify the number of results for the returned page, use a value between 1 and 100.
sourceSystemIdstringYesInclude only notifications related to documents that originate from the given source system. This value is related to the SenderSystemId in the SBDH.
Note:
Document routing configuration
The system determines document routing based on the following priority:
  • With configured endpoint: Use the ERP System ID value configured on the endpoint

  • Without a configured endpoint: Use the ERP System ID value from the document's SBDH.

processTypestringNoUse "0" to only include notifications related to outbound documents.
Request sample
curl --location --request GET ' https://api-test.sovos.com/v1/notifications/BE?page=1&perPage=2&taxId={taxId}&sourceSystemId={sourceSystemId}&processType=0' \
--header 'x-correlationId: SET-TO-UNIQUE-VALUE' \
--header 'Authorization: Bearer TOKEN'
Response sample
{
 "status": 200,
"message": "Notifications Listed",
"success": true,
"timestamp": 1724063214026,
"data": {
    "pageState": {
        "page": 1,
        "perPage": 10,
        "totalEntries": 2,
        "totalPages": 1
    },
    "notifications": [
        {
            "notificationId": "8e807567-..-e1f9524a76b7",
            "correlationId": "6dc9ef7c-..-3b9c6b413fd9",
            "appPrefix": "CN",
            "metadata": {
                "productId": "be_invoice_outbound_1.0",
                "documentId": "f6bba4ff-..-e2f9524a76b7",
                "erpSystemId": "Outbound_ERPSystemID",
                "processType": "0",
                "taxId": "123456789",
                "sciCloudStatusCode": "214"
            },
            "content": "PD94..jYXRpb25SZXNwb25zZT4=",
            "createdDate": 1724059702440

      }
    ]
  }
GET /documents/BE/{documentId}/notifications

The supplier can send a GET request to the /documents/BE/{documentId}/notifications endpoint to retrieve application responses related to a single document. To make this request, set the following parameter:

NameTypeRequiredDescription
documentIdstringYesThe document ID from step 2
Request sample
curl --location --request GET ' https://api-test.sovos.com/v1/notifications/BE/{documentId}/notifications' \
--header 'x-correlationId: SET-TO-UNIQUE-VALUE' \
--header 'Authorization: Bearer TOKEN'
Response sample
{
	"status": 200,
	"message": " Notifications Listed",
	"success": true,
	"timestamp": 1672405631469,
	"data": {
		"pageState": { … },
		"notifications":[{ … }],
	}
}

Step 9: Supplier marks application response as acknowledged

After retrieving application responses, the supplier must process them and mark them as acknowledged. To do this, send a PUT request to the /notifications/BE endpoint.

To make this request, set the following request body parameters:

NameTypeRequiredDescription
statusstringYesUse "read"
notificationIdstringYesThe notification ID
Request sample
curl --location --request PUT ' https://api-test.sovos.com/v1/notifications/BE' \
--header 'x-correlationId: SET-TO-UNIQUE-VALUE' \
--header 'Authorization: Bearer TOKEN' \
--header 'Content-Type: application/json' \
--data-raw ' {
   "status": "read",
   " notificationId": "NOTIFICATION-ID",
}'
Response sample
{
	"status": 200,
	"message": "Notifications acknowledged successfully.",
	"success": true,
	"timestamp": 1672405631469 
}

Retrieve invoice

The following diagram provides a detailed overview of the inbound flow process for e-invoice retrieval in the PEPPOL network.

Belgium inbound flow

Step 1: Supplier registers company endpoints

To receive invoices through PEPPOL, you must register your company endpoints before Sovos can route inbound documents to your system. Endpoints define your PEPPOL participant identifier and link incoming documents to your ERP system for notification routing.

Register the mandatory 0208 endpoint first. Attempting to register any optional scheme before 0208 exists returns error BELMA-204.

Request
POST /v2/configurations/organizations/{orgId}/companies/{companyId}/endpoints
Content-Type: application/json
Request body
{
  "productId": "be_invoice_inbound_1.0",
  "codeComponents": [
    {
      "field": "META-SCHEME",
      "value": "iso6523-actorid-upis"
    },
    {
      "field": "SCHEME",
      "value": "0208"
    },
    {
      "field": "IDENTIFIER",
      "value": "0123456789"
    }
  ],
  "supportedDocuments": [
    {
      "type": "Invoice",
      "subTypes": ["Invoice", "CreditNote"]
    },
    {
      "type": "LifeCycle",
      "subTypes": ["LifeCycle"]
    }
  ],
  "erpSystemId": "Inbound_ERPSystemID"
}

The IDENTIFIER value must be your 10-digit CBE number without the "BE" prefix. For format requirements, see PEPPOL Participant Identifiers.

Register an optional 9925 endpoint
After the 0208 endpoint is registered, you can optionally add a VAT number identifier to improve discoverability for cross-border trading partners.
Request body
{
  "productId": "be_invoice_inbound_1.0",
  "codeComponents": [
    {
      "field": "META-SCHEME",
      "value": "iso6523-actorid-upis"
    },
    {
      "field": "SCHEME",
      "value": "9925"
    },
    {
      "field": "IDENTIFIER",
      "value": "BE0123456789"
    }
  ],
  "supportedDocuments": [
    {
      "type": "Invoice",
      "subTypes": ["Invoice", "CreditNote"]
    }
  ],
  "erpSystemId": "Inbound_ERPSystemID"
}

The 9925 IDENTIFIER value must include the "BE" prefix followed by 10 digits (for example, BE0123456789).

Step 2: Sovos receives and validates the document

When a buyer sends an invoice through their Access Point, Sovos receives and validates the document through a comprehensive validation pipeline.

Validation pipeline
All inbound documents go through these validation stages:
Schema validation
Sovos validates the XML structure against the XSD schema to verify the document is well-formed and has all required elements.
Internal format validation
Sovos checks data model consistency and internal field requirements. This validates the document can be processed by Sovos systems.
Mandate validation
Sovos applies PEPPOL BIS Billing 3.0 schematron business rules plus Belgium-specific validations. This includes:
  • PEPPOL-COMMON-R043: Belgian enterprise number format validation

  • PEPPOL-EN16931-R120: Quantity validation (negative quantities are not allowed except in credit notes)

  • 100+ additional PEPPOL BIS 3.0 validation rules

Duplicate detection
Sovos checks if the same document already exists in the system using a composite DocumentId that the system generates from five fields:
  • Seller Country Code

  • Seller Tax ID

  • Document Number (invoice number assigned by seller)

  • Document Type Code

  • Civil Year (extracted from document date)

Additionally, the system checks for the document direction (inbound or outbound).

If a document with the same DocumentId already exists in your workspace with the same direction, Sovos rejects it as a duplicate with error code NS-17017-2 and message: An invoice must have a unique document number for a supplier in a given financial year.

Important:

Duplicate detection is case-sensitive and compares values as-is without normalization. The same document can exist in different workspaces without triggering duplicate detection.

Important validation notes
Negative quantities
Sovos will fail validation on documents that have negative line quantities, and will return error code NS-17017006 (PEPPOL-EN16931-R120). Use credit notes for corrections instead of negative quantities in invoices.
Buyer country extraction
Sovos extracts the buyer's country from this XML path: cac:AccountingCustomerParty/cac:Party/cac:PartyTaxScheme/cac:TaxScheme/cbc:ID

If this field is missing, you will receive error Could not get buyer country from invoice" with no fallback behavior.

Syntax errors
Sovos rejects documents with XML syntax errors (malformed XML, invalid characters) during initial reception and does not generate notifications. This is expected behavior.
Duplicate detection scope
The system limits duplicate checking to your workspace by design. You can submit the same document to different workspaces without triggering duplicate detection. This supports multi-tenant scenarios where different organizations can legitimately process the same invoice.

When validation fails, the system creates an error transaction with:

  • Rule ID (such as PEPPOL-EN16931-R120)

  • Error description

  • Location in the document where the error occurred

  • Specific data that caused the failure

Step 3: Sovos makes the document available to the buyer

After the document passes syntactic and semantic validations, Sovos maps the document from the PEPPOL format (BIS3/PINT) to the buyer's integration format. Buyers can then retrieve the mapped document.

Step 4: Buyer retrieves the application responses

Understanding notification structure
Each notification has the following fields:
FieldTypeDescription
notificationIdstringUnique identifier for this notification
correlationIdstringLinks related notifications
appPrefixstringApplication prefix (always CN for Compliance Network)
metadataobjectMetadata document details
metadata.productIdstringBelgium inbound product identifier (be_invoice_inbound_1.0)
metadata.documentIdstringUnique document identifier
metadata.erpSystemIdstringERP System ID configured on your company endpoint
metadata.processTypestringAlways 1 for inbound documents
metadata.taxIdstringYour company tax identification number
metadata.sciCloudStatusCodestringStatus code
transactionIdstringTransaction ID for document processing
sciResponseCodestringOverall compliance status. AP = Approved
sciStatusActionstringRequired action based on sciResponseCode. NOA = No Action Required
contentstringBase64-encoded document
createdDateintegerTimestamp when notification was created

The system excludes erpDocumentId from inbound lifecycle notifications. This behavior is intentional - inbound documents don't have an ERP document ID since they originate from external senders. The documentId field serves as the unique identifier for inbound documents.

The event-driven architecture and network conditions may deliver notifications out of order. Always use the createdDate timestamp to determine the actual sequence of events, not the order in which notifications arrive.

PDF availability in inbound notifications
When PDFs are available:
  • The system automatically generates PDFs for successfully validated inbound documents

  • Sovos includes the PDF in lifecycle notifications after validation completes

  • Access the PDF over a download link

If you expect a PDF but don't receive one, check the document's validation status and lifecycle events for rejection reasons.

Inbound vs outbound notification differences
Key differences between inbound and outbound notifications:
FieldInbound (processType=1)Outbound (processType=0)Notes
processType10Distinguishes direction
erpDocumentIdNOT includedIncludedInbound documents don't have ERP IDs
documentIdPrimary identifierSecondary identifierUse this to track inbound documents
PDF generationAfter validationAfter submissionTiming may differ
Status codesSame codesSame codesMeaning is consistent

Why erpDocumentId is excluded for inbound:

  • When you submit outbound documents, you provide the erpDocumentId from your ERP system. Inbound documents originate externally, so there is no ERP document ID to include. The system intentionally excludes this field from inbound lifecycle notifications to prevent confusion.

  • Always use documentId as the primary identifier for inbound documents when tracking their lifecycle.

To retrieve the application responses, use the following API endpoint:

GET /notifications/BE
The supplier can send a GET request to the /notifications/BE endpoint to retrieve application responses that match the set search criteria. To make this request, set the following query parameters:
NameTypeRequiredDefaultDescription
taxIdstringNo

Include only notifications related to the specified taxId. This value is related to the CompanyCode in the SBDH.

Note:

If a request does not include this parameter, it returns all of the notifications related to the country and sourceSystemId.

pageintegerNoTo specify the page to be returned, use a value between 1 and 10.
perPageintegerNoTo specify the number of results for the returned page, use a value between 1 and 100.
sourceSystemIdstringYesInclude only notifications related to documents that originate from the given source system. This value is related to the ERP System ID configured on the company endpoint.
includeAcknowledgedbooleanNofalse Use "true" to include previously acknowledged notifications in the result.
processTypestringNoUse "1" to only include notifications related to inbound documents.
Request sample
curl --location --request GET \
'https://api-test.sovos.com/v1/notifications/BE?page=1&perPage=2&taxId={taxId}&sourceSystemId={sourceSystemId}&processType=0' \
--header ' x-correlationId: developer-guide' \
--header 'Authorization: Bearer TOKEN' \
--header 'Content-Type: application/json'
Response sample
{
 "status": 200,
"message": "Notifications Listed",
"success": true,
"timestamp": 1724063214026,
"data": {
    "pageState": {
        "page": 1,
        "perPage": 10,
        "totalEntries": 2,
        "totalPages": 1
    },
    "notifications": [
        {
            "notificationId": "8e807567-..-e1f9524a76b7",
            "correlationId": "6dc9ef7c-..-3b9c6b413fd9",
            "appPrefix": "CN",
            "metadata": {
                "productId": "be_invoice_inbound_1.0",
                "documentId": "f6bba4ff-..-e2f9524a76b7",
                "erpSystemId": "Inbound_ERPSystemID ",
                "processType": "1",
                "taxId": "123456789",
                "sciCloudStatusCode": "215"
            },
            "content": "PD94..jYXRpb25SZXNwb25zZT4=",
            "createdDate": 1724059702440

      }
    ]
  }
}

The content field contains a Base64-encoded UBL ApplicationResponse XML. Decode it to access document download links and processing status.

Decoded ApplicationResponse
<?xml version="1.0" encoding="utf-8"?>
<ApplicationResponse xmlns="urn:oasis:names:specification:ubl:schema:xsd:ApplicationResponse-2">
  <cbc:ID>07f079a8-4a7c-4725-8fc6-8479abaed15c</cbc:ID>
  <cbc:IssueDate>2026-01-26</cbc:IssueDate>
  <cac:ReceiverParty>
    <cbc:EndpointID schemeID="0208">6185204901</cbc:EndpointID>
  </cac:ReceiverParty>
  <cac:DocumentResponse>
    <cac:Response>
      <cbc:ResponseCode listID="SCIResponseCode">AP</cbc:ResponseCode>
    </cac:Response>
    <cac:DocumentReference>
      <cbc:DocumentTypeCode name="ALL-PEPPOLSCI-1.0-INVOICE-1.0">Integration</cbc:DocumentTypeCode>
      <cac:Attachment>
        <cac:ExternalReference>
          <cbc:URI schemeID="Integration">https://xxxx.sovos.com/download/....</cbc:URI>
        </cac:ExternalReference>
      </cac:Attachment>
    </cac:DocumentReference>
    <cac:DocumentReference>
      <cbc:DocumentTypeCode name="ALL-PEPPOLBISUBL-3.0-INVOICE-1.0">Legal</cbc:DocumentTypeCode>
      <cac:Attachment>
        <cac:ExternalReference>
          <cbc:URI schemeID="Legal">https://xxxx.sovos.com/download/....</cbc:URI>
        </cac:ExternalReference>
      </cac:Attachment>
    </cac:DocumentReference>
    <cac:DocumentReference>
      <cbc:DocumentTypeCode>PDF</cbc:DocumentTypeCode>
      <cac:Attachment>
        <cac:ExternalReference>
          <cbc:URI schemeID="PDF">https://xxxx.sovos.com/download/....</cbc:URI>
        </cac:ExternalReference>
      </cac:Attachment>
    </cac:DocumentReference>
  </cac:DocumentResponse>
</ApplicationResponse>
Attachment types
Each decoded ApplicationResponse includes up to three document references. All links require a bearer token for authentication.
TypeDescription
IntegrationDocument in the format configured for your ERP system. The name attribute indicates the format: ALL-PEPPOLSCI-1.0-INVOICE-1.0 = SCI, ALL-PEPPOLBISUBL-3.0-INVOICE-1.0 = PEPPOL BIS3
LegalOriginal PEPPOL BIS3 document as received
PDFPDFHuman-readable PDF rendering of the document

Step 5: Supplier marks application response as acknowledged

After retrieving application responses, the supplier must process them and mark them as acknowledged. Send a PUT request to the /notifications/BE endpoint.

To make this request, set the following request body parameters:

NameTypeRequiredDescription
statusstringYesUse "read"
notificationIdstringYesThe notification ID
Request sample
curl --location --request PUT 'https://api-test.sovos.com/v1/notifications/BE' \
--header ' x-correlationId: developer-guide' \
--header 'Authorization: Bearer TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '[
	"status": "read",
	"notificationId": "NOTIFICATION-ID",
]'
Response sample
{
	"status": 200,
	"message": "Notifications acknowledged successfully.",
	"success": true,
	"timestamp": 1672405631469 
}