EU VAT ID Validation (VIES)
Last updated: 2026-02-26
EU VAT ID Validation (VIES)
Last updated: 2026-02-26 | Sources: European Commission — VIES VAT number validation, EU VAT Directive 2006/112/EC
What is VIES?
VIES (VAT Information Exchange System) is the European Commission's online service for validating VAT identification numbers of businesses registered in EU member states. It confirms whether a VAT number is currently valid and registered.
VIES validation is essential for:
- Intra-EU B2B transactions: Sellers must verify the buyer's VAT ID to apply zero-rating or reverse charge
- Compliance: Failure to validate can result in the seller being liable for VAT that should have been reverse-charged
- Due diligence: Proof of VIES verification serves as evidence of good faith in case of tax audits
How VIES Works
- Access the VIES service at
ec.europa.eu/taxation_customs/vies/ - Enter the country code and VAT number to check
- VIES queries the relevant member state's national VAT database in real-time
- Result: Valid (with optional name/address confirmation) or Invalid
Important: VIES does not store data — it queries national databases in real-time. If a member state's database is down, validation may be temporarily unavailable.
VAT ID Formats by Country
Each EU member state has a specific format for VAT identification numbers:
| Country | Prefix | Format | Example | Local term |
|---|---|---|---|---|
| NL | NL | 9 digits + B + 2 digits | NL123456789B01 | Btw-identificatienummer (Btw-id) |
| DE | DE | 9 digits | DE123456789 | Umsatzsteuer-Identifikationsnummer (USt-IdNr) |
| FR | FR | 2 check characters + 9 digits (SIREN) | FR12345678901 | Numéro de TVA intracommunautaire |
| BE | BE | 0 + 9 digits | BE0123456789 | Btw-identificatienummer / Numéro de TVA |
| ES | ES | 1 letter + 7 digits + 1 check character | ESB12345678 | NIF-IVA (Número de Identificación Fiscal) |
Detailed Format Rules
Netherlands (NL):
- Length: 12 characters after prefix (NL)
- Pattern: 9 digits + "B" + 2 check digits
- The "B" is always present; the 2 check digits are calculated using MOD 97
- Example valid: NL123456789B01
Germany (DE):
- Length: 9 digits after prefix (DE)
- Pattern: exactly 9 digits, no letters
- Issued by the Bundeszentralamt für Steuern (BZSt)
- Note: The Steuernummer (tax number) is a different number with a different format
France (FR):
- Length: 11 characters after prefix (FR)
- Pattern: 2 check characters (digits or letters, except O and I) + 9-digit SIREN number
- The check characters are calculated using MOD 97
- The old system used 2 digits; the new system allows letters
Belgium (BE):
- Length: 10 digits after prefix (BE)
- Pattern: 0 + 9 digits
- Always starts with 0
- Same as the ondernemingsnummer (enterprise number) from the KBO/BCE
- Check: last 2 digits are the complement to 97 of the first 8 digits
Spain (ES):
- Length: 9 characters after prefix (ES)
- Complex format that varies by entity type:
- Juridical entities: letter + 7 digits + check character (letter or digit)
- Individuals with DNI: 8 digits + letter
- Foreigners: X/Y/Z + 7 digits + letter
Validation Best Practices
When to Validate
- Before issuing an invoice with zero-rated intra-EU supply or reverse charge
- Before entering into a new business relationship with an EU partner
- Periodically for ongoing business relationships (VAT registrations can be revoked)
What to Store
Keep a record of each VIES validation:
- Date and time of the check
- The VAT number checked
- The result (valid/invalid)
- The reference number provided by VIES (if available)
- Name/address returned (if the member state provides this)
This serves as evidence of due diligence during tax audits.
Handling Invalid Results
If VIES returns "invalid":
- Re-check — the member state's database might have been temporarily unavailable
- Contact the business partner — they may have provided an incorrect number
- Do not apply zero-rating or reverse charge — if the VAT number cannot be validated, charge domestic VAT instead
- Document your attempts — keep records of all validation attempts
VIES API for Automated Validation
VIES provides a SOAP web service for programmatic validation:
- Endpoint: Available through the European Commission's VIES service
- Input: Country code + VAT number
- Output: Validity status, name (if available), address (if available), consultation number
- Rate limits: Requests should be reasonable; excessive calls may be throttled
Important considerations:
- VIES availability varies by member state — some databases have maintenance windows
- Name/address confirmation is not available for all member states
- VIES validates the format AND checks the national database — a correctly formatted number can still be invalid if not registered
Country-Specific Notes
Netherlands: The VIES-valid number (btw-identificatienummer, NL + 12 chars) is different from the omzetbelastingnummer (OB number) which was used before 2020 for sole proprietors. Always use the btw-id for VIES checks and on invoices.
Germany: A business may have a Steuernummer (for domestic tax purposes) but not yet have a USt-IdNr (for intra-EU purposes). The USt-IdNr must be specifically requested from the BZSt.
France: The first 2 characters after "FR" can be digits or letters (except O and I). Some older systems only accept 2-digit check codes.
Belgium: The VAT number is identical to the enterprise number. All Belgian VAT numbers start with BE0.
Spain: The format varies significantly between individuals (autónomos), domestic companies, and foreign entities. The check character algorithm is complex.
Recent Updates
- 2025-11-08: ViDA package adopted — will introduce enhanced real-time VAT number validation requirements as part of digital reporting.
- 2025-01-01: VIES updated to support the new EU-wide SME VAT exemption scheme, allowing cross-border exemption status verification.