ediverse Explore the platform

Spotlight PEPPOL BIS Billing 3.0 The EU e-invoicing mandate is here — France Sept 2026, Belgium Jan 2026, Germany 2025.

BCE / KBO — the Belgian enterprise number

The BCE/KBO number (Banque-Carrefour des Entreprises / Kruispuntbank van Ondernemingen) is the unique identifier of every Belgian company, assigned by FPS Economy at incorporation. Indispensable for invoicing, it also serves as a PEPPOL identifier via ICD 0208 and as the matrix of the VAT-BE number.

History: from VAT to unified registry

Before 2003, Belgium operated with half a dozen distinct administrative identifiers: VAT number, ONSS number, RPM number (Commercial Register), INASTI number, etc. The Act of 16 January 2003 created the BCE to unify these identifiers into one, similar to the French SIREN/SIRET number but with broader scope.

  • 2003 — Initial launch. New companies receive a BCE number. Older ones (registered before 2003) keep their identifiers until progressive update.
  • 2005-2009 — Transition. Migration of all former RPM, INASTI and ONSS registrations to BCE. The BCE becomes the sole identifier.
  • 2014 — KBO Bulk Open Data. FPS Economy publishes a monthly downloadable complete CSV export (~1.5 GB compressed).
  • 2018 — BCE 2.0 redesign. New KBO/BCE portal, public API for lookup by number.
  • 2020 — PEPPOL ICD 0208. OpenPEPPOL adds the ICD 0208 code for BCE/KBO to its Authority Identifier Scheme registry. Mercurius switches to this schemeID for B2G routing.
  • 2025 — B2B preparation. Anticipating the Royal Decree of 20 March 2025, BCE provides ERP vendors with a PEPPOL Endpoint lookup service via Mercurius SMP.

BCE/KBO number format

The BCE number consists of 10 digits, formatted 0XXX.XXX.XXX with dot separators. The first digit is always a 0 or 1 (internal FPS coding, depending on age).

  • Position 1: generation indicator digit (0 = pre-2008, 1 = post-2008).
  • Positions 2-8: sequential identifier (7 digits).
  • Positions 9-10: modulo 97 checksum (see below).

Three equivalent representations accepted in practice:

  • 0473.495.177 — human-readable (with dots)
  • 0473495177 — technical (without dots)
  • BE0473495177 — prefixed for Belgian VAT

Modulo 97 checksum algorithm

The last two digits are a check digit computed by modulo 97 over the first 8 digits. The same algorithm applies to the IBAN and to Belgian OGM/VCS structured communications.

python bce_checksum.py
def bce_checksum(bce_9digits: str) -> str:
    """
    Modulo 97 algorithm to validate / compute the checksum of a
    Belgian BCE/KBO number.

    bce_9digits : the first 8 digits (without check, without
                  leading 0) or the full 10 digits.

    Returns the 2 check digits or compares against the existing key.
    """
    if len(bce_9digits) == 10:
        # Verification mode: strip the last 2
        body = bce_9digits[:-2]
        expected = bce_9digits[-2:]
        check = 97 - (int(body) % 97)
        return str(check).zfill(2) == expected

    body = bce_9digits[:8].zfill(8)
    check = 97 - (int(body) % 97)
    return str(check).zfill(2)


# Examples
print(bce_checksum("04734951"))   # 77 -> 0473.495.177
print(bce_checksum("0473495177")) # True (verification)
print(bce_checksum("03083571"))   # 59 -> 0308.357.159 (FPS Finance)

PEPPOL ICD 0208 and BE VAT identifier

In the OpenPEPPOL Authority Identifier Scheme (PartyID Schemes) registry, code 0208 precisely designates the Belgian BCE/KBO number. Every PEPPOL-BIS 3.0 invoice issued from or to Belgium must use this schemeID to identify sender and recipient.

text bce-mapping.txt
┌──────────────────────────────────────────────────────────────────────┐
│  Mapping BCE/KBO -> PEPPOL Endpoint -> VAT-BE                        │
├──────────────────────────────────────────────────────────────────────┤
│                                                                      │
│  BCE number          : 0473.495.177                                  │
│  PEPPOL Endpoint     : 0208:0473495177  (ICD 0208 + 10 digits)       │
│  VAT-BE (BTW-BE)     : BE0473495177      (BE + 10 digits)            │
│  RPM (commercial court) : Brussels-French chamber                    │
│  Publication Moniteur : MB of 12 June 2003                           │
│                                                                      │
│  Source: BCE OpenData CSV / public REST API                          │
│  URL   : https://kbopub.economie.fgov.be/kbopub/                     │
│                                                                      │
└──────────────────────────────────────────────────────────────────────┘

Important subtlety: the BCE number is not identical to the VAT number, but they derive from each other since 2008. A non-VAT-registered company has a BCE number but no VAT-BE. Conversely, the VAT-BE identifier is built by prefixing the BCE number with BE.

  • BCE only (no VAT): ASBL (non-profits), foundations, de facto associations, franchise-regime enterprises.
  • BCE + VAT-BE: ordinary taxable persons (~95% of active companies).
  • Foreign BCE: tax representation of a foreign company VAT-registered in Belgium only.

KBO OpenData and public API

FPS Economy publishes a complete monthly BCE dataset in OpenData (CC-BY 2.0 BE licence):

  • Format: 9 CSV ZIP files (~1.5 GB), UTF-8 BOM encoding, comma separator, double quotes
  • Main files: enterprise.csv (legal entity), establishment.csv (establishment units), denomination.csv (trading names), activity.csv (NACE codes), address.csv (registered office and addresses), contact.csv (phone, email, website)
  • Public REST API: the KBOpub portal allows lookup by BCE/KBO number, name or postal code (limited to ~100 req/h without authentication).
  • Download: KBO Open Data portal requires a free account (kbopub.economie.fgov.be/kbo-open-data).
  • Pro SOAP/REST: FPS Economy offers a paid lookup service (~EUR 250/year) for large vendors and banks (unlimited volume).

The BCE number is also the access key to two other public registries:

  • RPM — Legal Entities Register. Competence of enterprise courts (formerly commercial courts). The RPM contains articles of association, statutory modifications, notarial deeds and Moniteur belge publications for commercial companies. Search by BCE on cri-online.be.
  • Moniteur belge / Belgisch Staatsblad. Official publication of the State. Every legal act (incorporation, extraordinary general meeting, merger, dissolution) is published there. Search by BCE on ejustice.just.fgov.be.
  • NBB Central Balance Sheet Office. National Bank of Belgium, mandatory annual accounts deposit. Search by BCE on consult.cbso.nbb.be.