Validate EU VAT numbers —
and prove it during audits
Validate EU VAT numbers in a single REST call. Every response includes the EU Commission consultation number — the audit token VIES issues to prove the check happened. Plus national registry fallback, enriched company data, and VAT rates for all 27 member states. Built for B2B SaaS and e-commerce selling into Europe.
Built for production systems — not just form validation.
{ "consultationNumber": "WAPIAAAAZ27qPadm", ... }
Official EU audit token issued by the EU Commission — attach to your invoice records
curl "https://api.vatnode.dev/v1/vat/IE6388047V" \ -H "Authorization: Bearer YOUR_API_KEY"
{
"valid": true,
"vatId": "IE6388047V",
"countryCode": "IE",
"countryName": "Ireland",
"companyName": "GOOGLE IRELAND LIMITED",
"companyAddress": "3RD FLOOR, GORDON HOUSE, BARROW STREET, DUBLIN 4",
"companyRegistrationDate": null,
"companyForm": null,
"industryDescription": null,
"registryCode": null,
"registryCodeName": null,
"countryVat": {
"vatName": "Value Added Tax",
"vatAbbr": "VAT",
"currency": "EUR",
"standardRate": 23,
"reducedRates": [
9,
13.5
],
"vatNumberFormat": "IE + 8-9 chars",
"vatNumberPattern": "^IE[0-9A-Z+*]{7}[A-Z]{1,2}$"
},
"checkId": "019d2a89-a5d9-7b97-b710-57b84604de2b",
"verifiedAt": "2026-03-26T14:25:57.209Z",
"consultationNumber": "WAPIAAAAZ27qPadm",
"source": "VIES"
}Used to validate VAT at checkout, invoicing, and B2B onboarding.
Since January 2020, a valid customer VAT number is a substantive legal condition for zero-rating intra-EU goods supplies — not a best practice. VAT number validation at invoice time is your first line of defence.
Why this matters
Boolean VAT validation is not enough for audits
During a tax audit, showing that a VAT number was checked and valid at the time of invoice is a legal requirement for zero-rated intra-EU supplies. A boolean result from your own system proves nothing to a tax authority.
vatnode returns the official consultation number issued by the EU Commission — a verifiable reference that shows the check was performed, when, and what the result was. vatnode returns it as part of every qualified validation response.
Why a basic VIES call is not enough
boolean true is not audit evidence
A raw VIES check
- ×Returns valid/invalid — no proof the check happened
- ×No official reference to attach to an invoice
- ×Fails during country-level VIES outages
- ×No enriched company data from national registries
vatnode
- ✓EU Commission consultation number — independently verifiable
- ✓checkId + verifiedAt — permanent, timestamped audit record
- ✓National registry fallback for covered EU countries
- ✓Legal form, registration date, industry — in one call
Everything you need for EU VAT compliance
One API call returns validated status, enriched company data, VAT rates, and an audit trail — ready for checkout, invoicing, and B2B onboarding.
Real-time + Resilient
National registry fallback via tax authority and company registry APIs keeps validation working even when a country node is temporarily unavailable. Cache hits return in <50ms; live checks in 200–800ms.
Audit-Proof Evidence
Every validation returns an official consultation number from the EU Commission — a verifiable token that proves the check happened at a specific time. Store it alongside your invoices as evidence tax authorities can verify independently.
Know Before You Invoice
Subscribe to your customers' and suppliers' VAT IDs. Get a webhook the moment one de-registers — so you fix the next invoice before it goes out wrong, instead of finding out at audit time.
Enriched Company Data
Beyond VIES: registration date, legal form (GmbH, SAS, AB…), and industry code from national registries. Local VAT name, abbreviation, all rate tiers, and currency — in every response.
Where a VAT number belongs to a sole trader, some fields may constitute personal data under GDPR.
Developer-First
Clean REST API over HTTPS. Works with any language — curl, JavaScript, Python, PHP, Ruby, Go. Up and running in minutes.
MCP Server for AI Agents
Plug Claude Desktop, Cursor, ChatGPT — anything that speaks Model Context Protocol — straight into vatnode. Your AI assistant validates VAT IDs and looks up rates in the chat, with your key staying on your machine. Open source.
EU-Hosted in Germany
Hosted on Vultr in Frankfurt. All validation data stays within EU jurisdiction. Public SLA on every paid plan (99.5% Starter / 99.9% Pro / 99.99% Enterprise). HTTPS everywhere, no third-party data sharing.
Up and running in minutes
No SDK. No infrastructure. Just one HTTP call.
Create your account
Sign up and get an API key instantly. Free plan, no credit card required.
vat_test_••••••••••••••••
vat_live_••••••••••••••••
Make a request
One HTTP call. Works with any language — curl, JavaScript, Python, PHP.
GET /v1/vat/IE6388047V
Authorization: Bearer vat_live_...
Get structured data
Company name, address, validity, and VAT rates for the country — all in one response.
"valid": true,
"companyName": "GOOGLE...",
Built for real B2B workflows
vatnode handles VAT validation wherever your business touches an EU counterparty.
Checkout
Validate a customer's VAT number at checkout to apply the correct reverse charge or tax rate — without blocking the buy button on VIES downtime.
Invoicing
Verify VAT before generating zero-rated intra-EU invoices. Store the consultationNumber alongside your invoice — it's the EU Commission-issued reference that proves the check happened at invoice time.
B2B onboarding
Confirm a new business customer is registered. Enrich the record with legal form, registry code, and industry from national registries.
Monitoring
Track VAT IDs of active customers and get webhook alerts when a registration becomes invalid between billing cycles — before it surfaces in an audit.
Built for every EU stack and country
Drop-in integration guides for your language, and dedicated reference pages for every EU member state.
Validate VAT in your stack
How to validate EU VAT numbers
Format checks, live lookup, audit trail.
VAT validation in Node.js
fetch / undici, TypeScript types, retries.
VAT validation in Python
httpx + async/await, retries, audit logs.
VAT validation in PHP
Guzzle + Composer, Laravel-friendly.
VAT validation in Go
net/http, structured errors, context.
VAT validation in Ruby
Faraday + Rails conventions.
Stripe VAT validation
Add EU VAT validation to Stripe Checkout.
Migrating from VIES SOAP
REST JSON alternative with fallback and audit trail.
VAT number format & rates by country
Simple, transparent pricing
Start free, upgrade when you need more
Free
For testing and small projects
- 100 requests/month
- VAT validation
- VAT rates API
- Community support
Starter
For growing businesses
- 1,000 requests/month
- Everything in Free
- Weekly monitoring
- Webhooks
- Email support
Pro
For high-volume needs
- 10,000 requests/month
- Everything in Starter
- Daily monitoring
- Priority support
What vatnode adds beyond the raw VIES API
The official VIES API returns a valid/invalid signal and basic company details. vatnode adds national registry fallback, enriched company data, audit trail, and VAT rates — all in a single REST call.
All of the above arrives in a single REST call. See the full response schema
Looking at other VAT API providers? See how vatnode compares →
On a non-Stripe billing stack? Read the Stripe Tax alternative breakdown →
Built for the people who sign the contract — and the people who ship the code
Finance picks the vendor. Engineering does the integration. vatnode is the rare tool both sides agree on.
Defensible audit evidence, not best-effort lookups
- • Wrong VAT on an invoice means tax exposure.A VIES check that isn't logged is a check that didn't happen as far as auditors are concerned.
- • EU Commission consultation number on every qualified check — a verifiable token tax authorities can independently confirm. The same evidence every Big 4 tax team will ask for.
- • Monitoring catches de-registrations before the next invoice — not at audit time, when the fine has already accrued.
- • EU-hosted, EU-operated. DPA available. No US sub-processors in the validation path.
The API your team actually enjoys using
- • One REST call. JSON over HTTPS. No SOAP, no SDK, no vendor runtime. curl works.
- • Predictable error contract. Documented codes, real
requestIdon every response, no surprise 200s wrapping failures. - • Resilient by default. National-registry fallback when a VIES member node is down — so your job queue keeps moving instead of paging someone.
- • Test mode without rituals.Test keys return deterministic fixtures, don't hit VIES, don't count toward quota.
Just need VAT rates? The dataset is free and open-source.
Current standard, reduced, super-reduced and parking rates for 45 European countries — via GET /v1/rates (no API key) or the open-source npm/pip/Composer package. Updated daily from the EC TEDB.
Frequently asked questions
Everything you need to know before integrating
Ready to validate VAT numbers?
Start validating in minutes. Free plan, no credit card — test your full integration before you upgrade.
Built by Iurii Rogulia for EU compliance.