Skip to main content
Belgium uses the Peppol network for e-invoicing, which became mandatory in January 2026. The format used is Peppol BIS Billing UBL — the standard Peppol format — with one important Belgian-specific requirement: customers always expect to receive a PDF alongside the XML. To handle this, the workflow first downloads the existing Chargebee PDF and attaches it to the UBL document before sending it through Peppol. This guide assumes you have already connected the Chargebee app and completed the general setup — see the Chargebee overview first if you haven’t. Required apps: Peppol, OASIS UBL
Before processing any invoices, you must register your supplier on the Peppol network through Invopop. See the Peppol guide for registration steps, and the Belgium Peppol guide for Belgium-specific details.

Workflow

Chargebee Peppol

Syncs with Chargebee, downloads the PDF, looks up the customer’s Peppol participant ID, and sends via the Peppol network.

Participant ID lookup

Belgium enforces a standard set of Peppol participant ID schemes, all derived from the customer’s BCE number (Belgian company registration number). Since this number is typically available in Chargebee, the Lookup Peppol participant step can automatically resolve the correct Peppol ID for each customer — no manual setup required in most cases. If you want to specify a Peppol ID manually for a particular customer (or override the lookup result), you can do so with the following custom field:
The metadata keys listed above follow the Chargebee metadata format (hyphens, no cf_ prefix). If you prefer to use custom fields instead, replace hyphens with underscores and add the cf_ prefix. See Custom fields & metadata for details.

FAQ

Install the Peppol app, register your supplier with BOSA-migrated participant ID, and use a workflow that generates a Peppol BIS Billing 3.0 document and sends it via the Lookup → Send actions.
In Belgium specifically there is no need to send a copy to the tax authority until the e-reporting mandate comes into effect in Jan 2028.
See the Belgium tax regime in GOBL for tax IDs and category codes. The Peppol BIS Billing 3.0 mapping is shared across EU members and lives in peppol-bis-v3.
Belgium uses two Peppol scheme identifiers:
  • 0208 (KBO/BCE enterprise number) — This is the preferred and default scheme for Belgium. It corresponds to the company’s KBO/BCE number (Kruispuntbank van Ondernemingen / Banque-Carrefour des Entreprises), which is the official Belgian business register. Most Belgian companies are registered in Peppol under this scheme.
  • 9925 (BE VAT number) — This is an older, alternative scheme based on the Belgian VAT number. It is typically used by entities that have a Belgian VAT number but are not registered in the KBO/BCE — for example, foreign companies with a Belgian VAT registration.
When you should use 0208: Always use 0208 as your first choice when sending invoices to Belgian companies. This is the standard identifier and what the vast majority of Belgian businesses are registered under.When 9925 may be needed: If you get a “receiver not found” error when sending to a Belgian company using 0208, and you have confirmed the company exists in the Peppol Directory, check whether they are registered under 9925 instead. This is uncommon but does happen.To specify the scheme when sending, include the customer’s Peppol inbox in your GOBL document:
Note that when using 9925, the code must include the BE prefix (e.g. BE0123456789), whereas 0208 uses the raw KBO/BCE number without a prefix.
Use the Lookup Participant ID workflow step to verify a recipient’s Peppol registration before sending. If a lookup with 0208 fails, try again with 9925.
In countries where Peppol is the standard but not mandatory, you may still need to issue an e-invoice when the recipient isn’t on the network. Both parties can agree on an alternative transfer method, but the invoice must still be EN16931 compliant.Recommended approach:
  • Set up a separate workflow that generates the XML without the send-Peppol-document step
  • Or reuse your existing workflow without the customer Peppol ID — the send step is automatically skipped
  • Fetch the generated XML and deliver it through the agreed channel, typically email
B2C invoices typically lack the structured customer information required for Peppol delivery, and most consumers don’t have inboxes. Use a conditional workflow:
  1. Add an If/Else step that checks for a customer inbox using count(customer.inboxes, true) > 0.
  2. On the false branch, generate a PDF and email it to the customer, then stop the flow.
This routes B2B invoices through Peppol while keeping a smooth path for consumers.
If a job fails with KO and receiver not found in the peppol network, treat it like an invalid email address — the recipient simply isn’t reachable on Peppol. Add the Lookup Participant ID step (ideally in a separate validation workflow run against customer data) so you catch missing IDs before generating the invoice.
No. The regime is automatically derived from the supplier’s settings, which is the recommended approach for Peppol — leave it unset on the document.
See the oasis-ubl-v2 addon and the Peppol app reference for required fields, supported document types, and Participant ID schemes.
More available in our Belgium FAQ section

Participate in our community

Ask and answer questions about your Chargebee integration →