What Is VIES? The EU VAT Information Exchange System Explained

VIES is the official European Commission service for checking whether an EU VAT number is valid. This guide explains what it actually does, what it does not do, who has to use it, and why production systems need to plan around its availability.

What VIES is

VIES stands for the VAT Information Exchange System. It is a service operated by the European Commission that lets anyone confirm whether a VAT identification number issued by an EU member state is valid for cross-border (intra-EU) transactions. You give it a country prefix and a VAT number; it tells you whether that number is currently registered, and — for most countries — the registered name and address of the business.

The most important thing to understand about VIES is what it is not: it is not a single, central database of every European company. The Commission does not keep a master copy of national VAT registers. Instead, VIES is a message-routing layer. When you query a German VAT number, VIES forwards the request to the German tax administration, which answers from its own register in real time, and VIES relays that answer back to you. The same happens for each of the 27 member states plus Northern Ireland.

This federated design explains almost every quirk you will encounter — why response data differs by country, why one country can be “down” while the rest work, and why there is no published uptime guarantee.

What VIES does — and what it does not do

VIES answers exactly one question: is this VAT number valid for intra-EU trade right now? For most countries it also returns the registered name and address. That is the whole scope. It is easy to expect more from it than it delivers, so it helps to be precise:

  • 1It confirms current validity for cross-border transactions — not historical status, and not necessarily domestic-only registrations.
  • 2It returns name and address for most member states, but coverage is inconsistent: some return partial data, some none, and a few require a requester VAT number first.
  • 3It does not return VAT rates, financial standing, company registry numbers, or directors — it is a validity check, not a business-intelligence service.
  • 4It does not store your check for you. If you need an audit trail, you have to capture and retain the evidence yourself.

A frequent point of confusion is the difference between a format check and a validity check. A number such as DE123456789 can have a perfectly correct German format and still be invalid because no business holds it. VIES checks validity against the live register; it is not just a regular-expression match. For the format side of the problem, see the EU VAT number formats reference.

Who needs to use VIES

In practice, anyone selling across EU borders on a business-to-business basis. The classic case is the reverse charge mechanism: when a VAT-registered business in one member state supplies goods or services to a VAT-registered business in another, the supplier typically issues the invoice without VAT and the buyer accounts for it locally. To do that lawfully you generally need to confirm the buyer is in fact VAT-registered for intra-EU trade — and VIES is the canonical place to confirm it.

For intra-EU B2B supplies of goods, having a valid VAT number for the customer is a substantive condition for the VAT exemption under the EU VAT “quick fixes” (Council Directive 2018/1910), not merely a formality. For cross-border B2B services, the buyer's VAT status determines whether the place of supply and the reverse charge apply. Either way, the practical takeaway is the same: verify before you zero-rate, and keep proof that you did.

That is the difference between a casual check and a compliant one. A single manual lookup on the VIES website is fine for a one-off. Issuing reverse-charge invoices at scale means validating programmatically and retaining the evidence — which is where the consultation number and audit trail come in.

How VIES validation actually works

Mechanically, a VIES check takes a two-letter country code and the VAT number, routes the query to that member state, and returns a small structured result. Conceptually, every check moves through the same stages, whether you do it on the website or through an API:

  • 1Format: the country prefix and number shape are checked. A malformed number is rejected before any lookup.
  • 2Routing: the query is forwarded to the issuing member state’s national VAT register.
  • 3Validity: the member state answers whether the number is currently registered for intra-EU transactions, and where available, returns the name and address.
  • 4Evidence: optionally, if you supply your own requester VAT number, the service issues a consultation number you can store as proof of the check.

The European Commission publishes a SOAP web service for programmatic access. It works, but it is XML-based, returns sparse and country-variable fields, has no built-in rate limiting, caching, or retry semantics, and gives you nothing to store as an audit record. Most teams end up wrapping it. You can do that yourself, or use a REST layer such as the vatnode VAT checker and API that returns clean JSON and a stored check record. For a side-by-side comparison of the raw SOAP service and a REST wrapper, see the VIES API alternative guide.

