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:
Supplier (Corner 1) - Creates and sends the invoice
Supplier's Access Point (Corner 2) - Validates and transmits the invoice through PEPPOL network
Buyer's Access Point (Corner 3) - Receives and validates the invoice
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.
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:
- Schema validation - Sovos validates XSD structure
Duplicate detection - Sovos checks if document already exists
Internal format validation - Sovos checks data model consistency
Mandate validation - Sovos applies PEPPOL BIS 3.0 schematron rules
Additional data enrichment and processing
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 ID | Name | Format | Status |
|---|---|---|---|
| 0208 | Belgian Enterprise Number (CBE) | 10 digits | Required (must register first) |
| 9925 | Belgian VAT Number | BE + 10 digits | Optional |
| 0088 | Global Location Number (GLN) | 13 digits | Optional |
| 0060 | DUNS Number | 9 digits | Optional |
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
0208scheme 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 789or0123-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.
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.Node Required Attributes Value StandardBusinessDocumentHeader.Sender.Identifier Yes Authority="BE" Supplier's VAT Number StandardBusinessDocumentHeader.Receiver.Identifier Yes Authority="BE" Buyer's VAT Number StandardBusinessDocumentHeader.DocumentIdentification.Standard Yes urn:oasis:names:specification:ubl:schema:xsd:Invoice-2 StandardBusinessDocumentHeader.DocumentIdentification.TypeVersion Yes 2.1 StandardBusinessDocumentHeader.DocumentIdentification.Type Yes Invoice StandardBusinessDocumentHeader.BusinessScope.Scope (with child nodes) Yes Child node
Type: CountryChild node
Identifier: BEStandardBusinessDocumentHeader.BusinessScope.Scope (with child nodes) Yes Child node
Type: ProcessTypeChild node
Identifier: OutboundStandardBusinessDocumentHeader.BusinessScope.Scope (with child nodes) Yes Child node
Type: CompanyCodeChild node
Identifier: Supplier's VAT NumberStandardBusinessDocumentHeader.BusinessScope.Scope (with child nodes) Yes Child node
Type: SenderDocumentIdChild node
Identifier: A unique document ID. We recommend the ERP document ID.StandardBusinessDocumentHeader.BusinessScope.Scope (with child nodes) Yes Child node
Type: SenderSystemIdChild 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: BusinessCategoryChild node
Identifier: B2BStandardBusinessDocumentHeader.BusinessScope.Scope (with child nodes) Yes Child node
Type: Mapping.InputSchemaChild node
Identifier: One of: ALL-PEPPOLBISUBL-3.0-INVOICE-1.0 ALL-PEPPOLSCI-1.0-INVOICE-1.0StandardBusinessDocumentHeader.BusinessScope.Scope BusinessService.BusinessServiceName
Yes Default 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:
| Name | Type | Required | Description |
|---|---|---|---|
| data | string | Yes | The Base64-encoded SBD from step 1 |
| dataEncoding | string | Yes | Use "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:
| Flow | Status code | Portal status |
|---|---|---|
| Outbound | 215 | Made available |
| Outbound | 401 | Rejected |
| Inbound | 204 | SendByThePlatform |
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 Code | CN status | CN status codes | Description |
|---|---|---|---|
| AB | Received | 216 | Document acknowledged by the recipient |
| AP | Approved | 203 | Document accepted by the recipient |
| RE | Rejected | 405 | Document rejected by the recipient |
| IP | In Process | 108 | Document being processed by the recipient |
| UQ | Disputed | 218 | Document disputed by the recipient |
| CA | Conditionally Accepted | 225 | Document conditionally accepted by the recipient |
| PD | Payment sent | 213 | Document 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:
Name Type Required Default Description taxId string No Include only notifications related to the specified taxId. This value is related to theCompanyCodein 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 andsourceSystemId.page integer No To specify the page to be returned, enter a value between 1 and 10. includeAcknowledged boolean No false Use "true" to include previously acknowledged notifications, within 24 hours of acknowledgment, in the response. perPage integer No To specify the number of results for the returned page, use a value between 1 and 100. sourceSystemId string Yes Include only notifications related to documents that originate from the given source system. This value is related to the SenderSystemIdin 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.
-
processType string No Use "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}/notificationsendpoint to retrieve application responses related to a single document. To make this request, set the following parameter:Name Type Required Description documentId string Yes The 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:
| Name | Type | Required | Description |
|---|---|---|---|
| status | string | Yes | Use "read" |
| notificationId | string | Yes | The 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.
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-2and 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:IDIf 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:
Field Type Description notificationId string Unique identifier for this notification correlationId string Links related notifications appPrefix string Application prefix (always CNfor Compliance Network)metadata object Metadata document details metadata.productId string Belgium inbound product identifier ( be_invoice_inbound_1.0)metadata.documentId string Unique document identifier metadata.erpSystemId string ERP System ID configured on your company endpoint metadata.processType string Always 1for inbound documentsmetadata.taxId string Your company tax identification number metadata.sciCloudStatusCode string Status code transactionId string Transaction ID for document processing sciResponseCode string Overall compliance status. AP= ApprovedsciStatusAction string Required action based on sciResponseCode. NOA= No Action Requiredcontent string Base64-encoded document createdDate integer Timestamp when notification was created The system excludes
erpDocumentIdfrom inbound lifecycle notifications. This behavior is intentional - inbound documents don't have an ERP document ID since they originate from external senders. ThedocumentIdfield serves as the unique identifier for inbound documents.The event-driven architecture and network conditions may deliver notifications out of order. Always use the
createdDatetimestamp 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:
Field Inbound (processType=1) Outbound (processType=0) Notes processType 1 0 Distinguishes direction erpDocumentId NOT included Included Inbound documents don't have ERP IDs documentId Primary identifier Secondary identifier Use this to track inbound documents PDF generation After validation After submission Timing may differ Status codes Same codes Same codes Meaning is consistent Why
erpDocumentIdis excluded for inbound:When you submit outbound documents, you provide the
erpDocumentIdfrom 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
documentIdas 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/BEendpoint to retrieve application responses that match the set search criteria. To make this request, set the following query parameters:Name Type Required Default Description taxId string No Include only notifications related to the specified taxId. This value is related to the
CompanyCodein the SBDH.Note:If a request does not include this parameter, it returns all of the notifications related to the country and
sourceSystemId.page integer No To specify the page to be returned, use a value between 1 and 10. perPage integer No To specify the number of results for the returned page, use a value between 1 and 100. sourceSystemId string Yes Include 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. includeAcknowledged boolean No false Use "true" to include previously acknowledged notifications in the result. processType string No Use "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
ApplicationResponseincludes up to three document references. All links require a bearer token for authentication.Type Description Integration Document 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 BIS3Legal Original PEPPOL BIS3 document as received PDF PDFHuman-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:
| Name | Type | Required | Description |
|---|---|---|---|
| status | string | Yes | Use "read" |
| notificationId | string | Yes | The 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 }
