Check Netherlands VAT numbers
Validate Dutch VAT numbers (BTW-id) against the EU VIES registry. Since the 2020 privacy reform, Dutch numbers follow the format NL + 9 digits + B + 2-digit branch suffix, replacing the citizen-service-number-derived format. The B and branch digits are mandatory: NL123456789 without the suffix is invalid. Every response includes the company name, registered address, and validity at query time.
Try it
curl -X POST "https://api.vatverify.dev/v1/validate" \ -H "Authorization: Bearer $VATVERIFY_KEY" \ -H "Content-Type: application/json" \ -d '{"vat_number":"NL004495445B01"}'Facts
Format
- Prefix
- NL
- Digits
- 12
- Regex
- ^NL\d{9}B\d{2}$
NL004495445B01NL004495440B01NL004495445B1VAT rates (EUR)
food, books, medicines, cultural events, hairdressers, bike repairs
What we return for Netherlands
{
"data": {
"valid": true, // boolean validity at query time
"vat_number": "DE129273398",
"country": {
"code": "DE",
"name": "Germany",
"vat": { "standard_rate": 19 }
},
"company": {
"name": "SIEMENS AG", // legal entity name
"address": "..." // when VIES provides it
},
"verified_at": "2026-04-25T10:00:00Z"
},
"meta": {
"request_id": "019dc...", // for audit trail correlation
"source": "vies",
"source_status": "live", // live | cached | degraded
"cached": false,
"latency_ms": 234
}
}
Test against production VATs
Real numbers from publicly-documented corporate filings. Click to see the live result.
Watch out for
- Dutch BTW-id must include the B + 2-digit branch suffix: NL123456789 without "B01" is invalid. Many European validators miss this post-2020 requirement.
- Before 2020, Dutch sole trader numbers were derived from the BSN (citizen service number); those numbers were replaced. Old stored numbers may now be invalid.
- The Netherlands allows VAT fiscal unity groups. Group members may not appear in VIES individually; only the representative member's number does.
BTW-id is the EU-facing VAT identifier
Dutch VAT numbers come in the structure NL followed by 9 digits, the
literal letter B, and 2 more digits, for example NL123456789B01.
Twelve characters after the country prefix.
The 9-digit root is the underlying taxpayer identifier. The B is
fixed. The trailing 2 digits identify a specific establishment of the
taxpayer; multi-establishment entities can hold several BTW-ids that
share a root and differ only in the last two digits.
vatverify accepts the canonical form and rejects numbers that do not match the structural shape before the VIES call.
BTW-id replaced the older fiscal number for sole traders
In 2020, the Belastingdienst (Dutch tax authority) split the public VAT identifier from the underlying fiscal-administration number. The reason: for eenmanszaken (sole proprietors), the old VAT number embedded the owner's personal BSN (Burgerservicenummer, the Dutch equivalent of a national insurance number). Publishing it on invoices was a privacy problem.
After the split, sole traders received a new public BTW-id that is unrelated to the BSN. The old internal identifier is now called the OB-nummer and is used only between the taxpayer and the Belastingdienst.
For invoice-validation purposes, only the BTW-id is what flows
through VIES. If a counterparty gives you something that looks like a
Dutch VAT number but does not include the B and trailing 2 digits,
it is probably an OB-nummer and you cannot validate it through VIES.
The B-suffix is not version control
A common misread: the trailing 2 digits do not represent a version of
the same number, they identify a separate establishment. A holding
company with two operating subsidiaries may have BTW-ids ending
B01, B02, and B03 that all share the 9-digit root. Each is a
distinct VIES entity and validates independently. They are not
duplicates.
For invoicing, use whichever BTW-id the counterparty supplies; do not collapse them at the root. The Belastingdienst treats them as separate registrations.
BTW rates
The Netherlands runs three rates: 21% standard, 9% reduced, and 0% for a narrow set of supplies (intra-Community goods, exports, specific medical and educational services).
A planned reform of the reduced rate has been discussed several times in recent budget cycles. Any rate constants in your invoicing code should be configurable rather than hardcoded.
Reverse-charge for construction and personnel
The Netherlands applies a domestic reverse-charge rule (verleggingsregeling) to construction services and to the supply of personnel into the construction sector. The buyer accounts for VAT instead of the seller. This is independent of EU intra-Community reverse-charge and applies between two Dutch parties.
If you are validating Dutch BTW-ids inside a construction-sector invoicing flow, reverse-charge is the default for many transactions, not the exception.
Caching against the Belastingdienst cycle
The Belastingdienst pushes registration changes to VIES on a regular batch. Newly-issued BTW-ids are generally visible within 24 to 48 hours. vatverify's default TTLs (30 days for valid, 24 hours for invalid) line up with that cadence. An invalid result that flips to valid the next day signals an overnight push from the Dutch registry.
Automate Netherlands VAT checks in your stack
Replace manual lookups with one API call against VIES. Drops into invoicing, checkout, and signup flows in any language. 500 free validations per month, no credit card.