Check the format before you check the registration.
Validate a VAT number's structure and check digit in the browser, and read the exact pattern, example, checksum rule and official source for every supported jurisdiction.
Reviewed formats
| Jurisdiction | Prefix | Pattern | Example | Check digit | Source |
|---|---|---|---|---|---|
| Austria | AT | ^ATU\d{8}$ | ATU12345675 | Format only | European Commission — VAT identification numbers |
| Belgium | BE | ^BE[01]\d{9}$ | BE0123456748 | The first eight digits modulo 97 must equal the final two digits. | European Commission — VAT identification numbers |
| Bulgaria | BG | ^BG\d{9,10}$ | BG123456789 | Format only | European Commission — VAT identification numbers |
| Croatia | HR | ^HR\d{11}$ | HR12345678901 | Format only | European Commission — VAT identification numbers |
| Cyprus | CY | ^CY\d{8}[A-Z]$ | CY12345678X | Format only | European Commission — VAT identification numbers |
| Czechia | CZ | ^CZ\d{8,10}$ | CZ12345678 | Format only | European Commission — VAT identification numbers |
| Denmark | DK | ^DK\d{8}$ | DK12345678 | Format only | European Commission — VAT identification numbers |
| Estonia | EE | ^EE\d{9}$ | EE123456789 | Format only | European Commission — VAT identification numbers |
| Finland | FI | ^FI\d{8}$ | FI01120389 | Weights 7, 9, 10, 5, 8, 4, 2 over the first seven digits; remainder 1 is invalid. | European Commission — VAT identification numbers |
| France | FR | ^FR[0-9A-Z]{2}\d{9}$ | FR40303265045 | The two-character key equals (12 + 3 × (SIREN mod 97)) mod 97 for numeric keys. | European Commission — VAT identification numbers |
| Germany | DE | ^DE\d{9}$ | DE123456788 | ISO 7064 MOD 11,10 over the first eight digits. | European Commission — VAT identification numbers |
| Greece | EL | ^EL\d{9}$ | EL123456789 | Format only | European Commission — VAT identification numbers |
| Hungary | HU | ^HU\d{8}$ | HU12345678 | Format only | European Commission — VAT identification numbers |
| Ireland | IE | ^IE(\d{7}[A-Z]{1,2}|\d[A-Z]\d{5}[A-Z])$ | IE1234567A | Format only | European Commission — VAT identification numbers |
| Italy | IT | ^IT\d{11}$ | IT00743110157 | Luhn checksum over all eleven digits. | European Commission — VAT identification numbers |
| Latvia | LV | ^LV\d{11}$ | LV12345678901 | Format only | European Commission — VAT identification numbers |
| Lithuania | LT | ^LT(\d{9}|\d{12})$ | LT123456789 | Format only | European Commission — VAT identification numbers |
| Luxembourg | LU | ^LU\d{8}$ | LU26375245 | The first six digits modulo 89 must equal the final two digits. | European Commission — VAT identification numbers |
| Malta | MT | ^MT\d{8}$ | MT12345678 | Format only | European Commission — VAT identification numbers |
| Netherlands | NL | ^NL\d{9}B\d{2}$ | NL111222333B01 | Eleven-test with weights 9 to 2 and minus one on the final digit. | European Commission — VAT identification numbers |
| Poland | PL | ^PL\d{10}$ | PL5261040828 | Weights 6, 5, 7, 2, 3, 4, 5, 6, 7 over the first nine digits; remainder 10 is invalid. | European Commission — VAT identification numbers |
| Portugal | PT | ^PT\d{9}$ | PT123456789 | Weights 9 to 2 over the first eight digits; remainder below 2 maps to 0. | European Commission — VAT identification numbers |
| Romania | RO | ^RO\d{2,10}$ | RO123456789 | Format only | European Commission — VAT identification numbers |
| Slovakia | SK | ^SK\d{10}$ | SK1234567890 | Format only | European Commission — VAT identification numbers |
| Slovenia | SI | ^SI\d{8}$ | SI12345678 | Format only | European Commission — VAT identification numbers |
| Spain | ES | ^ES[0-9A-Z]\d{7}[0-9A-Z]$ | ES12345678Z | DNI/NIE letter table or the CIF control digit and letter mapping. | European Commission — VAT identification numbers |
| Sweden | SE | ^SE\d{12}$ | SE556016068001 | Luhn checksum over the first ten digits of the organisation number. | European Commission — VAT identification numbers |
| Northern Ireland | XI | ^XI(\d{9}|\d{12})$ | XI123456789 | Format only | European Commission — VIES |
| United Kingdom | GB | ^GB(\d{9}|\d{12}|GD\d{3}|HA\d{3})$ | GB123456789 | Format only | HM Revenue & Customs — check a VAT number |
| Norway | NO | ^NO\d{9}MVA$ | NO123456789MVA | Format only | Brønnøysundregistrene — Enhetsregisteret |
| Switzerland | CH | ^CHCHE\d{9}(MWST|TVA|IVA)$ | CHCHE123456789MWST | Format only | Federal Tax Administration — UID register |
Developer reference
The pattern applied to the selected jurisdiction, with a minimal example in JavaScript and Python. The browser validator uses the same expression.
Regular expression
^DE\d{9}$JavaScript
const pattern = new RegExp("^DE\\d{9}$");
pattern.test("DE123456788");Python
import re
pattern = re.compile(r"^DE\d{9}$")
bool(pattern.match("DE123456788"))Questions
Does a matching format mean the VAT number is active?
No. A format match describes the shape of the identifier, and a matching check digit only means the digits are internally consistent. Neither establishes that a VAT registration exists. Use the live lookup for that.
Why would a check digit fail?
The most common cause is a mistyped or transposed digit. A failed check digit means the number is very likely wrong, not that the business is unregistered.
Is my number sent anywhere?
No. The validation runs entirely in your browser and nothing is submitted or stored. The page is a static form with local pattern and checksum logic.
Orientation only. A format or check digit result is not a registration confirmation, and it is not tax advice. The linked authority publication is authoritative, and only the live service reflects current registration status.
VAT.tools saves source-linked evidence for each check, with an API, MCP server and bulk workflows for repeat work.