{ "statutoryName" :

Handelsnaam of statutaire naam?

Kort antwoord

De statutaire naam is de naam in de oprichtingsakte van een rechtspersoon, inclusief de rechtsvormaanduiding zoals B.V. De handelsnaam is de naam waaronder de onderneming daadwerkelijk handelt, en er kunnen er meerdere zijn. Op een factuur hoort de statutaire naam, in je interface toon je meestal de handelsnaam.

cURL
# Beide namen, enrich vereist
curl ".../v1/lookup/68750110?enrich=true" \
  -H "Authorization: Bearer KEY"

{
  "statutoryName": "Acme Holding B.V.",
  "tradingNames": [
    "Acme", "Acme Webshop"
  ]
}

Twee namen, twee doelen

De statutaire naam staat in de oprichtingsakte van een rechtspersoon en is vastgelegd bij de notaris. Hij eindigt vrijwel altijd op de rechtsvormaanduiding: B.V., N.V., Stichting, Vereniging. Wijzigen kan alleen via een akte, dus hij is stabiel.

De handelsnaam is de naam waaronder de onderneming naar buiten treedt. Registreren is vormvrij en goedkoop, wijzigen kan met een formulier, en één inschrijving kan er meerdere hebben. Een BV die Acme Holding B.V. heet en drie webshops draait, heeft prima drie handelsnamen naast elkaar.

Statutaire naamHandelsnaam
Vastgelegd inoprichtingsakteHandelsregister
Aantalprecies 10, 1 of meer
Bestaat bij eenmanszaakneeja
Verandertzelden, via notarisregelmatig
Veld in de responsestatutoryNametradingNames

Wat de API teruggeeft

Er zijn drie naamvelden en ze zijn niet uitwisselbaar.

  • name is altijd aanwezig. Voor een rechtspersoon is dit doorgaans de statutaire naam, voor een eenmanszaak de geregistreerde ondernemingsnaam.
  • statutoryName is enrich-only en alleen gevuld bij een rechtspersoon.
  • tradingNames is enrich-only en is een array. Hij kan leeg zijn, want niet elke inschrijving heeft een geregistreerde handelsnaam.
curl "https://api.kvkbase.nl/v1/lookup/68750110?enrich=true" \
  -H "Authorization: Bearer YOUR_API_KEY"

Let op het geval dat je code waarschijnlijk niet afhandelt: een rechtspersoon zonder geregistreerde handelsnaam. Dat is normaal bij holdings en bij stichtingen die geen commerciële activiteit hebben. Je krijgt dan statutoryName gevuld en tradingNames als lege array. Code die blind tradingNames[0] toont, laat een leeg veld zien op een bevestigingsscherm.

De volgorde van tradingNames is niet willekeurig: hij volgt de volgorde uit het register, waarbij de eerste in de praktijk de meest gebruikte naam is. Wil je één naam tonen, neem dan tradingNames[0] met een fallback naar name, en niet andersom.

Welke naam waar

Er is geen veld dat zegt welke naam je moet gebruiken. Dat is een keuze die per plek in je applicatie verschilt.

Op de factuur: de statutaire naam. De ontvanger moet kunnen zien met welke juridische entiteit hij zaken doet. Een factuur op alleen Acme Webshop terwijl de entiteit Acme Holding B.V. is, is een discussie met de boekhouder waard, zeker bij e-facturering waar de entiteit een gestructureerd veld is.

In je interface: de handelsnaam. Een klant die zich als Acme Webshop kent, herkent Acme Holding B.V. niet als zichzelf. Een bevestigingsscherm dat de verkeerde naam toont, leidt tot afgebroken checkouts.

In je zoekindex: allebei. Dit is de belangrijkste. Zoekt een gebruiker op de naam op het busje of op de website, dan typt hij de handelsnaam. Zoekt een inkoper op wat op de factuur stond, dan typt hij de statutaire naam. Een index op één van beide mist structureel de helft van de zoekopdrachten.

De valkuil bij matchen

Naamvergelijking tussen jouw database en het register gaat op twee dingen mis.

De eerste is de rechtsvormaanduiding. Acme B.V., Acme BV, Acme b.v. en Acme Besloten Vennootschap zijn dezelfde entiteit en vier verschillende strings. Normaliseer voor je vergelijkt: lowercase, punten weg, en de rechtsvormaanduiding er aan het eind afknippen.

De tweede is dat een naammatch geen identiteitsmatch is. Er zijn tientallen inschrijvingen met vrijwel identieke namen in verschillende plaatsen, en er zijn beëindigde inschrijvingen met dezelfde naam als hun opvolger. Match je op naam, controleer dan altijd isActive en de plaats voordat je een record koppelt.

Een derde die minder vaak genoemd wordt: handelsnamen zijn niet uniek in Nederland. Twee inschrijvingen mogen dezelfde handelsnaam voeren zolang ze niet in hetzelfde marktgebied verwarring stichten. Een UNIQUE-constraint op een naamkolom in je eigen database is dus onhoudbaar zodra je landelijk werkt.

De les die dat oplevert: gebruik naam alleen om een kandidaat te vinden, en het KVK-nummer om te bevestigen. Zodra je het KVK-nummer hebt, sla je dat op en match je nooit meer op naam. Namen veranderen, het nummer niet.

Praktisch datamodel

Bewaar drie kolommen: kvk_number als sleutel, statutory_name voor documenten en display_name voor de interface, waarbij display_name bij het verrijken uit tradingNames[0] komt met name als fallback. Zet er de timestamp van de laatste verrijking bij, zodat je weet wanneer een naam voor het laatst is gecontroleerd. Handelsnamen wijzigen vaker dan mensen denken, en een klant die het jaar erop anders heet, herkent zijn eigen factuur niet meer.

Veelgestelde vragen

Welke naam zet ik op een factuur?
De statutaire naam van de rechtspersoon, met de rechtsvormaanduiding erbij. Een handelsnaam mag je erbij vermelden, maar de juridische entiteit moet herkenbaar zijn. Bij een eenmanszaak is er geen statutaire naam en gebruik je de handelsnaam.
Kan een bedrijf meerdere handelsnamen hebben?
Ja, en dat is heel gewoon. Een BV met drie webshops registreert vaak drie handelsnamen onder een KVK-nummer. Het veld tradingNames is daarom een array, geen string.
Heeft een eenmanszaak een statutaire naam?
Nee. Een statutaire naam bestaat alleen bij een rechtspersoon met een akte. Een eenmanszaak of VOF heeft alleen handelsnamen. In de response is statutoryName dan leeg terwijl name gevuld is.
Waarom krijg ik geen tradingNames terug?
Handelsnamen zijn een verrijkt veld. Zonder de parameter enrich=true krijg je ze niet. Hetzelfde geldt voor statutoryName.

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