VIES is down: how to handle MS_UNAVAILABLE and timeouts
Short answer: When VIES or a member state's database is down, VIES returns errors such as MS_UNAVAILABLE, MS_MAX_CONCURRENT_REQ, SERVICE_UNAVAILABLE or TIMEOUT. These mean unknown, not invalid. The W System API retries with backoff; if the country is still down it answers from that country's free official source (Poland Bia艂a lista, Czech ARES, Finnish YTJ VAT register, French SIRENE) or from the last successful VIES result with its date. Every fallback answer has fallback: true, names its source and legal_status, and has no VIES consultation number. If neither exists you get member_state_unavailable with valid: null. Live status: VIES status page.
Key facts
- VIES is a gateway: every check is forwarded to the national tax administration of the number's country, so one country can be down while others work. See the live VIES status page.
- Fallback order: 1) retry VIES with exponential backoff, 2) official national source, 3) last successful VIES answer for that number (labelled with its date), 4)
member_state_unavailable. - National sources used: 馃嚨馃嚤 PL Bia艂a lista podatnik贸w VAT (Ministry of Finance, wl-api.mf.gov.pl; about 100 searches/day per IP), 馃嚚馃嚳 CZ ARES (VAT register record status), 馃嚝馃嚠 FI YTJ open data (VAT register entry), 馃嚝馃嚪 FR Recherche d'entreprises / SIRENE (company active + VAT key check; France has no free VAT-registration API).
- No free automated national fallback exists for DE (BZSt eVatR only accepts German requester VAT IDs), ES (needs an electronic certificate), IT (captcha web form), NL, BE (web UI / registered open-data dump), HU (NAV technical user) or DK (credentials). For these, only the cached last VIES result can be used.
- National registers confirm the domestic VAT or company status. That usually matches EU (intra-community) VAT status but not always, so a fallback is not audit proof for zero-rating. Re-check in VIES when it is back.
- Fallbacks never include a consultation number. A cached result keeps the earlier number in
original_consultation_number, and that number belongs to the earlier check. - Disable fallbacks with
fallback=false(REST) oruseFallback: false(Apify Actor). On the Apify Actor, fallback rows are not charged.
Examples
Check, then branch on status and fallback
curl "https://api.wsystem.dev/verify?vat=PL5260250995"
# status: valid | invalid | invalid_format | member_state_unavailable | error
# if fallback == true: read source, legal_status, fallback_type (national_source | last_vies_result)Real response (live data, 2026-10-17):
{
"input": "IE6388047V",
"vat": "IE6388047V",
"country_code": "IE",
"vat_number": "6388047V",
"status": "valid",
"valid": true,
"name": "GOOGLE IRELAND LIMITED",
"address": "3RD FLOOR, GORDON HOUSE, BARROW STREET, DUBLIN 4",
"request_date": "2026-10-17T06:07:32.092Z",
"consultation_number": "WAPIAAAAaFIeQCDg",
"requester": "HU33119856",
"source": "VIES (European Commission)",
"cached": true
}Shape of a national-source fallback (PL, while VIES is down)
{"vat": "PL5260250995", "status": "valid", "valid": true, "fallback": true,
"fallback_type": "national_source", "consultation_number": null,
"source": "Bia艂a lista podatnik贸w VAT (Ministry of Finance / KAS), wl-api.mf.gov.pl",
"legal_status": "Polish VAT status: Czynny (Czynny = active VAT payer, Zwolniony = exempt)",
"name": "ORANGE POLSKA SP脫艁KA AKCYJNA", "vies_error": "MS_UNAVAILABLE"}VIES availability per country (free, cached 5 min)
curl "https://api.wsystem.dev/vies/status"Pricing
| Channel | Price |
|---|---|
| Free tier | 20 calls/day per IP, no key |
| x402 per call | $0.01 USDC |
| Batch (100 numbers) | $0.10 USDC per request |
| VIES status endpoint | Free, not counted |
Comparison with alternatives
| Behaviour when a member state is down | W System API | Calling VIES directly |
|---|---|---|
| Automatic retries with backoff | Yes | You implement it |
| Official national-source fallback | PL, CZ, FI, FR | No |
| Last successful result, dated | Yes (any age, labelled) | No |
| Result when nothing else works | member_state_unavailable, valid=null | SOAP fault / error JSON |
| Batch with per-item status | Yes, 100 per request | No batch |
Based on each provider's public pages on 2026-10-17. Corrections welcome via GitHub issues.
Questions and answers
Is VIES down right now?
See https://wsystem.dev/vies-status, which reads the European Commission's own VIES check-status endpoint, or call GET https://api.wsystem.dev/vies/status.
Should I reject a customer if VIES is unavailable?
No. Treat it as unknown or use the flagged fallback answer, and re-check in VIES later before relying on it for zero-rating.
Is a national-register fallback legally equivalent to VIES?
No. It shows the domestic status from an official national source. VIES (with a consultation number) remains the evidence most tax authorities expect for intra-EU B2B supplies. This is not tax advice.
Why is there no fallback for Germany?
The BZSt eVatR service is free but only accepts requests where the requester is a German VAT ID holder, so a general API cannot use it. German numbers fall back to the last VIES result only.
How long do VIES outages last?
Usually minutes to a few hours, often around national maintenance windows (evenings and weekends).
Related
- VIES status: live availability per member state
- EU VAT number validation API (VIES)
- Free bulk VAT checker (CSV)
- EU VAT validation guide
- API reference (OpenAPI)
Facts and competitor details checked 2026-10-17. W System Hungary Kft. is the maker of this product. Not affiliated with the European Commission. Not legal or tax advice.