eliDocs
Country Guides

Belgium

Belgian B2B e-invoicing with Beliq — Peppol BIS 3.0 UBL, the KBO/BCE endpoint scheme, and the Peppol transmission boundary.

Belgium’s B2B e-invoicing mandate went live 2026-01-01 (with a 3-month tolerance period to 2026-03-31). Unlike Germany, France, Italy, or Spain, Belgium defines no national format and no national CIUS — it uses standard Peppol BIS Billing 3.0 UBL (EN 16931) directly. The European Commission’s eInvoicing-in-Belgium page states it plainly: “There is no ad hoc or national CIUS version.” So a Belgian invoice in Beliq is a Peppol BIS invoice — see the Peppol BIS format reference for the full element layout.

Mandate timeline

DateWhat changes
1 January 2026Issuing and receiving structured e-invoices is mandatory for domestic B2B.
1 January 2028Near-real-time e-reporting is added on the Peppol 5-corner model.

A three-month penalty tolerance ran to 31 March 2026 and has now passed.

Last verified against FPS Finance and the European Commission eInvoicing country page on 9 July 2026. Official source.

For the dates beliq tracks across every covered country, see the mandate calendar.

What Beliq does today

  • Generate Belgian Peppol invoices via standard: "peppol-bis" (profile peppol), addressed with the Belgian enterprise-number endpoint scheme (KBO/BCE, Peppol EAS 0208).
  • Validate and parse Peppol BIS UBL against the full EN 16931 + Peppol BIS 3.0 Schematron (peppolVersion in the response).
  • Compliance status for belgium_peppol is supported — it rides the fully-verified Peppol BIS pipeline (9 OpenPeppol positive examples + 227 negative test cases). Belgium adds no national rules, so there is no Belgium-specific corpus; that is recorded as a tracked gap with a quarterly re-check for any future national CIUS.

One Belgium-specific rule (already in Peppol BIS)

The shared Peppol BIS pack carries one Belgium-specific assertion, PEPPOL-COMMON-R043: a KBO/BCE enterprise number (EAS 0208) must be 10 digits and pass the mod-97 checksum (the last two digits equal 97 − (first 8 digits mod 97)). This is a Peppol-common rule, not a Belgian CIUS — but it means the enterprise number you pass must be checksum-valid.

What Beliq does not do (Peppol transmission boundary)

Belgium’s B2B network is the Peppol Network. Beliq is not a Peppol Access Point. It does not:

  • Transmit invoices over Peppol or register you as a Peppol participant.
  • Operate the 4-corner (or, from 2028, 5-corner) exchange on your behalf.

You send Beliq’s UBL output through your chosen Access Point (BYOC). Beliq’s job ends at a correct, Peppol-valid document.

e-reporting (plan ahead — 2028)

From 2028-01-01 Belgium widens the obligation with a near-real-time e-reporting layer using the Peppol 5-corner model. This is a future operational obligation handled by your Access Point / reporting provider — not a Beliq capability today.

Integration architecture (Beliq vs Peppol Access Point)

Concern In Beliq today Outside Beliq (your stack / partner)
Peppol BIS 3.0 UBL invoice XML Generate, Validate, Parse
Peppol Network transmission (4-corner) Not offered — see boundary above Your Access Point provider
e-reporting (5-corner, 2028) Not offered Your Access Point / reporting provider

Generating a Belgian Peppol invoice

Address both parties with the Belgian enterprise-number scheme (KBO/BCE, EAS 0208) via the peppol block. Provide either a buyerReference or an orderReference (Peppol requires one). The simpler alternative is to omit the peppol block and pass a vatId (BE…) + address.countryCode: "BE" — Beliq then derives the BE:VAT scheme (EAS 9925) automatically.

generate-belgium-peppol.sh
curl -X POST https://api.beliq.eu/v1/generate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "standard": "peppol-bis",
    "profile": "peppol",
    "output": "xml",
    "invoice": {
      "number": "2026-0001",
      "issueDate": "2026-05-28",
      "currencyCode": "EUR",
      "buyerReference": "BE-PO-4471",
      "seller": {
        "name": "Verkoper Test BV",
        "vatId": "BE0203201340",
        "peppol": { "schemeId": "0208", "id": "0203201340" },
        "address": { "street": "Teststraat 1", "city": "Brussel", "postalCode": "1000", "countryCode": "BE" }
      },
      "buyer": {
        "name": "Koper Test BV",
        "vatId": "BE0776119566",
        "peppol": { "schemeId": "0208", "id": "0776119566" },
        "address": { "street": "Voorbeeldlaan 2", "city": "Antwerpen", "postalCode": "2000", "countryCode": "BE" }
      },
      "lines": [
        {
          "description": "Professionele diensten",
          "quantity": 1,
          "unitCode": "C62",
          "unitPrice": 100.00,
          "lineTotal": 100.00,
          "vatRate": 21,
          "vatCategoryCode": "S"
        }
      ],
      "taxSummary": [
        { "vatCategoryCode": "S", "vatRate": 21, "taxableAmount": 100.00, "taxAmount": 21.00 }
      ],
      "totalNetAmount": 100.00,
      "totalTaxAmount": 21.00,
      "totalGrossAmount": 121.00
    }
  }'

The enterprise numbers above (0203201340, 0776119566) are checksum-valid per PEPPOL-COMMON-R043. The Belgian VAT id reuses the same enterprise number (BE + the 10 digits).

Validation behaviour

On /v1/validate and /v1/generate, Belgian invoices run the full EN 16931 + Peppol BIS 3.0 Schematron; failures carry the relevant BR-* / PEPPOL-* rule id (e.g. PEPPOL-COMMON-R043 for a malformed enterprise number). The response reports profileDetected: "peppol" and a peppolVersion. CreditNote payloads are supported (documentType: "creditnote").

Further reading