{ "legalForm" :

Rechtsvormen in het Handelsregister

Kort antwoord

Het Handelsregister kent per inschrijving een rechtsvorm: eenmanszaak, VOF, BV, NV, stichting, vereniging en een reeks minder voorkomende vormen. In de API zit die in het veld legalForm als leesbare tekst. Voor BV en NV bepaalt de rechtsvorm ook of er een btw-nummer wordt afgeleid.

cURL
# legalForm is tekst, geen code
curl ".../v1/lookup/68750110" \
  -H "Authorization: Bearer KEY"

{
  "legalForm":
    "Besloten vennootschap",
  "isActive": true
}

De rechtsvormen en hun codes

Het Handelsregister codeert de rechtsvorm numeriek. Dit zijn de codes die je in de praktijk tegenkomt, met de omschrijving die wij eraan hangen wanneer er geen verrijkt profiel is:

CodeRechtsvormRechtspersoon
01Eenmanszaaknee
21Commanditaire vennootschapnee
22Vennootschap onder firmanee
41Besloten vennootschapja
42Naamloze vennootschapja
51Cooperatieja
52Onderlinge waarborgmaatschappijja
53Stichtingja
54Verenigingja
71Maatschapnee
73Besloten vennootschap in oprichtingja
74Naamloze vennootschap in oprichtingja
81Overige privaatrechtelijke rechtsvormja
91Publiekrechtelijke rechtspersoonja

De kolom rechtspersoon is de kolom die er in de praktijk toe doet. Bij een rechtspersoon is de entiteit zelf aansprakelijk en bestaat er een statutaire naam en een RSIN. Bij een eenmanszaak, VOF of maatschap is de ondernemer privé aansprakelijk, is er geen statutaire naam en geen RSIN.

Twee codes verdienen aparte aandacht. 73 en 74, de vennootschappen in oprichting, zijn entiteiten waarvan de akte nog niet is gepasseerd. Ze bestaan in het register, kunnen al handelen, en de oprichters zijn tot het passeren hoofdelijk aansprakelijk. Voor een risicobeoordeling is dat een relevant verschil met een gewone BV, ook al lezen ze in een dropdown bijna hetzelfde.

Code 81, overige privaatrechtelijke rechtsvorm, is de vergaarbak: kerkgenootschappen, Europese rechtsvormen en zeldzame constructies vallen erin. Kom je die tegen in een geautomatiseerde flow, stuur hem dan naar een handmatige controle in plaats van te raden.

Waar legalForm vandaan komt

De API geeft geen code terug maar tekst, en die tekst heeft twee mogelijke bronnen.

Is er een verrijkt profiel beschikbaar, dan gebruiken we de uitgebreide rechtsvorm zoals de KVK die publiceert. Die is specifieker dan de tabel hierboven: hij onderscheidt bijvoorbeeld een besloten vennootschap met gewone structuur van varianten met een afwijkende structuur.

Is dat profiel er niet, dan vertalen we de numerieke code uit de open dataset via onze eigen mapping, en krijg je de omschrijving uit de tabel. Is de code onbekend of ontbreekt hij, dan krijg je Onbekend of Rechtsvorm {code}.

Het gevolg voor jouw code: legalForm is een presentatiewaarde, geen sleutel. Twee lookups van hetzelfde bedrijf, één met en één zonder enrich=true, kunnen een andere tekst geven voor dezelfde rechtsvorm. Vergelijkingen als legalForm === "Besloten vennootschap" zijn daarom fragiel.

Wat de rechtsvorm bepaalt in de response

De rechtsvorm is niet alleen een label, hij stuurt gedrag aan.

Btw-afleiding. Alleen bij een BV of NV, en alleen als het RSIN bekend is, wordt NL{RSIN}B01 gevormd en tegen VIES gevalideerd. Let op dat het cijferdeel het RSIN is en niet het KVK-nummer. Bij alle andere rechtsvormen ontbreekt het vat-object volledig. Dat is geen bewijs dat het bedrijf geen btw-nummer heeft, alleen dat er niets is afgeleid. Zie btw-nummer afleiden uit een KVK-nummer.

Statutaire naam. statutoryName is alleen gevuld bij rechtspersonen. Bij een eenmanszaak blijft het leeg, ook met enrich=true.

Beschikbaarheid van jaarcijfers. Alleen rechtspersonen deponeren, en dat gebeurt op RSIN. Voor eenmanszaken en VOF’s is er niets te deponeren en dus ook niets op te halen.

De praktische indeling

Voor de meeste applicaties zijn veertien rechtsvormen er dertien te veel. Wat je logica meestal echt nodig heeft is een categorie:

const CATEGORY = {
  "01": "zzp_of_vof",   "21": "zzp_of_vof",
  "22": "zzp_of_vof",   "71": "zzp_of_vof",
  "41": "vennootschap", "42": "vennootschap",
  "73": "vennootschap", "74": "vennootschap",
  "53": "non_profit",   "54": "non_profit",
  "51": "cooperatie",   "52": "cooperatie",
  "81": "overig",       "91": "publiek",
};

Op die vijf categorieën kun je betekenisvolle regels hangen: welk factuurtemplate, welk kredietlimiet, of een handmatige controle nodig is. Op de losse tekst uit legalForm kan dat niet, omdat die per bron verschilt.

Een laatste ding om op te letten: de rechtsvorm van een inschrijving kan veranderen. Een eenmanszaak die wordt omgezet naar een BV krijgt in de regel een nieuwe inschrijving met een nieuw KVK-nummer, maar er zijn ook trajecten waarbij de bestaande inschrijving van rechtsvorm wisselt. Als je logica aan de rechtsvorm hangt, ververs die waarde dan bij elke verrijking en laat hem niet één keer bij registratie vastzetten.

Veelgestelde vragen

Krijg ik de rechtsvormcode terug of de tekst?
De tekst. Het veld legalForm bevat een leesbare omschrijving, niet de numerieke code. Waar een verrijkt profiel beschikbaar is gebruiken we de uitgebreide omschrijving van de KVK, anders vertalen we de code uit de open dataset zelf.
Waarom wijkt de tekst soms af van wat ik verwacht?
Omdat er twee bronnen zijn. Bij verrijking komt de uitgebreide rechtsvorm van de KVK, die specifieker is, bijvoorbeeld met een aanduiding voor een eenpersoonsvennootschap. Zonder verrijking krijg je onze eigen mapping van de code, die algemener is.
Welke rechtsvormen krijgen een afgeleid btw-nummer?
Alleen BV en NV, inclusief de varianten in oprichting. Dat zijn de codes 41, 42, 73 en 74. Voor alle andere rechtsvormen wordt niets afgeleid en blijft het vat-object leeg.
Hoe filter ik op rechtsvorm in mijn eigen data?
Sla het niet op als vrije tekst uit legalForm. Maak een eigen enum met een handvol categorieën die er voor jouw logica toe doen, en map de tekst daar eenmalig op. Zo blijft je filterlogica werken als de omschrijving verandert.

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