The consultation number: VIES as official evidence

A plain VIES check gives you a yes/no answer but nothing durable to file away. The consultation number changes that. When you supply your own VAT number as the requester, the service can return a unique reference that records the fact that you checked a specific VAT number at a specific time. If a tax authority later asks how you justified zero-rating an invoice, that reference is the cleanest possible answer.

Why this matters: a screenshot of the VIES website is weak evidence. A consultation number tied to your requester VAT and a timestamp is the documentary proof auditors expect. vatnode returns it automatically on qualified checks once your requester VAT is configured — see the VAT audit trail guide.

VIES availability and why a national fallback matters

Because VIES routes to national registers, availability is per-country, not global. At any given time one member state's node may be in a maintenance window or temporarily unreachable while the other 26 respond normally. The Commission does not publish an uptime SLA, and these outages are a routine operational reality rather than rare incidents.

For a manual one-off check this is a minor annoyance — you try again later. For an automated checkout or invoicing flow it is a real problem: if you hard-block whenever VIES returns “unavailable”, you reject legitimate customers because of an outage that has nothing to do with them. The robust pattern is to never block on a single unavailable response — let the transaction proceed, charge VAT conservatively until confirmed, and retry the check asynchronously.

A second line of defence is a national-registry fallback. Several member states expose their own tax-authority or company-registry lookups directly. When the VIES route is temporarily unavailable for one of those countries, a service can fall back to the national source and still return a result. vatnode does exactly this for a growing set of EU countries, which materially reduces how often a check fails for reasons outside your control.

Which countries VIES covers

VIES covers the VAT numbers of all 27 EU member states. Following Brexit, Great Britain (GB) VAT numbers are no longer in VIES — UK VAT is checked through HMRC instead. However, under the Windsor Framework (which amended the Northern Ireland Protocol), Northern Ireland VAT numbers for goods carry the XI prefix and remain checkable through VIES. So the practical coverage you can validate through VIES today is EU-27 plus XI.

If you need the exact format for each of those prefixes, the EU VAT number formats reference lists every country's structure and an example, and the per-country pages under vatnode.dev/check let you run a live check and see current VAT rates.

Frequently asked questions

Is VIES free to use?

Yes. The VIES web tool and the underlying validation service are operated by the European Commission and are free to use. There is no charge per lookup. The trade-offs are practical rather than financial: the public tool is built for occasional manual checks, has no SLA, and member-state nodes can be unavailable, so high-volume or automated use needs additional engineering around reliability, caching, and audit logging.

Does VIES tell you the company name and address?

It can, but not consistently. VIES returns whether a VAT number is valid, and for many member states it also returns the registered name and address. Some countries return this data only partially or not at all, and a few require you to supply your own requester VAT number before they release name and address details. Never assume name and address will always be present in the response.

What does it mean when VIES says a VAT number is invalid?

It means the number is not currently registered for intra-EU (cross-border) transactions in that member state at the moment of the check. That can be because the number never existed, was entered incorrectly, has been deregistered, or — in some countries — is registered only for domestic VAT and not enabled for intra-EU trade. An "invalid" result is point-in-time: a number can be valid one week and invalid the next.

What is a VIES consultation number?

When you supply your own VAT number as the requester, VIES can issue a consultation number — a unique reference proving that you checked a specific VAT number at a specific time. It is the strongest documentary evidence that you verified a counterparty before applying the reverse charge. vatnode returns this consultation number automatically on qualified checks once you configure your requester VAT.

Why does VIES sometimes go down?

VIES does not hold a central database. It forwards each query to the relevant member state, which answers from its own national VAT register. If that country’s node is in a maintenance window or under load, VIES returns an unavailable status for that country even though every other country still works. This per-country availability is normal and expected, which is why production integrations should never hard-block on a single unavailable response.

Check a VAT number against VIES now

Run a free live VIES lookup, or get an API key to validate at scale with national-registry fallback and consultation numbers for your audit trail.