Technical dataset
EU VAT formats dataset
Structured reference table for EU VAT identifiers: prefix, regex, checksum classification, and official verification endpoint (VIES). This dataset is intended for client-side validation utilities and documentation workflows.
JSON-LD Dataset schema
Regex patterns
Checksum classification
| ISO | Prefix | Regex | Length | Checksum type | Registry authority | Official verification | Notes |
|---|---|---|---|---|---|---|---|
AT |
AT |
^ATU\d{8}$ |
10 | AT-U8 check-digit (national) | BMF (Austria) | VIES | Prefix ATU + 8 digits; domestic algorithm not standardized in VIES. |
BE |
BE |
^BE0?\d{9}$ |
11–12 | MOD97 (Belgium) | FPS Finance (Belgium) | VIES | Legacy leading zero allowed. |
BG |
BG |
^BG\d{9,10}$ |
11–12 | BG national (varies) | NRA (Bulgaria) | VIES | 9 or 10 digits; multiple entity types. |
CY |
CY |
^CY\d{8}[A-Z]$ |
10 | CY national (alpha suffix) | Tax Department (Cyprus) | VIES | 8 digits + letter. |
CZ |
CZ |
^CZ\d{8,10}$ |
10–12 | CZ national (varies) | Financial Administration (Czechia) | VIES | 8–10 digits; entity types. |
DE |
DE |
^DE\d{9}$ |
11 | ISO 7064 MOD 11,10 (DE) | BZSt (Germany) | VIES | 9 digits; checksum validated client-side. |
DK |
DK |
^DK\d{8}$ |
10 | Weighted sum MOD11 (DK) | Skattestyrelsen (Denmark) | VIES | 8 digits. |
EE |
EE |
^EE\d{9}$ |
11 | EE national | Tax and Customs Board (Estonia) | VIES | 9 digits. |
EL |
GR |
^(EL|GR)\d{9}$ |
11 | MOD11 variant (EL) | AADE (Greece) | VIES | VIES uses EL; GR sometimes used in commerce. |
ES |
ES |
^ES[A-Z0-9]\d{7}[A-Z0-9]$ |
11 | NIF/NIE MOD23 or CIF control (ES) | AEAT (Spain) | VIES | Multiple sub-formats; validator supports common variants. |
FI |
FI |
^FI\d{8}$ |
10 | FI national | Vero (Finland) | VIES | 8 digits. |
FR |
FR |
^FR[A-HJ-NP-Z0-9]{2}\d{9}$ |
13 | FR numeric key rule (when key is digits) | DGFiP (France) | VIES | Key may be alphanumeric; numeric keys validated. |
HR |
HR |
^HR\d{11}$ |
13 | OIB MOD11-10 (HR) | Tax Administration (Croatia) | VIES | 11 digits (OIB). |
HU |
HU |
^HU\d{8}$ |
10 | HU national | NAV (Hungary) | VIES | 8 digits. |
IE |
IE |
^IE\d{7}[A-W][A-I0-9]?$ |
9–10 | IE national (letters) | Revenue (Ireland) | VIES | Legacy formats exist. |
IT |
IT |
^IT\d{11}$ |
13 | IT Partita IVA checksum | Agenzia delle Entrate (Italy) | VIES | 11 digits; checksum validated client-side. |
LT |
LT |
^LT(\d{9}|\d{12})$ |
11–14 | LT national (varies) | STI (Lithuania) | VIES | 9 or 12 digits. |
LU |
LU |
^LU\d{8}$ |
10 | MOD97 (LU) | ACD (Luxembourg) | VIES | 8 digits; mod 97 style. |
LV |
LV |
^LV\d{11}$ |
13 | LV national | SRS (Latvia) | VIES | 11 digits. |
MT |
MT |
^MT\d{8}$ |
10 | MT national | CFR (Malta) | VIES | 8 digits. |
NL |
NL |
^NL\d{9}B\d{2}$ |
14 | NL base 11-check (elfproef) | Belastingdienst (Netherlands) | VIES | 9-digit base validated; B + 2 branch digits. |
PL |
PL |
^PL\d{10}$ |
12 | PL national | KAS (Poland) | VIES | 10 digits. |
PT |
PT |
^PT\d{9}$ |
11 | PT MOD11 | AT (Portugal) | VIES | 9 digits. |
RO |
RO |
^RO\d{2,10}$ |
4–12 | RO national (varies) | ANAF (Romania) | VIES | 2–10 digits (variable length). |
SE |
SE |
^SE\d{10}01$ |
14 | SE base Luhn (org/person) | Skatteverket (Sweden) | VIES | Ends with 01; base is org/person number. |
SI |
SI |
^SI\d{8}$ |
10 | SI national | FURS (Slovenia) | VIES | 8 digits. |
SK |
SK |
^SK\d{10}$ |
12 | SK national (often MOD11) | Financial Administration (Slovakia) | VIES | 10 digits. |
XI |
XI |
^XI\d{9}$ |
11 | UK VAT checksum (NI) | HMRC (Northern Ireland) | VIES | XI prefix used for NI EU trade. |
Implementation notes
- Regex is intended for normalized input with the country prefix present.
- Checksum classification is a practical label for utility design. It is not an official statement of national registration rules.
- Where national algorithms have multiple variants, this dataset flags as “varies”.
Checksum documentation: Checksum methods.