VAT number validation API (VIES) — Python & Node

A short tutorial that validates an EU VAT number against VIES from your own code. Prometiam's GET /vat/{vatNumber} checks the number against the official VIES service across the 27 EU member states plus XI (Northern Ireland), and returns the registered name and address when the number is valid.

What the guide covers

  • What VIES is — the European Commission's VAT Information Exchange System — and why a single REST call is more robust than talking to VIES SOAP directly (it separates a definitive invalid VAT from a transient member-state outage, returning 503 instead of a false "invalid").
  • Calling GET /vat/{vatNumber} with a Bearer key, e.g. GET /vat/IE6388047V, and the JSON it returns: is_valid, country_code, name, address, and request_date.
  • Copy-paste Python and Node.js examples, plus when to use VAT validation in KYB onboarding and invoicing (reverse-charge, Spain's Verifactu / SII).

Runs on the free tier (1,000 calls/month, no credit card) — it is registry-data scope, not the paid sanctions tier. VIES covers the 27 EU states + XI; Greece files under EL, and GB VAT is out of scope post-Brexit.

Read more · Get a free API key

Frequently asked questions

What is VIES?
VIES (VAT Information Exchange System) is the European Commission service that lets you check whether an EU VAT number is valid and, for most member states, returns the registered trader name and address. Prometiam wraps it in a single authenticated REST endpoint.
Which countries does the VAT endpoint cover?
The 27 EU member states plus XI (Northern Ireland). Greece files under the EL prefix, not GR. GB VAT is out of scope post-Brexit — use XI for Northern Ireland businesses.
Does an invalid response mean the VAT does not exist?
Only when is_valid is false with a normal 200 response. If VIES or a member-state register is temporarily down, the API returns 503 upstream_unavailable — that means the VAT was not checked, not that it is invalid. Retry shortly.
Is VAT validation on the free tier?
Yes. /vat is registry-data scope and works on the free tier (1,000 calls/month, no card). Only the sanctions endpoints require a paid plan.