VIES VAT Number Validation API Guide
VIES answers a narrow but commercially important question: whether an EU VAT number is registered for cross-border trade when you check it. A robust integration must preserve that time boundary and treat downtime separately from invalidity.
What does VIES validate?
VIES is the European Commission’s VAT Information Exchange System. The Commission describes the public service as a search engine rather than a standalone database: each request is routed to national VAT data to determine whether EU VAT information exists for that number.
A valid response confirms the status returned for cross-border EU trade at the time of the request. It does not create a VAT registration, provide tax advice or establish that every detail supplied by a customer is correct.
- Country code and VAT number identify the subject of the check.
- Validity is a point-in-time result from connected national data.
- Name and address availability varies by member state and data-protection rules.
- VIES cannot reverse-search a VAT number from a company name or address.
Invalid and unavailable are different outcomes
The official guidance lists several reasons for an invalid result: the number may not exist, may not be activated for intra-EU transactions, or may still be completing a separate cross-border registration step. National updates are not always reflected immediately.
VIES and individual national databases can also be temporarily unavailable. An integration should return an unavailable or 503 outcome, avoid charging for the failed upstream check, and allow a later retry. Converting an outage into invalid can cause the wrong billing or onboarding decision.
REST integration pattern
The Commission publishes interactive, SOAP, REST and batch interfaces. A production service should validate the input format first, call VIES with a bounded timeout, normalize the response without inventing missing fields, and return the original check time and provider request identifier when available.
Charged requests should be idempotent so a network retry does not create a second charge. Store the normalized VAT number, result, check time, returned business fields, request identifier and provider status with the business event that triggered the check.
Frequently asked questions
Is VIES a database of every EU company?
No. The European Commission describes VIES as a search engine that retrieves VAT information from national databases when a check is made.
Does invalid always mean the VAT number does not exist?
No. It may also mean the number is not activated for intra-EU trade or that a required registration step is not finalised.
Should an unavailable VIES request be retried?
Yes. Return a distinct unavailable outcome, do not treat it as invalid, and retry later with the same logical idempotency key if your API charges for successful checks.