KVKBase Team

Ondernemingsnummer opzoeken: zo vind en controleer je het nummer van een Belgisch bedrijf

Ondernemingsnummer opzoeken: waar je het vindt, hoe je het controleert met het controlegetal en hoe je het automatiseert met een API. Met voorbeelden.

belgieondernemingsnummerapibedrijfsgegevens

Elke onderneming in België heeft een ondernemingsnummer. Het is de sleutel waarmee je een bedrijf ondubbelzinnig identificeert, ook als er tien bedrijven met dezelfde naam bestaan. Wie een factuur moet boeken, een leverancier wil nakijken of een klantenbestand wil opschonen, begint dus meestal met het ondernemingsnummer opzoeken. In deze gids lees je wat het nummer precies is, waar je het vindt, hoe je controleert of het klopt en hoe je dat alles automatiseert.

Wat is een ondernemingsnummer?

Het ondernemingsnummer (ook KBO-nummer genoemd) is een uniek nummer van 10 cijfers, geschreven als 0xxx.xxx.xxx. Het eerste cijfer is 0 of 1. Het nummer verandert niet wanneer een bedrijf verhuist of van naam verandert.

De laatste twee cijfers vormen een controlegetal. Je berekent het zo: neem de eerste acht cijfers, deel ze door 97 en trek de rest af van 97. Het resultaat moet gelijk zijn aan de laatste twee cijfers. Een typfout in een enkel cijfer wordt daardoor bijna altijd opgemerkt.

Het nummer hoort bij een onderneming: een rechtspersoon (zoals een BV of NV) of een natuurlijke persoon (zoals een eenmanszaak). Een vestigingseenheid, bijvoorbeeld een winkel of kantoor van die onderneming, heeft een eigen nummer dat met 2 begint (formaat 2.xxx.xxx.xxx). Meer over de verschillende nummers lees je in Ondernemingsnummer, KBO-nummer en btw-nummer: het verschil.

Waar vind je het ondernemingsnummer van een bedrijf?

Bedrijven zijn verplicht hun nummer te vermelden op hun communicatie. Kijk op:

  • de footer of het colofon van de website
  • facturen, creditnota’s en offertes
  • de algemene voorwaarden en de e-mailhandtekening
  • bestelbonnen en contracten

Vind je daar niets, dan zoek je op naam. Met de gratis tool om een ondernemingsnummer op te zoeken controleer je een nummer meteen en kom je bij de bedrijfspagina. Zoek je op naam, geef dan altijd een postcode mee: bedrijfsnamen komen vaak meermaals voor.

Ook de bedrijvenindex is een ingang als je wilt bladeren in plaats van gericht te zoeken.

Zoeken op naam en postcode via de API

De search-endpoint vraagt minstens twee tekens in q. De postcode (4 cijfers) is optioneel maar sterk aanbevolen. Je krijgt maximaal 25 resultaten per pagina, met voor elke hit het ondernemingsnummer, de naam, het entiteitstype, de rechtsvorm, de postcode en de gemeente.

curl -s "https://api.kvkbase.nl/v1/be/search?q=bakkerij&postalCode=9000" \
  -H "Authorization: Bearer YOUR_API_KEY"

Elke hit bevat onder meer cbeNumber (zonder punten) en cbeNumberFormatted (met punten). Een zoekopdracht kost 1 token.

Alle gegevens ophalen met het nummer

Heb je het nummer, dan haal je het volledige profiel op. De endpoint accepteert elk gangbaar formaat: 0821.015.819, 0821015819 en BE0821015819.

curl -s "https://api.kvkbase.nl/v1/be/lookup/0821.015.819?lang=nl" \
  -H "Authorization: Bearer YOUR_API_KEY"

Met lang kies je de taal van de labels (nl, fr, de of en, standaard nl). In het antwoord vind je onder andere de naam, handelsnamen, rechtsvorm, adres, status, activiteiten met NACE-code, vestigingseenheden en websites. Het btw-blok geeft aan of er een geldig btw-nummer aan hangt. Een volledig overzicht staat in de API-referentie. De gegevens zijn officiële Belgische bedrijfsgegevens, bewaard in een kopie zodat herhaalde opzoekingen snel zijn. Ga er niet van uit dat ze realtime zijn.

Controleren of een nummer geldig is

Je hoeft niet te wachten op een API-aanroep om een slecht nummer te herkennen. Een eigen controle van lengte en controlegetal vangt de meeste fouten op:

function isValidEnterpriseNumber(input) {
  let digits = String(input).toUpperCase().replace(/^BE/, "").replace(/\D/g, "");
  if (digits.length === 9) digits = "0" + digits; // restore the leading zero
  if (!/^[01]\d{9}$/.test(digits)) return false;
  const base = Number(digits.slice(0, 8));
  const check = Number(digits.slice(8));
  return 97 - (base % 97) === check;
}

