Skip to content

Belgium — E-INVOICE BE (Unified API)

In Belgium, e-invoicing is mandatory and regulated by the Federal Public Service Finance (FPS Finance). It follows the Peppol model: invoices are exchanged via the Peppol network using the Peppol BIS format, and all records must be archived for 10 years in the electronic compliant format.

This page covers the Belgium-specific requirements that complement the General Step-by-Step Integration. Make sure you have the following taxpayer information ready before proceeding:

  • tax_id_number — KBO/BCE number
  • vat_id_number — Belgian VAT ID / VATIN
  • credentials — Belgian fiscalization credentials
  • name — registered legal name and trade name of the company or individual
  • address — registered legal address of the company or individual

Sending of e-invoices: recipient requirements

Section titled “Sending of e-invoices: recipient requirements”

As described in the general integration guide, the recipient of an e-invoice is required to be a BUSINESS type and the invoicing block is required to be populated. For Belgium, this means setting invoicing.type = PEPPOL and invoicing.identifier to the recipient’s Peppol Network Identifier.

fiskaly also receives e-invoices on your behalf over the Peppol network — you don’t need to run or maintain your own access point. Once your Taxpayer is publicly listed on the network, any business can address an invoice to it; fiskaly takes delivery and stores each one as a Record you can retrieve through the API.

Receiving is enabled by default when you create the E_INVOICE_SERVICE System: fiskaly registers your Taxpayer’s Peppol identifier on the network, with no extra configuration required to start receiving.

Every invoice addressed to your Taxpayer is received, validated, and stored automatically as a Record — there’s no webhook, so you poll for new ones:

  1. Call listRecords and filter for E_INVOICE::RECEPTION.
  2. For each new Record, call retrieveRecord with compliance-artifact to get the signed XML.

listRecords returns the most recent Records (limit defaults to 10, newest first), so track what you’ve already processed.