Developer Guide

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 Free

Frequently 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.