VIES API Alternative for Developers
REST JSON interface for EU VAT validation. The official VIES endpoint uses SOAP — XML envelopes and a specialised client library in most stacks. vatnode wraps it in a clean REST JSON interface: one GET request, structured response, works with any HTTP client. National registry fallback for covered EU countries and a timestamped audit trail in every response.
Official VIES SOAP vs vatnode
Official VIES SOAP — 25 lines of XML
curl https://ec.europa.eu/taxation_customs/
tedb/ws/VatRetrievalService \
-H "Content-Type: text/xml" \
-d '<?xml version="1.0"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/
soap/envelope/"
xmlns:msg="urn:ec.europa.eu:taxud:tedb:
services:v1:IVatRetrievalService"
xmlns:types="urn:ec.europa.eu:taxud:tedb:
services:v1:IVatRetrievalService:types">
<soapenv:Header/>
<soapenv:Body>
<msg:checkVat>
<types:vatNumber>
<types:memberStateCode>
IE
</types:memberStateCode>
<types:vatNumber>
6388047V
</types:vatNumber>
</types:vatNumber>
</msg:checkVat>
</soapenv:Body>
</soapenv:Envelope>'vatnode REST — 2 lines
curl https://api.vatnode.dev/v1/vat/IE6388047V \
-H "Authorization: Bearer $VATNODE_API_KEY"
# Response — clean JSON
{
"valid": true,
"vatId": "IE6388047V",
"countryCode": "IE",
"companyName": "GOOGLE IRELAND LIMITED",
"countryVat": {
"vatName": "Value Added Tax",
"vatAbbr": "VAT",
"standardRate": 23,
"reducedRates": [9, 13.5]
}
}6 problems with the official VIES SOAP API
XML boilerplate
Every VIES request requires a full SOAP envelope with namespaced XML. A simple VAT check becomes 20+ lines of XML before you write any business logic.
WSDL complexity
You need a SOAP client, WSDL parser, and XML library just to make a call. Most modern stacks (Next.js, FastAPI, Laravel) are not built for SOAP.
Frequent downtime
Individual EU member state nodes go offline regularly for maintenance. The official API returns SOAP faults with no built-in retry logic.
No JSON response
VIES returns XML. Parsing it into usable data requires additional libraries and custom mapping code.
GR vs EL country codes
VIES uses "EL" for Greece, not the ISO 3166 "GR". Passing GR to VIES returns INVALID_INPUT. You need to handle this mapping yourself.
No VAT rates included
VIES only validates the number — it does not return VAT rates for the country. You need a separate data source for invoicing.
What vatnode adds on top
| Feature | vatnode | Official VIES |
|---|---|---|
| REST + JSON interface | ||
| Automatic retries on failure | ||
| German BZSt fallback | ||
| VAT rates included in response | ||
| Local VAT name (for invoice printing) | ||
| GR→EL country code normalization | ||
| Audit trail (checkId + timestamp) | ||
| 99.9% uptime SLA | ||
| EU VAT number validation | ||
| Company name + address |
Everything you get with vatnode
- VIES consultation number in API response — EU Commission-issued audit reference when requester VAT is configured
- REST JSON — one curl command, works with any HTTP client
- Automatic retries with exponential backoff
- German BZSt fallback when VIES DE node is down
- GR accepted as alias, normalized to EL automatically
- VAT rates for 45 European countries included in response
- Local VAT name (Mehrwertsteuer, Taxe sur la Valeur Ajoutée, Arvonlisävero…) for invoice printing
- checkId per validation — audit trail for each invoice
- 99.9% uptime SLA
Pricing
The free plan includes 100 requests/month — enough to build and test your full integration. No credit card required. Paid plans start at €19/month for 1,000 requests with monitoring and webhooks.
See full pricing details or read the quickstart guide to make your first API call.
Frequently asked questions
Does vatnode replace VIES?
No. vatnode wraps the VIES endpoint — VIES remains the authoritative EU source of VAT registrations. vatnode adds a REST JSON interface, national registry fallback, enriched company data, and an audit trail on top of what VIES provides.
Does vatnode return the VIES consultation number?
Yes. When you configure your own EU VAT number as the requester (in the dashboard or per-request via query parameters), every response includes the VIES consultation number — the EU Commission–issued audit reference. vatnode returns the EU Commission consultation number in every qualified validation response.
What happens when VIES is unavailable?
vatnode automatically falls back to national tax authority and company registry APIs for covered EU countries. If the fallback also fails, the API returns a VIES_UNAVAILABLE error so your application can handle it explicitly — for example, by queuing the check for retry rather than blocking checkout.
Replace your VIES SOAP integration today
Free plan, no credit card, up and running in 5 minutes. The REST interface works with any language — curl, JavaScript, Python, PHP, Go, Ruby.