{ "totalBranches" :

Hoofdvestiging en nevenvestiging

Kort antwoord

De hoofdvestiging is de vestiging van waaruit een onderneming hoofdzakelijk wordt gedreven, en elke inschrijving heeft er precies een. Nevenvestigingen zijn alle overige locaties: filialen, magazijnen, werkplaatsen. Het adres in een lookup-response is dat van de hoofdvestiging, de rest haal je op via de branches-endpoint.

cURL
# Aantal vestigingen (enrich vereist)
curl ".../v1/lookup/68750110?enrich=true" \
  -H "Authorization: Bearer KEY"

{ "totalBranches": 7 }

# De lijst zelf
curl ".../v1/lookup/68750110/branches"

Het verschil

Elke inschrijving in het Handelsregister heeft één hoofdvestiging. Dat is de locatie van waaruit de onderneming hoofdzakelijk wordt gedreven, en de KVK registreert die bij inschrijving. Een zzp’er die vanuit huis werkt heeft een hoofdvestiging, net als een keten met dertig winkels.

Nevenvestigingen zijn alle andere locaties waar de onderneming duurzaam activiteiten uitvoert: filialen, magazijnen, werkplaatsen, een tweede kantoor. Ze zijn geen aparte inschrijving en hebben geen eigen KVK-nummer, wel een eigen vestigingsnummer van twaalf cijfers.

HoofdvestigingNevenvestiging
Aantal per inschrijvingprecies 10 of meer
Eigen KVK-nummernee, dat van de inschrijvingnee
Eigen vestigingsnummerjaja
Adres in de lookup-responseja, in addressnee, via /branches
Eigen handelsnaam mogelijkjaja

Een nevenvestiging kan een eigen handelsnaam voeren. Dat is de reden dat je in de praktijk winkelketens tegenkomt waar het filiaal in de stad een andere naam op de gevel heeft dan de vennootschap op de factuur.

Wat je terugkrijgt

Een gewone lookup geeft het adres van de hoofdvestiging in address, en met enrich=true ook een postalAddress als dat afwijkt. Er is geen manier om een lookup op een nevenvestiging te richten: het KVK-nummer wijst naar de inschrijving, en de inschrijving heeft één hoofdadres.

Het aantal vestigingen zit in totalBranches, en dat veld is enrich-only:

curl "https://api.kvkbase.nl/v1/lookup/68750110?enrich=true" \
  -H "Authorization: Bearer YOUR_API_KEY"

De lijst zelf hangt aan een eigen endpoint:

curl "https://api.kvkbase.nl/v1/lookup/68750110/branches" \
  -H "Authorization: Bearer YOUR_API_KEY"

Heb je coördinaten nodig voor een kaart of een afstandsberekening, dan voegt geo=true lat/lon toe aan adressen:

curl "https://api.kvkbase.nl/v1/lookup/68750110?enrich=true&geo=true" \
  -H "Authorization: Bearer YOUR_API_KEY"

Een detail dat kosten scheelt: totalBranches telt de vestigingen, inclusief de hoofdvestiging. Een bedrijf met één locatie heeft dus de waarde 1 en niet 0. Gebruik dat als drempel voordat je de branches-endpoint aanroept, dan doe je die tweede call alleen waar hij iets oplevert.

Het patroon dat werkt

De verleiding is om bij elke klant meteen de vestigingslijst op te halen. Dat is verspilling: de overgrote meerderheid van de inschrijvingen in Nederland heeft precies één vestiging, en dan is de lijst een herhaling van het adres dat je al hebt.

Doe het in twee stappen. Verrijk bij onboarding, lees totalBranches, en haal de lijst alleen op als die groter is dan één en je usecase het nodig heeft:

const company = await lookup(kvk, { enrich: true });
if ((company.totalBranches ?? 1) > 1 && needsBranchPicker) {
  const branches = await lookupBranches(kvk);
  // toon een keuzelijst
}

Let op de ?? 1 in dat voorbeeld. Ontbreekt totalBranches, bijvoorbeeld omdat een call zonder enrich is gedaan of omdat het veld voor deze inschrijving niet gevuld is, dan is undefined > 1 gewoon false en gaat het goed. Schrijf je in plaats daarvan company.totalBranches === 0, dan krijg je een tak die nooit klopt.

Waar het misgaat in productie

Adressen die stil verlopen. Overgenomen adressen verouderen zonder foutmelding. Een bedrijf verhuist, jouw factuuradres blijft staan, en de post komt maanden later terug. Ververs adressen periodiek in plaats van ze één keer bij registratie over te nemen.

Het bezorgadres van de hoofdvestiging gebruiken. Bij een keten is de hoofdvestiging vaak het hoofdkantoor en niet de plek waar de goederen heen moeten. Vraag de gebruiker om de vestiging te kiezen als totalBranches groter is dan één, in plaats van het hoofdadres te prefillen en te hopen.

Een gesloten filiaal aanzien voor een open filiaal. Vestigingen sluiten zonder dat de inschrijving eindigt. isActive op het profiel zegt niets over een individuele vestiging, en de data is tot 24 uur gecachet. Voor een routeplanning of een servicebezoek is dat een marge waar je rekening mee moet houden.

Vestigingen als klanten opvoeren. In een webshop of CRM is de verleiding groot om elk filiaal een eigen account te geven met een eigen KVK-nummer. Dat nummer bestaat niet. Modelleer het als één debiteur met meerdere afleveradressen, en bewaar het vestigingsnummer bij het adres. Voor een webshop doet een WooCommerce-integratie dat werk in de checkout.

De hoofdvestiging aanzien voor het postadres. Dat zijn twee velden, address en postalAddress, en ze wijken vaker af dan verwacht: een postbus voor de administratie, een bedrijventerrein voor de goederen. Facturen naar postalAddress als die er is, leveringen naar address.

Veelgestelde vragen

Welk adres krijg ik in een gewone lookup?
Dat van de hoofdvestiging. Wil je het adres van een filiaal, dan haal je de vestigingslijst op via de branches-endpoint. Er is geen parameter waarmee je een lookup op een andere vestiging richt.
Waarom krijg ik totalBranches niet terug?
Het is een enrich-only veld. Zonder enrich=true zit het niet in de response. Behandel een ontbrekend veld niet als nul vestigingen, want dat is een ander antwoord.
Heeft een nevenvestiging een eigen KVK-nummer?
Nee. Alle vestigingen van een inschrijving delen hetzelfde KVK-nummer. Elke vestiging heeft wel een eigen vestigingsnummer van twaalf cijfers.
Kan de hoofdvestiging verhuizen naar een ander adres?
Ja, en dat gebeurt vaker dan je denkt bij groeiende bedrijven. Het KVK-nummer blijft hetzelfde, het adres in de response verandert. Als je adressen ooit hebt overgenomen in je eigen database, verlopen ze stilzwijgend.

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