Use VAT Number Validator

Enter your data below to use the VAT Number Validator

📌 Try these examples:
RESULT

Last updated

What Is a VAT Number?

A VAT number is a unique identifier assigned to businesses registered for Value Added Tax. In the EU, valid VAT numbers are required on B2B invoices to qualify for VAT exemption. The VAT Number Validator checks format, check digits, and country-specific rules for EU countries, the UK, Norway, and Switzerland.

EU VAT Number Formats by Country

Country         Code  Format              Example
-----------     ----  ------              -------
Austria         AT    ATU + 8 digits      ATU12345678
Belgium         BE    BE + 10 digits      BE0123456789
Bulgaria        BG    BG + 9-10 digits    BG123456789
Croatia         HR    HR + 11 digits      HR12345678901
Cyprus          CY    CY + 8 digits + L   CY12345678L
Czech Republic  CZ    CZ + 8-10 digits    CZ12345678
Denmark         DK    DK + 8 digits       DK12345678
Estonia         EE    EE + 9 digits       EE123456789
Finland         FI    FI + 8 digits       FI12345678
France          FR    FR + 2 chars + 9 d  FR12345678901
Germany         DE    DE + 9 digits       DE123456789
Greece          EL    EL + 9 digits       EL123456789
Hungary         HU    HU + 8 digits       HU12345678
Ireland         IE    IE + 7 digits + 1-2 IE1234567X
Italy           IT    IT + 11 digits      IT12345678901
Latvia          LV    LV + 11 digits      LV12345678901
Lithuania       LT    LT + 9 or 12 digits LT123456789
Luxembourg      LU    LU + 8 digits       LU12345678
Malta           MT    MT + 8 digits       MT12345678
Netherlands     NL    NL + 9 digits + B + 2 NL123456789B01
Poland          PL    PL + 10 digits      PL1234567890
Portugal        PT    PT + 9 digits       PT123456789
Romania         RO    RO + 2-10 digits    RO12345678
Slovakia        SK    SK + 10 digits      SK1234567890
Slovenia        SI    SI + 8 digits       SI12345678
Spain           ES    ES + letter/digit + 7 + letter/digit ES12345678A
Sweden          SE    SE + 12 digits      SE123456789001
UK (post-Brexit) GB   GB + 9 or 12 digits GB123456789

Validating a German VAT Number

Input: DE123456789

Validation steps:
  1. Country code: DE (Germany) ✓
  2. Length: 11 characters (DE + 9 digits) ✓
  3. Format: DE followed by 9 digits ✓
  4. Check digit algorithm (Luhn-style):
     Digits: 1 2 3 4 5 6 7 8 9
     Expected check digit: 9
     Actual check digit:   9 ✓

Result: VALID ✓
  Country: Germany
  Format: DE + 9 digits

Validating a French VAT Number

Input: FR12345678901

Validation steps:
  1. Country code: FR (France) ✓
  2. Length: 13 characters (FR + 2 + 9) ✓
  3. Format: FR + 2 alphanumeric + 9 digits ✓
  4. SIREN check: last 9 digits must be valid SIREN number ✓

Result: VALID ✓
  Country: France
  Key: 12 (first 2 chars after FR)
  SIREN: 345678901

Invalid VAT Number Examples

Input: DE12345678
  ✗ Invalid: Too short. German VAT numbers have 9 digits after DE (got 8).

Input: DE12345678A
  ✗ Invalid: Invalid character 'A'. German VAT numbers contain only digits.

Input: XX123456789
  ✗ Invalid: Unknown country code 'XX'. Not a recognized EU VAT prefix.

Input: GB123456789
  ✓ Valid: UK VAT number (post-Brexit format)
  Note: UK is no longer in EU VIES system — verify via HMRC separately.

Input: DE000000000
  ✗ Invalid: Check digit mismatch. Expected 7, got 0.
  Likely a transcription error.

Batch VAT Number Validation

Input (customer database export):
DE123456789
FR12345678901
NL123456789B01
IT12345678901
GB123456789
DE000000000
INVALID_VAT

Results:
DE123456789      ✓ Valid  — Germany
FR12345678901    ✓ Valid  — France
NL123456789B01   ✓ Valid  — Netherlands
IT12345678901    ✓ Valid  — Italy
GB123456789      ✓ Valid  — United Kingdom
DE000000000      ✗ Invalid — Check digit error
INVALID_VAT      ✗ Invalid — Unrecognized format

Summary: 5 valid, 2 invalid

VAT Number Validation in Code

// JavaScript — basic format validation
const vatPatterns = {
  DE: /^DE\d{9}$/,
  FR: /^FR[A-Z0-9]{2}\d{9}$/,
  GB: /^GB(\d{9}|\d{12})$/,
  NL: /^NL\d{9}B\d{2}$/,
  IT: /^IT\d{11}$/,
};

function validateVATFormat(vatNumber) {
  const country = vatNumber.substring(0, 2).toUpperCase();
  const pattern = vatPatterns[country];
  
  if (!pattern) {
    return { valid: false, error: `Unknown country code: ${country}` };
  }
  
  const normalized = vatNumber.replace(/[\s.-]/g, '').toUpperCase();
  return {
    valid: pattern.test(normalized),
    country,
    normalized
  };
}

validateVATFormat('DE 123 456 789');
// { valid: true, country: 'DE', normalized: 'DE123456789' }

EU VIES Lookup

Beyond format validation, EU VAT numbers can be verified
against the VIES (VAT Information Exchange System) database:

VIES check for DE123456789:
  Status:       Active ✓
  Company name: Example GmbH
  Address:      Musterstraße 1, 10115 Berlin, Germany
  Valid from:   2018-03-15

VIES check for DE999999999:
  Status:       Not found ✗
  This number is not registered in the VIES database.

Note: VIES verification confirms the number is currently active,
not just correctly formatted. Use for B2B invoice zero-rating.

When to Validate VAT Numbers

Common Input Variations (All Accepted)

DE123456789       — no spaces (canonical)
DE 123 456 789    — spaces between groups
DE-123-456-789    — hyphens
de123456789       — lowercase (normalized to uppercase)
DE.123.456.789    — dots

Frequently Asked Questions

Simply enter your data, click the process button, and get instant results. All processing happens in your browser for maximum privacy and security.

Yes! VAT Number Validator is completely free to use with no registration required. All processing is done client-side in your browser.

Absolutely! All processing happens locally in your browser. Your data never leaves your device, ensuring complete privacy and security.