vatnode vs VATcomply — what you outgrow when free isn't enough
The free tier is VATcomply's entire pitch — a public, no-account VIES wrapper that returns valid/invalid plus a basic rate. For a side project or a one-off checkout flow it is a perfectly reasonable choice, and this page does not argue otherwise. The question this comparison answers is the next one: at what point does the free tier stop being enough, and what does the step up to a paid product actually unlock. According to VATcomply's public documentation as of 2026-05, there is no published uptime SLA, no monitoring layer, no webhook delivery and no VIES consultation number on the response. vatnode is what you replace it with when any of those four limits starts blocking production.
Last updated: May 2026
Why this comparison matters
This is a deliberate "free vs paid" comparison, framed around the four things a free tier cannot give you: an SLA, monitoring, webhooks and an audit reference. If your use case does not need any of those, stop here and use VATcomply.
When the free tier is the right answer
VATcomply is well suited to a low-volume, manual-checkout scenario where the cost of a missed validation is a refunded order rather than an audit finding. There is no registration, no key management, no billing relationship — just a public endpoint. That simplicity is the product.
vatnode does not try to win that scenario. Where vatnode wins is the next scenario: a production billing system where the validation result feeds an invoice, where you need to be notified if a customer's VAT registration is revoked between two invoices, and where you need a stored audit reference per check.
What one validation call returns
{
"valid": true,
"vatId": "FI26364843",
"countryCode": "FI",
"countryName": "Finland",
"companyName": "SUPERCELL OY",
"companyAddress": "JÄTKÄSAARENLAITURI 2, 00180 HELSINKI",
"companyRegistrationDate": "2010-05-06",
"companyForm": "Oy",
"industryDescription": "Publishing of computer games",
"registryCode": "2336509",
"registryCodeName": "Y-tunnus",
"source": "VIES",
"checkId": "019d2a8c-5f3a-7d12-a901-bc23de456f78",
"verifiedAt": "2026-04-16T10:00:00.000Z",
"consultationNumber": "WAPIAAAAZ27qPadm",
"countryVat": {
"vatName": "Arvonlisävero", // print on Finnish invoices
"vatAbbr": "ALV",
"currency": "EUR",
"standardRate": 25.5,
"reducedRates": [10, 14],
"superReducedRate": null,
"parkingRate": null,
"vatNumberFormat": "FI + 8 digits",
"vatNumberPattern": "^FI\d{8}$",
"countryVatUpdatedAt": "2026-04-16"
}
}Feature Comparison
| Feature | vatnode | VATcomply |
|---|---|---|
| Local VAT name in response (Mehrwertsteuer, Taxe sur la Valeur Ajoutée, Arvonlisävero…) | ||
| VAT abbreviation (MwSt, TVA, ALV…) | ||
| Super-reduced rate in response | ||
| Parking rate in response | ||
| Currency (EUR, BGN, HUF…) in response | ||
| VAT number format + regex pattern in response | ||
| National registry fallback + enrichment (tax authority & company registry APIs) | ||
| VIES consultation number (EU-issued audit reference) in API response | ||
| Webhook: VAT_BECAME_INVALID | ||
| Webhook: COMPANY_NAME_CHANGED | ||
| Webhook: COMPANY_ADDRESS_CHANGED | ||
| Audit trail (checkId + verifiedAt timestamp) | ||
| EU VAT validation (VIES) | ||
| Company name + address | ||
| Company registration date (national registry) | ||
| Legal form (GmbH, SAS, AB…) | ||
| Industry description (NACE/SNI code) | ||
| Standard + reduced rates in response | ||
| HTTPS on all plans | ||
| VAT monitoring + webhooks | From €19/mo | |
| Uptime SLA | 99.9% | Not published |
| Free tier | 100 req/mo | Fully free |
| Entry paid plan | €19/mo — 1,000 req/mo |
National registry integrations
When VIES is unavailable or returns no company data, vatnode automatically queries the national business registry. These countries are currently covered:
BZSt eVatR
PRH / YTJ
Annuaire-Entreprises
Bolagsverket
CVR
ARES
ANAF
MF White List
CBE / KBO
KVK
UR via JARS
JAR via JARS
AJPES
VATcomply queries VIES only. When the VIES node for a country is down, you get an error. The source field in every vatnode response tells you which authority answered — VIES, BZST, PRH, SIREN, and so on.
Granular webhook events
Subscribe to any VAT number and get notified the moment something changes — so your customer records and invoice settings stay accurate without manual re-checking.
VAT_BECAME_INVALIDCustomer's VAT registration lapsed — stop applying reverse charge immediately
VAT_BECAME_VALIDPreviously invalid number reactivated — update invoice settings
COMPANY_NAME_CHANGEDLegal name changed — update your customer records and invoices
COMPANY_ADDRESS_CHANGEDRegistered address changed — update your records for compliance
Rate-data freshness on a free tier
EU VAT rates move — Finland raised its standard rate from 24% to 25.5% in September 2024. VATcomply does not publish a changelog or a rate-update cadence; on a free tier there is no commercial obligation to keep one. vatnode pulls from the European Commission TEDB on a daily cron and exposes a per-country countryVatUpdatedAton every response so you can verify freshness yourself.
Compliance artefacts a free wrapper cannot return
Every vatnode response includes a checkId (UUID) and a verifiedAt timestamp. These fields are designed to be stored alongside your invoice records — giving you a documented audit trail that links every invoice to the exact validation event that authorised it.
VATcomply validates the number and returns standard and reduced rates, but provides no audit metadata. There is no checkId to attach to an invoice, no timestamp proving when the check occurred, and no indication of which authority responded. When a tax inspector requests evidence of due diligence at the time of supply, a valid/invalid boolean is not sufficient.
Tax authorities across the EU increasingly expect documented validation at the point of transaction — not retroactive checking. The checkId and verifiedAt fields, combined with vatnode's national registry fallback, mean you can demonstrate that you queried an authoritative source at the right moment — with a record to prove it.
Try vatnode free — no credit card required
100 free API calls per month. See the full response schema for yourself.