What Is VIES? The EU VAT Information Exchange System Explained

VIES – the VAT Information Exchange System – is the European Commission service that tells you whether a VAT number is currently registered for cross-border trade. It is free, it covers the 27 EU member states plus Northern Ireland (XI), and it holds no database of its own: every query is forwarded to the member state that issued the number, which answers from its own register. Member states are required to operate that exchange under Council Regulation (EU) No 904/2010. This guide covers what it answers, what it does not, how to check a number step by step, and what to do when a country stops responding.

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.

Article 17 of Council Regulation (EU) No 904/2010 requires member states to store VAT-registration data electronically, and Article 31 requires them to let anyone confirm, through this exchange, that a given number is valid. That is what you are querying.

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, and for what a VAT ID actually is before you get to validating it, see What Is a VAT ID?.

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 two interfaces for programmatic access: a legacy SOAP web service and a newer unauthenticated REST endpoint that returns JSON. Both work, but both are bare upstream – they return sparse, country-variable fields, have no account, quota, caching, or retry semantics, and give you nothing to store as an audit record. Most teams end up wrapping it. You can do that yourself, or use a production 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.

How to Check a VAT Number in VIES, Step by Step

The manual route takes about half a minute on the Commission's own site, and the same four decisions apply whether you use the web form or an API.

  1. 1Pick the issuing country. Choose the member state from the country list and enter the VAT number without its two-letter prefix. The prefix belongs to the country field, not the number field — a common cause of a rejected format check, not a genuine “invalid” verdict.
  2. 2Add your own VAT number if you want a record. The requester fields are optional. Fill them in with your own VAT number and VIES issues a consultation number for the check; leave them empty and you get the verdict only.
  3. 3Read the verdict, not the layout. “Valid” means the number is registered for intra-EU trade at that moment. Name and address appear for most, not all, member states — their absence is not a failed check.
  4. 4Keep what you need before you close the page. VIES stores nothing for you. Capture the verdict, the date and, if you requested one, the consultation number, alongside the invoice they belong to.

If you would rather not retype the prefix and read a form, you can check a VAT number now – the same VIES answer, with the country picked from the number itself and that country's current VAT rates alongside it.

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 supports the answer.

Why this matters: a screenshot of the VIES website is weak evidence. A consultation number is tied to your requester VAT and a timestamp, and it comes from the Commission rather than from your own logs. How much weight it carries, and how long you must keep it, varies by member state. vatnode returns it automatically on qualified checks once your requester VAT is configured – see the VAT audit trail guide.

When VIES Says “Unavailable”

A check can also come back without a verdict at all: MS_UNAVAILABLE, MS_MAX_CONCURRENT_REQ or a page telling you the service cannot be reached. None of these say anything about the VAT number. They say the member state's own system did not answer – because it is in a maintenance window, or because too many requests are hitting it at once. The number is not invalid; it is unchecked. Treating the two as the same thing is how a working customer gets turned away at checkout.

You can watch this happen in real time on our VIES status page, which samples every country's node and keeps the history. What to do about it depends on how automated you are: try again in a few minutes for a one-off, or, in code, retry asynchronously and let the transaction proceed with VAT charged conservatively until the check confirms. The automated fallback when VIES is unavailable covers the alternative: falling back to that country's own register instead of waiting.

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 routine rather than rare incidents.

A second line of defence is a national-registry fallback. A few member states expose their own VAT register directly. When the VIES route is temporarily unavailable for one of those countries, a service can fall back to that register and still return its VAT-status answer – not a VIES confirmation, and without a consultation number. vatnode does this for the countries marked on its coverage page, which 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 – for example Czechia VAT number format & rates (CZ). For the REST wrapper this guide references, see the VIES API reference.

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 recording that you checked a specific VAT number at a specific time. It evidences the check itself, not that the counterparty stayed registered afterwards, and what an authority expects varies by member state. vatnode returns this consultation number automatically on qualified checks once you configure your requester VAT.

VIES says “service unavailable” — is the VAT number invalid?

No. “Service unavailable”, “MS_UNAVAILABLE” and “MS_MAX_CONCURRENT_REQ” all mean the member state’s own system did not answer — it says nothing about the number. Treat it as “not yet checked” rather than “invalid”: retry later, or use a source that falls back to that country’s national register. Only an explicit invalid verdict from the member state means the number is not registered.

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.