Short answer: enter the number in VIES, the European Commission's validation service, or in our free EU VAT number checker. VIES asks the tax database of the country that issued the number and answers valid or invalid. An "invalid" result often means the number exists but is not activated for intra-EU trade, or that the format is wrong, so check the prefix, ask the customer, and keep a record of every check.
What VIES is, and what it is not
VIES (VAT Information Exchange System) is, in the Commission's words, "a search engine (not a database)". When you check a number, VIES passes the question to the national tax administration that issued it and returns that country's answer. Two consequences:
- The answer is only as current as the national database. A new registration, or a new activation for intra-EU trade, can take time to show up.
- The Commission does not vouch for the data. It says it has no control over the national databases, and that a VIES result "does not in itself give a right to exempt intra-Community supplies".
How to check a VAT number in VIES, step by step
- Open VIES on the web (search "VIES VAT number validation" on the European Commission site) or our VAT number checker.
- Choose the member state from the list. For Greece choose EL, for Northern Ireland choose XI.
- Enter the number without the prefix. For DE123456789, type 123456789. Leave out spaces, dots and dashes.
- Enter your own VAT number as the requester if you need proof of the check. VIES then returns a consultation number for that request.
- Submit and read the result. Valid or invalid, the date of the request and, depending on the country, the registered name and address.
- Save the result as a PDF or screenshot, with the consultation number, in the customer's file.
If the result shows a name and address, compare them with the customer's details on your invoice. VIES can also confirm whether a name or address you enter matches the record, without showing the record itself.
EU VAT number prefixes and formats
Formats as published by the Finnish Tax Administration. "Digits" means 0 to 9.
| Country | Prefix | Characters after the prefix |
|---|---|---|
| Austria | AT | U + 8 digits |
| Belgium | BE | 10 digits |
| Bulgaria | BG | 9 or 10 digits |
| Croatia | HR | 11 digits |
| Cyprus | CY | 8 digits + 1 letter |
| Czech Republic | CZ | 8, 9 or 10 digits |
| Denmark | DK | 8 digits |
| Estonia | EE | 9 digits |
| Finland | FI | 8 digits |
| France | FR | 2 letters or digits + 9 digits |
| Germany | DE | 9 digits |
| Greece | EL | 9 digits |
| Hungary | HU | 8 digits |
| Ireland | IE | 8 or 9 characters: 7 digits and 1 letter (the second character may be a letter or symbol), or 7 digits and 2 letters |
| Italy | IT | 11 digits |
| Latvia | LV | 11 digits |
| Lithuania | LT | 9 or 12 digits |
| Luxembourg | LU | 8 digits |
| Malta | MT | 8 digits |
| Netherlands | NL | 9 digits + B + 2 digits |
| Poland | PL | 10 digits |
| Portugal | PT | 9 digits |
| Romania | RO | 2 to 10 digits |
| Slovakia | SK | 10 digits |
| Slovenia | SI | 8 digits |
| Spain | ES | 9 characters: first and last can be a letter or a digit, but not both digits |
| Sweden | SE | 12 digits, ending in 01 |
| Northern Ireland | XI | Same as UK numbers: usually 9 digits (12 for branches) |
A quick sanity check before you submit: count the characters. NL numbers are 14 characters including the prefix, Swedish ones end in 01, Austrian ones start with U. Country notes are in our guides, for example the German VAT number check and the Greek VAT number check.
Why a valid number shows as invalid
1. Not activated for intra-EU transactions. The Commission lists this as a main reason. Some countries require a separate registration for intra-EU trade, so a business can have a perfectly good domestic VAT number that VIES reports as invalid.
2. Registration not yet finalised. New registrations and activations take time to reach the national database.
3. Wrong format. The most common ones:
- GR instead of EL for Greece. The country code in VIES is EL.
- The prefix typed twice, for example selecting DE and entering DE123456789.
- Missing letters: the U in Austrian numbers, the B in Dutch numbers.
- A tax ID instead of a VAT number: in several countries the domestic tax number and the VAT number differ.
4. The national system is down. This is not an "invalid" result, but it is easy to misread. The VIES web service documents these errors:
| Error | Meaning |
|---|---|
| MS_UNAVAILABLE | The member state's application is not replying or not available |
| TIMEOUT | No reply within the time allowed, try again later |
| SERVICE_UNAVAILABLE | A network or application error, try again later |
| MS_MAX_CONCURRENT_REQ | Too many requests to that member state at once |
| GLOBAL_MAX_CONCURRENT_REQ | Too many requests to VIES overall |
| INVALID_INPUT | The country code is invalid or the VAT number is empty |
The Commission notes that national databases are often unavailable during backups, so wait a few minutes or try later in the day.
5. The number has been cancelled. If the number was valid last year and is invalid now, ask the customer before the next invoice.
What to do when VIES says invalid
- Re-check the format against the table above and run it again.
- If you got an error code, retry later. Do not record an error as "invalid".
- Ask the customer to confirm the number with their tax office and, if needed, register for intra-EU transactions. The Commission points them there.
- Decide the invoice treatment. Without a valid number from another member state, you cannot rely on the zero rate for an intra-EU supply of goods. Since the 2020 EU "quick fixes", the customer's VAT number is a substantive condition for that exemption. Agree with your adviser whether to charge local VAT until the number validates.
- Keep the record of each check, including failed ones.
Proof for zero-rated intra-EU supplies
For a zero-rated supply of goods worth €12,480.00 to a customer in Belgium, an auditor will want to see more than an invoice saying "reverse charge". A good file holds:
- the VIES result dated before or at the time of supply, with the consultation number (only returned if you entered your own VAT number as requester),
- transport evidence that the goods left your country,
- the supply in your recapitulative statement (EC Sales List) under the customer's VAT number.
The Commission recommends keeping track of your validation in case of a tax inspection. The consultation number gives you a reference for the check that you can quote if asked.
UK and Northern Ireland numbers
GB numbers are not in VIES. GB-prefixed numbers were valid for VIES only up to 31 December 2020. To check one, use HMRC's Check a UK VAT number service on GOV.UK. It shows whether the number is valid and the business name and address, and UK VAT-registered businesses can use it to prove when they checked.
XI numbers are in VIES. Businesses in Northern Ireland that trade goods with the EU use an XI prefix with the same structure as their UK number. See our Northern Ireland VAT number guide.
Checking VAT numbers in bulk or by API
VIES has a public web service (checkVatService) that software can call with a country code and number. A second operation also takes trader and requester details and returns match results and the consultation number. Two practical points from its documentation: there are limits on concurrent requests per member state and overall, so batch jobs need to throttle and retry; and an error is not an answer, so log it and check again rather than marking the customer invalid.
For occasional checks, the free VAT number checker is quicker than the VIES form.
Where Invoreg fits
The VAT number checker is a free tool on our site. Invoreg itself handles supplier invoices: it reads each one, whether PDF, scan, phone photo or XML e-invoice, including every line with its VAT rate, suggests the coding from the client's history, flags duplicates and registers the bill in the accounting software once a person approves it. It does not replace your VIES checks on customers. To see it on your own purchase invoices, try it on your own invoices: the first 20 invoices are free.