VIES timeouts
A VIES timeout means no answer arrived before your deadline. The request may still have been processed upstream, which is what makes timeouts trickier than explicit errors.
Good news: no member state is reporting TIMEOUT right now. See the live board →
What it means
A timeout is not something VIES returns. It is the absence of any answer inside the time you were willing to wait, and it happens when a member state's database is slow rather than down, when VIES is queuing behind a backlog, or when the network path is having a bad day.
Timeouts are harder to handle well than explicit errors, for one reason: you do not know whether the request was processed. A lookup is a read, so retrying is perfectly safe β but you cannot infer a single thing about the VAT number from the silence.
Two traps to watch for. First, VIES returns HTTP 200 even for its own error envelopes β {"actionSucceed": false, "errorWrappers":[{"error":"..."}]} β so code that only checks the status code will read a member-state failure as a success and then trip over a missing valid field. Second, default HTTP client timeouts are usually far too generous. A 60-second hang is worse for your users than a fast, honest "unknown".
Which member states return TIMEOUT most
| Member state | Occurrences (7d) | Share |
|---|---|---|
| Denmark DK | 3 | 100% |
3 occurrences of TIMEOUT observed across all member states in the last 7 days, from our own 5-minute checks. Monitoring began 2026-08-09.
What to do about it
- Set an explicit timeout of about 10 seconds. A healthy VIES lookup normally comes back in well under a second, and a slow member state in a few. Past ten seconds, waiting rarely pays off.
- Always parse the body β never just the status code. Check for
actionSucceed === falseand readerrorWrappers[0].errorbefore you go anywhere nearvalid. - Retry idempotently with backoff. Validation is a read, so retrying cannot break anything.
- Fail to "unknown", never to "invalid". Silence is not a negative result.
- Do the work asynchronously wherever you can, so a slow member state never blocks a user-facing request.
Frequently asked questions
What timeout should I use for VIES?
Around 10 seconds is the sweet spot. Most successful lookups return in under a second, and slow member states in a few. Waiting longer mostly turns a fast unknown into a slow unknown.
Does a VIES timeout mean the VAT number is invalid?
No β a timeout carries no information about the number whatsoever. Record it as unknown and retry.
Why does VIES return HTTP 200 when it fails?
Annoying, but consistent: the REST API reports application-level failures inside the response body, as {"actionSucceed": false, "errorWrappers": [{"error": "..."}]}, while still returning a 200 status. You have to parse the body to spot failures.
Is it safe to retry a VIES request after a timeout?
Yes, completely safe. A VAT validation is a read-only lookup, so a retry cannot cause a duplicate side effect. Use exponential backoff with jitter.
Hit a different error?
MS_UNAVAILABLEβ MS_UNAVAILABLE means the national VAT database behind VIES is not answering.MS_MAX_CONCURRENT_REQβ MS_MAX_CONCURRENT_REQ means a member state is already handling as many simultaneous VIES lookups as it will take.GLOBAL_MAX_CONCURRENT_REQβ GLOBAL_MAX_CONCURRENT_REQ means the VIES front end β not one member state β is handling as many simultaneous requests as it will take.
← Live VIES status for all 28 member states
Get an alert when a VIES endpoint goes down
We store your address, the country code and a timestamp β nothing else. To be straight with you: Alerts start shortly, but they are not sending yet. When they do, we will only email you about VIES availability. No newsletter, ever.
Building EU invoicing?
We also make Attestwire, an EN 16931 validation API. Post an invoice as JSON and get back the rule it breaks and how to fix it. Free tier, 100 docs/month, no card needed.
api.attestwire.com/docs Β· check.attestwire.com β our free French e-invoicing readiness checker.