What Is VIES? Validating EU VAT Numbers
What the VIES system does and doesn't confirm, why validation is a substantive condition for zero-rating, how to handle outages, and what evidence to keep.
VIES — the VAT Information Exchange System — is the European Commission's service for checking whether an EU VAT number is valid. You give it a country code and a number; it tells you whether that number is currently registered for intra-Community trade, and often returns the registered name and address.
It is not a database the Commission maintains. VIES is a relay: each query is forwarded in real time to the national tax administration that issued the number, and the answer comes from them. That architecture explains almost everything about how VIES behaves in practice, including its outages.
Why validation matters
Since the 2020 EU "quick fixes", the customer's valid VAT number is a substantive condition for zero-rating an intra-Community supply — not a formality to tidy up later.
The consequence is direct: sell goods to an EU business whose VAT number turns out to be invalid, and the supply becomes taxable at your domestic rate. You owe that VAT, out of your own margin, on a sale where you charged none. The customer will not accept a retrospective charge, and by the time an audit finds it the relationship may be years old.
The same reasoning applies to reverse charge on services: the mechanism depends on the customer being a taxable person, and their VAT number is the evidence.
What VIES confirms — and what it doesn't
It confirms: the number is valid at the moment of the query, and that it is registered for intra-Community transactions.
It does not confirm:
- That the person you are dealing with is the business that holds the number. VIES will not tell you the invoice request came from an impostor.
- That the number was valid in the past, or will be tomorrow. It is a point-in-time answer.
- Anything about creditworthiness or trading legitimacy.
- Consistent name and address data — some member states return the trader's details, others return nothing at all, by national choice.
A validation is therefore a necessary check, not a sufficient one. A name mismatch between VIES and your partner record is worth a human look before you zero-rate an invoice: it may be a trading name, a group restructuring, or the wrong company entirely.
The operational problem: VIES goes down
Because queries are relayed to national systems, a single member state's outage makes numbers from that country unverifiable while everything else works. Scheduled maintenance is published, unscheduled outages are not.
Which creates a genuine design question: what do you do when a customer wants to buy and VIES is not answering?
Blocking the sale is the naive answer, and it is wrong. It makes an external service's uptime a dependency of your revenue, and the tax rules do not require an instantaneous check — they require that you took reasonable steps and can evidence them. The workable pattern is:
- Cache validations with a sensible lifetime rather than re-querying on every transaction.
- Re-check before it matters — when issuing an invoice against a stale result.
- Never block the sale on an outage. Record that the service was unavailable.
- Route the uncertain cases to a human queue — invalid results, service failures, name mismatches.
- Store the response, not just the verdict, so you can prove what you were told and when.
That last point is what turns a check into evidence. "We validated it" is worth much less at audit than a stored response with a timestamp and the request identifier the service returned.
How Nordlet implements it
Validation runs automatically on partner writes — creating a partner with a VAT code, or changing one, triggers a check — and can be called directly with POST /v1/partners/validate-vat, by VAT code or by partner ID.
The result is cached on the partner with its timestamp and the full VIES response payload. Results older than 30 days are automatically re-validated before an invoice is issued, so the evidence frozen onto the invoice is fresh rather than months old.
Nothing blocks. An invalid number, an unreachable service or a name that doesn't match the registered trader all open an item in a VAT review queue instead of stopping the sale:
invalid— VIES says the number is not validservice_error— VIES was unreachable or erroredname_mismatch— VIES returned a trader name with no meaningful overlap with your partner record, after stripping legal forms and diacritics
Reviews are resolved with a decision and an optional note — confirmed valid, confirmed invalid, or dismissed — through /v1/partners/vat-reviews/resolve, and a later passing check closes an open review automatically. vat_review.opened and vat_review.resolved webhook events let a platform react rather than poll.
Finally, each issued invoice freezes a VAT evidence snapshot: the VIES response payload, its timestamp, the request identifier, the rate-table version and the location signals used. That snapshot is what lets a decision made two years ago be replayed with the inputs that existed then — which is the actual audit question.
FAQ
What is VIES?
The EU VAT Information Exchange System, an online service that checks whether an EU VAT number is valid. It relays each query to the national tax administration that issued the number and returns their answer, sometimes with the registered name and address.
Is checking a VAT number in VIES legally required?
For zero-rating intra-Community supplies, a valid customer VAT number is a substantive condition, so checking is how you establish it. Member states expect reasonable verification and evidence of it; failing to check leaves you liable for VAT you never charged.
What does it mean if VIES returns no name or address?
That the issuing member state chose not to disclose those details — several do not. A valid response without a name is still a valid response; it simply gives you less to cross-check against.
What should I do if VIES is unavailable?
Do not block the sale. Record the failure, proceed on the evidence you have, and re-check once the service returns. Route the case to a review queue so a human confirms it rather than letting it disappear.
How often should VAT numbers be re-validated?
At least before relying on the number for a zero-rated supply. A common approach is to cache validations for around 30 days and re-check when issuing an invoice against a stale result — customers do deregister, and the check that matters is the one closest to the supply.