console.log(isValidEnterpriseNumber("0821.015.819")); // true (example number)
console.log(isValidEnterpriseNumber("0821.015.818")); // false

Een nummer dat het controlegetal haalt, bestaat daarom nog niet. Het is alleen wiskundig correct. Pas de opzoeking bevestigt dat er echt een onderneming achter zit. De API weigert een misvormd nummer overigens al vooraf met INVALID_CBE_NUMBER (HTTP 400), en dat kost niets.

Automatiseren in JavaScript

Combineer beide stappen: valideer lokaal, bevraag pas daarna de API en vang de foutcodes op.

const API_KEY = process.env.KVKBASE_API_KEY;

async function lookupCompany(number) {
  if (!isValidEnterpriseNumber(number)) {
    throw new Error("Not a valid enterprise number");
  }
  const res = await fetch(
    `https://api.kvkbase.nl/v1/be/lookup/${encodeURIComponent(number)}?lang=nl`,
    { headers: { Authorization: `Bearer ${API_KEY}` } }
  );
  if (res.status === 404) return null; // number is well formed but unknown
  if (!res.ok) throw new Error(`Lookup failed with status ${res.status}`);
  return res.json();
}

const company = await lookupCompany("0821015819");
if (company) {
  console.log(company.name, company.legalFormShort, company.isActive);
}

Heb je een lijst, gebruik dan POST /v1/be/lookup/batch met {"cbeNumbers": [...], "lang": "nl"}. Je mag 25 nummers per aanroep meesturen en elk nummer kost 1 token. Het antwoord geeft per nummer success en data of error, zodat een nummer dat niet gevonden wordt de rest niet blokkeert. Een ongeldig formaat of controlegetal weigert wel de hele batch, controleer nummers dus vooraf.

StatusFoutcodeWat doe je
400INVALID_CBE_NUMBERNummer corrigeren, niet opnieuw proberen
404NOT_FOUNDNummer bestaat niet in de gegevens
429QUOTA_EXCEEDED of rate limitWachten of je plan verhogen
502UPSTREAM_ERRORLater opnieuw proberen
503UPSTREAM_BUDGETLater opnieuw proberen

Veelgemaakte fouten

De voorloopnul vergeten. Spreadsheets maken van 0821015819 het getal 821015819. Bewaar het nummer altijd als tekst, of vul aan tot 10 cijfers.

Btw-nummer en ondernemingsnummer door elkaar halen. Het btw-nummer is BE plus de 10 cijfers. Niet elke onderneming heeft een actief btw-nummer. Controleer dat apart met de btw-nummer-tool of lees hoe je een btw-nummer controleert via VIES.

Een vestiging aanzien voor de onderneming. Een nummer dat met 2 begint, hoort bij een vestigingseenheid. Gebruik voor facturatie en identificatie het ondernemingsnummer, niet het vestigingsnummer.

Afgaan op de naam alleen. Twee bedrijven met dezelfde naam in verschillende gemeenten zijn twee ondernemingen. Vraag het nummer op of zoek met naam plus postcode en vergelijk het adres.

Een actief nummer veronderstellen. Kijk naar isActive en juridicalSituation in het antwoord. Een bedrijf in ontbinding of faillissement heeft nog altijd een nummer.

Aan de slag

Een gratis account geeft je 50 tokens per maand, zonder kredietkaart. Genoeg om de voorbeelden hierboven uit te proberen. Voor grotere volumes bekijk je de prijzen. Een overzicht van wat er mogelijk is voor Belgische bedrijven vind je op de België-pagina. Wil je een klant of leverancier grondiger natrekken, lees dan hoe je een Belgische klant of leverancier controleert.

Veelgestelde vragen

Waar vind ik het ondernemingsnummer van een Belgisch bedrijf?
Op facturen, offertes, de algemene voorwaarden en in de footer van de website van het bedrijf. Heb je alleen een naam, zoek dan op naam en postcode om het nummer te vinden.
Hoe herken ik een geldig ondernemingsnummer?
Het bestaat uit 10 cijfers en begint met 0 of 1. De laatste twee cijfers zijn een controlegetal: 97 min de rest van de deling van de eerste acht cijfers door 97.
Is het ondernemingsnummer hetzelfde als het btw-nummer?
De cijfers zijn dezelfde, het btw-nummer is 'BE' plus het ondernemingsnummer. Niet elke onderneming is btw-plichtig, dus een ondernemingsnummer betekent niet automatisch een actief btw-nummer.
Kan ik ondernemingsnummers in bulk opzoeken?
Ja, via de batch-endpoint verwerk je tot 25 nummers per aanroep. Elk nummer in de batch kost 1 token.
Wat kost een opzoeking?
Een opzoeking, zoekopdracht of btw-controle kost 1 token. Het gratis plan geeft 50 tokens per maand, zonder kredietkaart.