Check EU VAT numbers at VIES, with proof.
Check an EU VAT number at VIES, the European Commission's system. You get back whether it's valid, the name and address where the member state shares them, and a consultation number as proof.
- Status
- PreviewBuild on it now with a test key. While in preview, details may still change before it's generally available.
- Price
- price to follow
- Operations
- vat.validate
What it does
What it does
Send a VAT number with its country prefix, such as NL123456789B01. Spaces, dots and dashes are fine.
We first check that the number has the format of its country. If it does, we ask VIES there and then.
We never reuse an earlier answer.
The consultation number
For each check, VIES returns a consultation number: proof that you checked the number at that moment. Keep it with the invoice, for instance when you reverse-charge VAT to a customer in another EU country.
Good to know
- A number in the wrong format is a
200withvalid: falseandformat_valid: false. VIES isn’t asked, and it costs nothing. - When VIES or a member state’s register is down, you get
503 provider_unavailable, also free of charge. Try again afterRetry-After. - It covers the EU member states and Northern Ireland (
XI). Numbers from outside the EU, such asGB, get404 country_not_supported. - VAT rates per country aren’t in the API yet.
Example
Real calls with a test key. Replace ac_test_… with your own key.
curl https://api.accountcloud.io/v1/vat-numbers/NL999999990B01 \
-H "Authorization: Bearer ac_test_…"AccountCloud-Charged: 0.0000{
"object": "vat_number",
"vat_number": "NL999999990B01",
"country": "NL",
"valid": true,
"format_valid": true,
"name": "TESTBEDRIJF B.V.",
"address": "TESTSTRAAT 00001\n1234AB AMSTERDAM",
"consultation_number": "WAPITEST00000001",
"source": {
"register": "vies",
"name": "VIES (European Commission)",
"retrieved_at": "2026-11-04T01:03:36Z"
}
}What it costs
Excluding VAT, from your prepaid balance. Test keys are free, and an error or invalid input costs nothing.
Until it has a price, a live key gets 503 operation_unavailable. Test keys work already.
Read more
Start with a test key. It's free.
Signing up takes a minute. The quickstart in the docs, five.