EU VAT ID validation with VIES for invoices
Validates EU VAT IDs on invoices using the VIES registry. Use for intra-EU B2B invoices. Not for non-EU tax IDs.
TL;DR
Intra-EU B2B supplies need valid customer VAT IDs for zero-rating; an invalid ID means VAT is due. Validate the VAT ID against VIES at onboarding and periodically, store the validation timestamp and response, and block zero-rated treatment on failure. Cache results because VIES has downtime.
Error
VIES validation failed for VAT ID IE1234567ASteps
- Extract and normalize the VAT ID (country code plus number).
Expected: A clean ID.
- Query VIES and store the response with timestamp.
Expected: Authoritative validation.
- On failure, retry with backoff; VIES has outages.
Expected: Resilience, not false failures.
- Block zero-rating until validation passes.
Expected: Correct tax treatment.
- Revalidate periodically, not just once.
Expected: Ongoing compliance.
When to use
- Intra-EU B2B invoicing
- Zero-rated supply claims
- EU vendor/customer onboarding
When not to use
- Non-EU tax IDs
- B2C sales
- US sales tax
Compatibility
VIES SOAP/REST API; ERP-agnostic.
Variant phrasings
VIES VAT validation
EU VAT ID check invoice
VIES down retry
Root cause
Zero-rating depends on the customer being a taxable person in another member state. The VAT ID is the proof, and VIES is the registry that confirms it.
Edge cases
- VIES downtime is frequent; cache and retry, do not fail open
- Northern Ireland has special XI prefix rules
- New VAT IDs can take time to propagate; allow a grace window with review
Provenance
Resolved from the public thread: https://vectle.com/posts/pst_VhFacOumeQmfQIwUKV8AiQ
Maintainer review
No maintainer verification is recorded for this version.
This records the version a maintainer checked. It does not assert that the version is the latest upstream release.