What this checks — and what it does not
There are three separate questions about any VAT number, and they are often confused:
- Is it shaped correctly? The right prefix, the right length, digits and letters in the right positions. That is what this page answers, instantly and offline.
- Does it exist? Whether the tax authority has actually issued it. Only VIES knows.
- Is it valid for intra-EU trade today? A number can exist and still not be authorised for cross-border transactions. Again, VIES.
Use this to catch the transcription error in seconds, then confirm the real ones in VIES. Most rejected numbers never make it past step one.
Greece is EL, not GR
This single detail causes more failed validations than anything else. The ISO country code for Greece is GR, but its VAT prefix is EL. Systems that build the number from a country field produce GR123456789, and VIES rejects it every time.
A few other quirks worth knowing: Austria puts a U after the prefix, the Netherlands has a B before the last two digits, and Swedish numbers end in 01. None of these are optional.
Why the customer’s number is your problem
When you sell B2B to another member state under the reverse charge, you invoice without VAT on the strength of your customer’s VAT number. If that number turns out not to have been valid, the exemption can be denied — and the VAT is then reclaimed from you, not from the customer who gave you the wrong number.
That is why validation is treated as part of the transaction rather than administrative tidiness. VIES issues a consultation number when you check; storing it is what proves you exercised due care if the customer’s registration is later found to have lapsed.
Check at the time of supply, not once when the customer was onboarded. Registrations get cancelled.
The usual mistakes
- The prefix left in the number field. Some systems want the country and the digits separately; pasting the whole thing gives you
DEDE123456789. - A national tax number used instead of the VAT number. They are often different identifiers with different lengths — a German company has both a Steuernummer and a USt-IdNr., and only the latter works across borders.
- Leading zeros dropped by a spreadsheet. Belgian numbers begin with a zero, and Excel removes it the moment the column is treated as a number.
- Letters that look like digits. A capital O in place of a zero survives copy-paste and fails validation silently.
VAT number formats in the EU
| Country | Prefix | Example |
|---|---|---|
| Austria | AT |
ATU12345678 |
| Belgium | BE |
BE0123456789 |
| Bulgaria | BG |
BG123456789 |
| Croatia | HR |
HR12345678901 |
| Cyprus | CY |
CY12345678L |
| Czechia | CZ |
CZ12345678 |
| Denmark | DK |
DK12345678 |
| Estonia | EE |
EE123456789 |
| Finland | FI |
FI12345678 |
| France | FR |
FRXX123456789 |
| Germany | DE |
DE123456789 |
| Greece | EL |
EL123456789 |
| Hungary | HU |
HU12345678 |
| Ireland | IE |
IE1234567L |
| Italy | IT |
IT12345678901 |
| Latvia | LV |
LV12345678901 |
| Lithuania | LT |
LT123456789 |
| Luxembourg | LU |
LU12345678 |
| Malta | MT |
MT12345678 |
| Netherlands | NL |
NL123456789B01 |
| Poland | PL |
PL1234567890 |
| Portugal | PT |
PT123456789 |
| Romania | RO |
RO1234567890 |
| Slovakia | SK |
SK1234567890 |
| Slovenia | SI |
SI12345678 |
| Spain | ES |
ESX1234567X |
| Sweden | SE |
SE123456789001 |
Frequently asked questions
No. It means the number could exist. Whether it does, and whether it is authorised for intra-EU trade, is only answerable through VIES.
Common causes: the trader is registered domestically but not for intra-EU transactions, the registration has been cancelled, or the national database is temporarily unreachable — VIES queries each member state live, so an outage in one country looks like an invalid number.
For Poland, yes — the NIP checksum is calculated, which catches transposed digits that pass a length check. Other countries use their own algorithms; this page verifies their structure only and says so in the result.
Yes, if you rely on the reverse charge. VIES returns a consultation number for each query; storing it with the invoice is the standard evidence that you verified the customer at the time of supply.
No. The format check runs entirely in your browser. Opening VIES is a separate step you take yourself.