Een bedrijfsregistratienummer is de identificatie die een register aan een bedrijf geeft wanneer het in het register wordt ingeschreven, en het is de sleutel die iedereen daarna gebruikt om dat bedrijf terug te vinden. Het is ook het veld dat de meeste formulieren breekt, omdat teams blijven valideren tegen het ene land dat ze kennen en dan ontdekken dat niets aan het nummer universeel is.
Deze gids legt uit wat het nummer is, waarom de vorm zo sterk varieert, waarom een strikte formaatregel zo vaak averechts werkt, en hoe je een veld ontwerpt dat de wereld accepteert in plaats van één postcode.
Wat een bedrijfsregistratienummer werkelijk is
Wanneer een bedrijf wordt geregistreerd, neemt het register — een handelsregister, een handelsrechtbank, een beroepsregister of een belastingdienst, afhankelijk van het land — het op en geeft het een nummer. Vanaf dat moment is het nummer hoe het bedrijf wordt aangehaald: op facturen, in contracten, in deponeringen, in kredietcontroles, in gerechtelijke documenten.
Het nummer identificeert. Het beschrijft niet. Je kunt de branche, omvang, leeftijd of kredietwaardigheid van een bedrijf er niet uit lezen, en je moet wantrouwig staan tegenover elke bewering dat dat kan. Een bekend voorvoegsel kan een hint geven over het register dat het uitgaf, maar de cijfers erna zijn een toewijzing, geen codering.
Nog iets dat ronduit bovenaan gezegd moet worden: het nummer wordt uitgegeven door een overheidsinstantie met het oog op registratie. Het is geen vergunning, geen goedkeuring, en geen bewijs dat het bedrijf vandaag in goede staat is. Registers veranderen ook van status — bedrijven worden doorgehaald, ontbonden, hernoemd — terwijl het nummer hetzelfde blijft.
Hoe verschilt het nummer van land tot land?
Het verschilt in vrijwel elk opzicht dat een ontwikkelaar aangaat: of er letters in voorkomen, hoe lang het is, of leestekens er deel van uitmaken, en of het land überhaupt één nationaal register gebruikt.
Op sommige plaatsen is het nummer een reeks cijfers die rechtstreeks uit een reeks wordt toegewezen. Op andere draagt het een lettervoorvoegsel dat codeert voor het register, de rechtsvorm of de regio. Sommige registers gebruiken een vaste breedte en vullen aan met voorloopnullen, zodat de waarde in werkelijkheid een string is ook al ziet ze eruit als een geheel getal. Sommige landen voeren aparte registers voor verschillende rechtsvormen en geven daarom aparte nummerreeksen uit, en sommige federaties hebben zowel een registratie op deelstaatniveau als een nationale identificatie, waarbij beide op verschillende documenten voorkomen.
Hetzelfde land kan ook door verschillende mensen anders worden geschreven. Een register kan scheidingstekens afdrukken die geen deel van het nummer zijn, een bank kan het met een eigen voorvoegsel citeren, en een vertaald document kan het translitereren. Niets daarvan verandert het nummer, maar alles ervan verandert de string die een formulier ontvangt.
| Wat varieert | Waarom het voor een formulier uitmaakt |
|---|---|
| Aanwezigheid van letters | Een regel met alleen cijfers wijst een groot deel van de wereld af |
| Lengte | Elke regel met vaste lengte is fout buiten het land waar ze vandaan komt |
| Voorloopnullen | De waarde als geheel getal opslaan vernietigt ze geruisloos |
| Leestekens en spaties | Opmaak moet vóór vergelijking worden gestript, nooit vóór opslag |
| Register per rechtsvorm | Eén land kan met meer dan één geldige identificatie antwoorden |
Waar zoek je een registratienummer op?
Je zoekt het op bij de bron: het officiële register van het land waar het bedrijf zegt te zijn opgericht. Al het andere — een kredietbureau, een adressensite, een marktplaatsprofiel — is een secundaire kopie met een eigen vertraging.
Het praktische deel is het juiste register vinden. Zoek naar het bedrijvenregister van het land in plaats van naar het bedrijf zelf, en wees je ervan bewust dat veel landen een gratis openbare zoekfunctie publiceren terwijl een kleiner aantal geld vraagt voor documenten. Waar een land geen gratis openbare zoekfunctie heeft, is het eerlijke antwoord aan een klant dat het nummer alleen op papier of via het eigen betaalkanaal van de autoriteit kan worden bevestigd.
Daarom moet verificatie ook een aparte, expliciete stap zijn in elke workflow die dat nodig heeft. Een formulier kan de vorm van een nummer controleren. Alleen het register kan je vertellen of het bedrijf bestaat. Die twee controles gescheiden houden — en de gebruiker vertellen welke faalde — is het verschil tussen een behulpzame fout en een raadsel.
Waarom is er geen wereldwijd formaat om tegen te valideren?
Omdat er geen wereldwijd register is. Registratie is een nationale bevoegdheid, en de wet van elk land bepaalt wat zijn register vastlegt en hoe het de inschrijvingen nummert. Internationale standaarden dekken heel wat bedrijfsgegevens — landcodes, valutacodes, datums, identificaties voor juridische entiteiten — maar er is geen wereldregistratienummer, en geen autoriteit om er een uit te geven.
De gevolgen voor de techniek zijn concreet:
- Geen enkele reguliere expressie mag worden behandeld als “het” patroon voor bedrijfsnummers.
- Geen enkele lengtelimiet mag zo krap zijn dat ze de nummers van een ander land afwijst.
- Van geen enkele controlecijferroutine mag worden aangenomen dat ze bestaat; waar een land er een publiceert, behoort die aan dat land alleen toe.
- Geen enkele validatiefout mag worden gemeld als “dit bedrijf bestaat niet”.
Een testsuite die deze aannames draagt, slaagt comfortabel op binnenlandse gegevens en faalt op de eerste internationale klant, meestal in productie, meestal tijdens onboarding.
Hoe streng moet validatie zijn?
Streng genoeg om duidelijke fouten te vangen, ruim genoeg om nooit een legitiem bedrijf af te wijzen. Die twee doelen trekken in tegengestelde richtingen, en de oplossing is in lagen valideren in plaats van in één pass.
De eerste laag is aanwezigheid en basale gezondheid: het veld is gevuld, het bestaat niet uit spaties, het bevat geen stuurtekens, en het valt binnen een royale maximale lengte. De tweede laag is landbewuste vormcontrole, alleen toegepast wanneer je het land met zekerheid kent — en geschreven om alles plausibel te accepteren in plaats van de grammatica van één land af te dwingen. De derde laag is de gezaghebbende: een werkelijke opzoeking tegen het register, asynchroon uitgevoerd, met een eigen uitkomst.
Gelaagdheid geeft je bruikbare fouten. “We konden dit nummer niet bevestigen bij het register” is actiegericht. “Ongeldig registratienummer” is dat niet, en het is ook fout, want het formulier heeft geen idee of het bedrijf geregistreerd is — alleen dat de invoer niet overeenkwam met een patroon dat iemand uit het hoofd heeft getypt.
Voor ontwikkelaars: de registratienummers van de wereld accepteren
Behandel het veld als een ondoorzichtige string. Sla het exact op zoals de klant het invoerde, na het trimmen van buitenste spaties, en sla een genormaliseerde kopie op — hoofdletterongevoelig, scheidingstekens verwijderd — voor vergelijking en zoeken. Sla het nooit op in een kolom met gehele getallen, en laat een voorloopnul nooit verloren gaan onderweg door een spreadsheet, een CSV-export of een JSON-parser die slordig omgaat met numeriek ogende strings.
Zet de maximale lengte royaal; de langste nationale formaten zijn nog steeds korte strings, en de kosten van een ruime limiet zijn niets vergeleken met de kosten van het afkappen van een echt nummer. Sta letters, cijfers en de scheidingstekens toe die mensen werkelijk typen, en normaliseer voordat je vergelijkt in plaats van af te wijzen wat je niet verwachtte.
Routeer op land in plaats van te gokken, en maak de routering expliciet in het datamodel: een registratienummerwaarde zonder land is maar de helft van een waarde. Waar een land onbekend of niet ondersteund is, val je terug op de generieke controles en zeg je dat in de interface in plaats van een regel te verzinnen.
Houd ten slotte gegenereerde en echte waarden in elke omgeving die je beheert zichtbaar gescheiden. Waarden die de generator op deze site produceert zijn synthetisch en behoren tot geen enkel register, en de notitie die ze vergezelt zegt dat. Het artikel over btw-nummers behandelt het naburige veld, dat hetzelfde gelaagde validatieprobleem heeft en zijn eigen valkuil: een formaatcontrole en een registercontrole zijn twee verschillende vragen.
Volgende stappen
Neem het registratienummerveld in je eigen product en probeer het uit tegen een handvol landen waarvan je de formaten nooit hebt gezien. Als iets een waarde afwijst waarvan je niet persoonlijk kunt bewijzen dat ze misvormd is, versoepel dan de regel en verplaats dat oordeel naar de opzoekstap, waar het thuishoort. Genereer dan een paar synthetische bedrijven in de generator voor testbedrijfsgegevens en bevestig dat het veld kopiëren, plakken, exporteren en opnieuw importeren overleeft zonder een voorloopnul te verliezen.