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.