{ "vat.number" :

Btw-nummer afleiden uit een KVK-nummer

Kort antwoord

Niet. Het cijferdeel van een Nederlands btw-nummer is het RSIN, negen cijfers, en het KVK-nummer heeft er acht. Het zijn losse nummers en het ene volgt niet uit het andere. Voor een BV of NV kun je uit het RSIN meestal NL{RSIN}B01 vormen, maar ook dat blijft een startpunt dat je tegen VIES valideert voordat je het op een factuur zet.

cURL
# Afgeleid en meteen VIES-gecheckt
curl ".../v1/lookup/68750110?enrich=true" \
  -H "Authorization: Bearer KEY"

{
  "legalForm": "Besloten vennootschap",
  "vat": {
    "number": "NL850123458B01",
    "valid": true
  }
}

Het korte antwoord: dat kan niet

Dit is de meest gezochte en meest verkeerd beantwoorde vraag over Nederlandse bedrijfsdata, dus laten we ermee beginnen: je kunt een btw-nummer niet uit een KVK-nummer afleiden.

Het btw-identificatienummer van een rechtspersoon is opgebouwd als:

NL + {RSIN} + B01

Het cijferdeel is het RSIN, negen cijfers. Het KVK-nummer is er acht. Dat zijn twee verschillende nummers, allebei uitgegeven door de KVK, en het ene volgt niet uit het andere. Een KVK-nummer in dat patroon plakken levert een string op die er goed uitziet, die de Belastingdienst nooit heeft uitgegeven, en die niet eens aan het formaat voldoet.

Wat wel kan: het RSIN opzoeken bij de rechtspersoon en dat gebruiken. Voor een BV of NV is het resulterende nummer meestal NL{RSIN}B01, en dat is een startpunt dat je daarna valideert.

Waar ook dat breekt:

SituatieWat er gebeurt
Fiscale eenheidDe vennootschap factureert onder het nummer van de eenheid, niet onder haar eigen afgeleide nummer
Tweede subnummerSuffix is B02 of hoger, niet B01
Eenmanszaak, VOF, maatschapGeen RSIN, en het btw-nummer is sinds 2020 willekeurig toegekend
Stichting of vereniging zonder economische activiteitGeen btw-nummer, ook al bestaat de inschrijving
Buitenlandse rechtspersoon met NL-vestigingEigen registratie, ander nummerformaat

De fiscale eenheid is de gemene. Het afgeleide nummer bestaat dan vaak nog wel in de systemen van de Belastingdienst, maar het is niet het nummer waaronder gefactureerd wordt, en VIES kan het als ongeldig teruggeven. Een verlegde btw-factuur op een fout nummer is een naheffing waard.

De tweede die je onderschat is de eenmanszaak. Tot 2020 was het btw-nummer van een zzp’er afgeleid van het BSN, en veel oude integraties gaan daar nog van uit. Sindsdien is het een willekeurig nummer, juist om die herleidbaarheid weg te halen. Er is geen formule die je van een KVK-nummer naar dat nummer brengt, en er is geen openbare bron waar je het uit kunt opzoeken. Uitvragen bij de ondernemer is de enige route.

Wat de API doet

Precies dit: afleiden en dan controleren. Bij een verrijkte lookup wordt de rechtsvorm gelezen. Alleen bij een BV of NV, en alleen als het RSIN van de rechtspersoon bekend is, wordt NL{RSIN}B01 gevormd. Dat kandidaat-nummer gaat vervolgens naar VIES, en wat je terugkrijgt is het resultaat van die controle:

"vat": {
  "number": "NL850123458B01",
  "valid": true,
  "validatedAt": "2026-08-22T09:14:03.201Z"
}

Drie uitkomsten die je moet afhandelen:

  • vat is aanwezig en valid: true. Bruikbaar. Gebruik validatedAt om te bepalen of je opnieuw moet valideren.
  • vat is aanwezig en valid: false. Het patroon gaf een nummer, VIES kende het niet. Meestal een fiscale eenheid of een afwijkend subnummer. Vraag het nummer bij de klant uit, gok niet.
  • vat ontbreekt. De rechtsvorm is geen BV of NV, dus er is niet afgeleid. Dat is geen bewijs dat het bedrijf geen btw-nummer heeft.

Dat laatste is de fout die het vaakst in productie belandt: if (!company.vat) { reject() }. Daarmee weiger je elke eenmanszaak en elke VOF, terwijl die gewoon btw-plichtig kunnen zijn. De juiste logica splitst de drie gevallen:

if (company.vat?.valid) {
  // bruikbaar, prefill en ga door
} else if (company.vat) {
  // afgeleid maar afgekeurd: vraag het nummer uit
} else {
  // niet afgeleid: vraag het nummer uit
}

De laatste twee takken doen hetzelfde, maar de melding aan de gebruiker verschilt. Bij valid: false weet je dat er iets afwijkends speelt en kun je dat benoemen. Bij een ontbrekend vat-object weet je alleen dat de rechtsvorm buiten de afleiding valt.

Het omgekeerde pad

Heb je het btw-nummer al van de klant, sla dan de afleiding over en valideer direct:

curl "https://api.kvkbase.nl/v1/validate/vat/NL850123458B01" \
  -H "Authorization: Bearer YOUR_API_KEY"

Dat is de betrouwbare volgorde voor elk formulier waarin je zowel een KVK-nummer als een btw-nummer uitvraagt: neem het ingevoerde btw-nummer als waarheid, valideer het, en gebruik het afgeleide nummer alleen om een prefill te doen of om een discrepantie te signaleren. De details van VIES zelf, inclusief de beruchte uitval van nationale eindpunten, staan in btw-nummer valideren met de VIES API.

Praktische regel voor je integratie

Behandel het afgeleide nummer als een suggestie in de UI, nooit als een waarde die stilzwijgend naar je facturatiesysteem doorstroomt. Prefill het veld, markeer het zichtbaar als afgeleid, en laat de klant bevestigen. Bij een valid: false toon je een veld in plaats van een foutmelding: de klant weet zijn eigen nummer, jouw afleiding niet.

Sla het KVK-nummer en het btw-nummer als twee losse velden op, zonder de aanname dat het ene uit het andere volgt. Zodra je ze aan elkaar koppelt in je datamodel, bijvoorbeeld door alleen het KVK-nummer te bewaren en het btw-nummer bij het factureren opnieuw af te leiden, bouw je de vuistregel in als harde regel en gaat het bij de eerste fiscale eenheid mis.

En bewaar bij elk btw-nummer dat je opslaat de timestamp van de laatste geslaagde validatie. Nummers worden ingetrokken bij faillissement en bij opgaan in een fiscale eenheid, en zonder timestamp weet je over een jaar niet meer of je gevalideerd hebt of gegokt.

Veelgestelde vragen

Klopt NL + KVK-nummer + B01?
Nee, en het formaat klopt niet eens: een Nederlands btw-nummer heeft negen cijfers en een KVK-nummer acht. Het cijferdeel is het RSIN. Zelfs met het juiste RSIN blijft NL{RSIN}B01 een vuistregel, want bij een fiscale eenheid factureert de eenheid onder een ander nummer en bij meerdere subnummers is het suffix B02 of hoger.
Werkt dit ook voor een eenmanszaak?
Nee. Het btw-nummer van een eenmanszaak is sinds 2020 een willekeurig toegekend nummer dat niets met het KVK-nummer of het BSN te maken heeft. Je kunt het niet afleiden, je moet het opvragen bij de ondernemer zelf.
Wat betekent het suffix B01?
Het is het subnummer van de btw-plichtige eenheid binnen de rechtspersoon. B01 is de eerste, B02 de tweede. De meeste bedrijven hebben er maar een, maar een rechtspersoon met gescheiden btw-administraties kan er meerdere hebben.
Wanneer geeft de API geen vat-object terug?
Als de rechtsvorm geen BV of NV is, of als het RSIN niet beschikbaar is. De afleiding wordt alleen voor rechtspersonen geprobeerd. Voor alle andere rechtsvormen is het vat-veld leeg, ook als het bedrijf wel degelijk btw-plichtig is.

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