{ "kvkNumber" :

What is a KVK number?

Short answer

A KVK number (KVK-nummer) is the eight digit identifier the Kamer van Koophandel, the Dutch Chamber of Commerce, assigns to every entry in the Handelsregister, the Dutch business register. It is the Dutch equivalent of a Companies House number in the UK or an HRB number in Germany, except that it also covers sole traders and partnerships. It identifies a registration, not a legal entity and not a tax status.

cURL
# Look up by KVK number
curl ".../v1/lookup/68750110" \
  -H "Authorization: Bearer KEY"

{
  "kvkNumber": "68750110",
  "name": "Acme B.V.",
  "legalForm": "41",
  "isActive": true
}

What the number actually identifies

If you are integrating Dutch company data from outside the Netherlands, the first thing to get straight is that a KVK number identifies an inschrijving, a registration in the trade register, and nothing more. It does not tell you that a company exists as a legal person, that it is trading, or that it can issue a valid VAT invoice.

Three consequences follow from that, and all three bite in production:

  • A sole trader has a KVK number but no legal personality and no statutory name.
  • A company that has been dissolved keeps its KVK number. The number resolves fine, the registration is just marked inactive.
  • A company with fifteen locations has one KVK number covering all of them. Locations are identified separately by a twelve digit vestigingsnummer.

Here is roughly how it lines up against registers you may already integrate with.

CountryIdentifierCovers sole tradersFormat
NetherlandsKVK numberYes8 digits
United KingdomCompany numberNo8 characters, may include letters
GermanyHRA / HRB numberNoCourt prefix plus number
FranceSIRENYes9 digits
BelgiumEnterprise numberYes10 digits

The French SIREN is the closest analogue, because it also covers self employed people and also has a separate establishment level identifier (SIRET in France, vestigingsnummer in the Netherlands).

Format, validation and the leading zero problem

A KVK number is exactly eight digits and may start with a zero. There is a checksum, and validating it locally before you spend an API call is worth doing. The rules are written up in full in KVK number validation rules and checksum, so they are not repeated here.

The failure that actually costs people a day of debugging is not the checksum. It is type coercion. A customer sends a spreadsheet, the CSV importer parses 01234567 as a number, and you end up looking up 1234567, which is seven digits and rejected with INVALID_KVK_NUMBER. The same thing happens when a JSON payload declares the field as an integer, and again when a database column is INT.

Treat the KVK number as a string everywhere: in your schema, in your API contract, in your CSV import, and in the form field. Strip spaces and dots on input, then left pad to eight characters.

Looking one up

A lookup takes the number and returns the registration.

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

The base response gives you kvkNumber, name, legalForm, address, isActive, registrationDate, activities and insolvency. Adding ?enrich=true adds the fields that need extra work to assemble: statutoryName, tradingNames, postalAddress, employees, websites and totalBranches.

If all you need is a yes or no on whether a number is real, there is a cheaper call that does not return a profile:

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

Use that one behind a signup form where you are validating input, and save the full lookup for the moment you actually need the data. A full walkthrough of the lookup flow lives in the KVK number lookup guide.

When a KVK number is the wrong key

There is one case where keying on the KVK number is not enough: multi location businesses. A logistics customer with a head office in Rotterdam and three depots elsewhere sends you one KVK number and four delivery addresses. If your model has a single address per company, you have already lost information that the register was happy to give you.

If your product cares about where the counterparty is, key on the KVK number for the legal relationship and store vestigingsnummers for the locations. Fetching them is one extra call to /v1/lookup/{kvkNumber}/branches.

The other case is tax. If you are issuing cross border invoices, the number that matters for the reverse charge is the VAT number validated against VIES, not the KVK number. A valid KVK number proves the company is registered. It proves nothing at all about its VAT position.

Frequently asked

How many digits does a KVK number have?
Eight. Anything shorter is either a truncated value or an old style dossier number from before the 2008 register migration. Store it as a string, because leading zeros are meaningful and an integer column will silently drop them.
Is a KVK number the same as a Dutch VAT number?
No. The KVK number is issued by the Chamber of Commerce and identifies the registration. The VAT number is issued by the Dutch tax authority and identifies the party liable for VAT. They are separate numbers with separate lifecycles, and you cannot reliably calculate one from the other.
Do sole traders have a KVK number?
Yes. Unlike the UK or German registers, the Dutch trade register covers sole traders (eenmanszaak) and partnerships as well as incorporated companies. Every registration gets a KVK number regardless of legal form.
Does the KVK number change if the company is renamed or moves?
No. The KVK number stays with the registration through name changes, address changes and legal form conversions. That is why it is the right primary key for a company table, while names and addresses are not.
Is KVK data public?
Yes. The Dutch trade register is a public register and company data can be retrieved by anyone, from anywhere. You do not need to be a Dutch resident or hold a Dutch account to read it.

Updated:

One call gives you the whole company

KVK data, the derived VAT number and a live VIES check, in a single request. The free plan covers 50 lookups a month and needs no card.

50
free lookups a month
1
request instead of three
0
cards, contracts or sales calls