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

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, including the Royal Decree of 8 July 2025 penalty scale and the tolerance window that closed on 31 March 2026 on 24 August 2026. Official source.

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

What Beliq does today

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).
  • Validation depth on the Peppol path is Authority-checked: Beliq asserts verdict parity against OpenPeppol’s own unit-test corpus (62 testSets, 335 cases) plus its 10 published example invoices. The pinned Peppol BIS Schematron carries no Belgian national rule family, so that shared corpus covers Belgian invoices in full; a calendar-enforced re-check watches for any future national CIUS. See how verification works for the tier definitions and the verificationTier field that reports them.

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)

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.

Today you send Beliq’s UBL output through your chosen Access Point (BYOC). See what a Peppol Access Point is if you have not procured one yet. Managed delivery over Peppol is in build, targeting Q4 2026 and subject to certification.

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)

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

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

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

Further reading