{ "kvkNumber" :
Wat is een KVK-nummer?
Kort antwoord
Het KVK-nummer is het unieke nummer van acht cijfers dat de Kamer van Koophandel toekent aan elke inschrijving in het Handelsregister. Het identificeert de onderneming of rechtspersoon als geheel, niet een losse vestiging of een fiscale eenheid. Elke inschrijving heeft er precies een en houdt die bij naamswijziging, verhuizing of nieuwe eigenaar.
# Profiel op KVK-nummer
curl ".../v1/lookup/68750110" \
-H "Authorization: Bearer KEY"
{
"kvkNumber": "68750110",
"name": "Acme B.V.",
"legalForm": "Besloten vennootschap",
"isActive": true
}
Wat het nummer precies identificeert
Het KVK-nummer identificeert een inschrijving in het Handelsregister. Dat klinkt als een detail, maar het is de bron van bijna elke fout die je er later mee maakt.
Een inschrijving kan een onderneming zijn (een eenmanszaak, een VOF) of een rechtspersoon (een BV, een stichting). Wat het niet is: een vestiging, een fiscale eenheid, of een merk. Een BV met twaalf winkels heeft één KVK-nummer. Een holding met drie werkmaatschappijen heeft vier KVK-nummers, ook al presenteren ze zich naar buiten als één bedrijf.
Praktisch betekent dat: het KVK-nummer is de juiste primaire sleutel voor je companies-tabel, maar het is de verkeerde sleutel als je op filiaalniveau wilt factureren of leveren. Daar heb je het vestigingsnummer voor nodig.
Het nummer wordt toegekend bij inschrijving en blijft daarna staan. Een BV die van naam verandert, van Groningen naar Rotterdam verhuist en tussendoor twee keer van eigenaar wisselt, houdt hetzelfde KVK-nummer. Dat maakt het de enige echt stabiele sleutel in Nederlandse bedrijfsdata: handelsnamen veranderen, adressen veranderen, btw-nummers kunnen bij een fiscale eenheid opgaan in een ander nummer, het KVK-nummer niet.
Het formaat
| Eigenschap | Waarde |
|---|---|
| Lengte | 8 cijfers |
| Tekenset | alleen 0-9, geen letters of scheidingstekens |
| Voorloopnullen | mogelijk, dus nooit als integer opslaan |
| Uniek binnen | heel Nederland, over alle rechtsvormen heen |
De voorloopnul is de klassieker. Sla je KVK-nummers op als INT of BIGINT, dan wordt 01234567 stilletjes 1234567 en matcht je lookup nooit meer. Gebruik CHAR(8) of VARCHAR, en normaliseer bij invoer door punten, spaties en het voorvoegsel “KVK” te strippen voordat je valideert.
Er zit ook een checksumregel op het nummer, waarmee je een typefout kunt afvangen voordat je een API-call doet. Die staat uitgewerkt in de post over KVK-nummervalidatie en de checksum. Het loont om die check client-side te doen: elke afgevangen typefout is een call die je niet verbruikt en een foutmelding die de gebruiker direct in het formulier ziet.
Let ook op wat gebruikers plakken. Uit een uittreksel gekopieerd komt er vaak KVK-nummer: 68750110 uit, uit een e-mailhandtekening KvK 68750110 Amsterdam. Een simpele replace(/\D/g, "") op de invoer voorkomt de meeste supportvragen.
Opzoeken via de API
Heb je een nummer en wil je weten van wie het is, dan is één call genoeg.
curl "https://api.kvkbase.nl/v1/lookup/68750110" \
-H "Authorization: Bearer YOUR_API_KEY"
Dat geeft je de statutaire naam, de rechtsvorm, het vestigingsadres, de SBI-activiteiten, of de inschrijving actief is, en eventuele insolventie. Met ?enrich=true komen daar handelsnamen, personeelsaantallen, websites en het aantal vestigingen bij.
Wil je alleen weten of een nummer bestaat, bijvoorbeeld in een formuliervalidatie waar je geen profieldata nodig hebt, dan is /v1/verify/{kvkNumber} goedkoper en sneller.
curl "https://api.kvkbase.nl/v1/verify/68750110" \
-H "Authorization: Bearer YOUR_API_KEY"
Ken je het nummer niet en heb je alleen een bedrijfsnaam, dan zoek je met /v1/search of, in een invoerveld, met /v1/autocomplete. De volledige route van zoekterm naar profiel staat in de complete gids voor KVK-nummer lookups.
Verrijk je een bestaande database, doe dat dan niet met een lus van losse calls. POST /v1/lookup/batch neemt een lijst nummers in één keer aan:
curl -X POST "https://api.kvkbase.nl/v1/lookup/batch" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"kvkNumbers":["68750110","33014286"],"enrich":true}'
Dat scheelt round trips en houdt je binnen de rate limit, die op de gratis laag 10 requests per minuut is en op Pro 300.
Wat er in productie stukgaat
Klanten typen hun vestigingsnummer in. Twaalf cijfers in een veld dat acht verwacht. Valideer op lengte en geef een specifieke foutmelding, anders krijg je een INVALID_KVK_NUMBER die de gebruiker niets zegt.
Een nummer bestaat wel, maar het bedrijf niet meer. NOT_FOUND en isActive: false zijn twee verschillende antwoorden. Het eerste betekent dat het nummer nooit is uitgegeven, het tweede dat de inschrijving is beëindigd. Behandel ze niet als hetzelfde geval, zie controleren of een bedrijf is uitgeschreven.
De naam in het register is niet de naam die de klant gebruikt. Wat je terugkrijgt in name is de statutaire naam. De naam op de website staat vaak in tradingNames. Match je op naam, dan moet je beide meenemen, zie handelsnaam versus statutaire naam.
Data is tot 24 uur oud. Actieve bedrijven worden 24 uur gecachet. Voor onboarding en facturatie is dat prima. Voor een harde compliancecheck op het moment van uitbetaling is het dat niet.
Het KVK-nummer is geen bewijs van btw-plicht. Een stichting zonder economische activiteit staat gewoon in het register en heeft geen geldig btw-nummer. Wie een verlegde btw-factuur wil uitschrijven heeft een gevalideerd btw-nummer nodig, geen KVK-nummer.
Wanneer je hier geen API voor nodig hebt
Zoek je één keer per maand handmatig een bedrijf op, gebruik dan gewoon de zoekfunctie op kvk.nl. Een API verdient zich pas terug als het opzoeken in een flow zit: een checkout, een onboardingformulier, een nachtelijke verrijking van je CRM. Voor eenmalig werk is de gratis laag van 50 lookups per maand ruim voldoende om het uit te proberen zonder creditcard.
Veelgestelde vragen
Hoeveel cijfers heeft een KVK-nummer?
Is het KVK-nummer hetzelfde als het vestigingsnummer?
Verandert een KVK-nummer ooit?
Mag ik KVK-nummers van klanten opslaan?
Bijgewerkt:
Eén call geeft je het hele bedrijf
KVK-data, het afgeleide BTW-nummer en een live VIES-controle in één request. Het gratis plan geeft je 50 lookups per maand, zonder creditcard.
- 50
- gratis lookups per maand
- 1
- request in plaats van drie
- 0
- creditcards, contracten of salesgesprekken