PRACTICAL GUIDE
VIES batch CSV: keep unavailable results separate from invalid numbers.
A successful HTTP request is not the same as a completed VAT answer. VIES can report a member-state outage or concurrency limit even when transport returned HTTP 200.
Three states, with different next steps.
Valid and invalid are completed authority answers about the requested VAT identifier. Unresolved means that the service did not obtain a usable answer. It is not a negative VAT decision.
| Source row | Input | Recorded result | Reference |
|---|---|---|---|
| 2 | DE100 | valid | Not returned |
| 3Same lookup as row 2 | DE 100 | valid | Not returned |
| 4 | DE200 | invalid | Not returned |
| 5 | DE301 | unresolvedMS_UNAVAILABLE | Not returned |
| 6 | DE600 | unresolvedMS_MAX_CONCURRENT_REQ | Not returned |
Keep the handoff reviewable.
Preserve the original row and the normalized identifier separately. A duplicate row should point to the same lookup rather than disappear. Keep the authority’s request date and your observed UTC time separate; clocks and source formats can differ.
Preserve a consultation reference only when VIES actually returns it. Our official synthetic checks returned empty references even when requester information was supplied. Do not manufacture a reference or turn an integrity hash into proof of authority origin.
Retry only the failures that can benefit.
Transient availability and concurrency errors may be retried after a delay. This workflow caps attempts at three, with backoff. Invalid requester information, blocked access, response mismatches and ambiguous duplicate JSON fields require review instead. Keep the workspace open or return to resume; this release does not promise unattended processing.
Choose the free service when it fits.
The official VIES service provides free JSON checks and a batch interface. Read the official VAT-checking explanation for its limits. Only national authorities can correct their records. This tool cannot repair registration or determine the tax treatment of a supply.