VIES Error Codes Reference
Understanding and handling EU VAT validation errors
The EU's VIES (VAT Information Exchange System) API returns specific error codes when VAT validation fails. These errors can be frustrating because many are outside your control. They're caused by rate limits, service outages, and infrastructure issues on the EU side.
This reference explains each error code, when it occurs, and how to handle it in your application.
Rate Limit Errors
These errors occur when the VIES system is overloaded. They're common during business hours, especially for high-traffic member states like Germany.
| Error Code | Description |
|---|---|
| MS_MAX_CONCURRENT_REQ | Member state rate limit reached |
| GLOBAL_MAX_CONCURRENT_REQ | Global VIES rate limit reached |
| MS_MAX_CONCURRENT_REQ_TIME | Member state time-based rate limit |
| GLOBAL_MAX_CONCURRENT_REQ_TIME | Global time-based rate limit |
Service Availability Errors
These errors occur when VIES or a member state's national system is down or unresponsive.
| Error Code | Description |
|---|---|
| MS_UNAVAILABLE | Member state service is down |
| SERVICE_UNAVAILABLE | VIES service unavailable |
| TIMEOUT | Request timed out |
Input Validation Errors
These errors occur when the request contains invalid data.
| Error Code | Description |
|---|---|
| INVALID_INPUT | Invalid country code or VAT number format |
| INVALID_REQUESTER_INFO | Invalid requester information |
Access Errors
These errors occur when access is blocked.
| Error Code | Description |
|---|---|
| VAT_BLOCKED | VAT number is blocked |
| IP_BLOCKED | IP address is blocked |
Technical Errors
These errors indicate unexpected server-side issues.
| Error Code | Description |
|---|---|
| IO_ERROR | Error parsing response |
| TECHNICAL_ERROR | Unexpected processing error |
Most VIES errors are outside your control
Rate limits and service outages are infrastructure issues on the EU side. No amount of code changes will prevent them. The solution is to use a VAT validation service that handles retries, fallbacks, and alternative data sources automatically.
Stop fighting VIES errors
VatDB validates VAT numbers using multiple official data sources, including EU and national databases. When one source fails, we automatically fall back to another. Built-in retries, rate limit handling, and webhooks to notify you when validation completes mean you get reliable results without the headaches.
Try VatDB FreeFrequently Asked Questions
Why does VIES return so many errors?
VIES is a distributed system connecting 27 EU member states, each with their own infrastructure. Rate limits are strict, maintenance windows are common, and some countries have historically unreliable connections. These are systemic issues that affect everyone using the VIES API.
How can I reduce VIES errors in my application?
Implement exponential backoff for retries, cache successful validations, and validate during off-peak hours when possible. For production applications, consider using a VAT validation service like VatDB that handles these issues automatically.
What's the difference between MS_MAX_CONCURRENT_REQ and GLOBAL_MAX_CONCURRENT_REQ?
MS_MAX_CONCURRENT_REQ means the specific member state (e.g., Germany) has hit its rate limit. GLOBAL_MAX_CONCURRENT_REQ means the entire VIES system is overloaded. Both require waiting and retrying.
How does VatDB handle VIES errors?
VatDB uses multiple official data sources beyond just VIES, including national databases. When VIES returns an error, we automatically try alternative sources. We also implement intelligent retry logic with exponential backoff, and can notify you via webhooks when validation completes.