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

SOAP / 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

REST / JSON
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

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