vatnode vs Vatstack — When You Need VIES Validation, Not Subscription Monitoring
Vatstack positions itself around automation — recurring rate snapshots, subscription billing flows, scheduled re-validation as a managed product. That is useful if the project you are building is a subscription billing engine. If what you actually need is a clean REST endpoint that returns a VIES consultation number on qualified calls (when you supply your own VAT as requester), plus the local VAT name, abbreviation, currency and all four rate tiers your invoice template needs, the weight of a full automation platform gets in the way. vatnode is API-first: one call, one structured payload, a documented audit reference on qualified checks. This page contrasts the two scopes so you can pick the one that matches the system you are actually building.
Last updated: May 2026
Competitor facts on this page verified 31 July 2026 against vatstack's public documentation and pricing page (sources cited inline below); vatstack may have changed its product since.
Why this comparison matters
Vatstack and vatnode look similar on a feature checklist, but they answer different questions. Vatstack answers "how do I automate VAT lifecycle workflows"; vatnode answers "how do I validate this VAT number right now and prove it later". The comparison below is framed around that scope difference, not against the head term "vat api comparison".
Automation Platform vs API-First Validator
Vatstack's product surface area centres on subscription-style features: monitored VAT IDs that re-check on a schedule, dashboards for tracking validity over time, automation plans gated on usage. The pricing structure reflects that scope.
vatnode treats every validation as a stateless REST call that returns a self-contained record — VIES consultation number, source authority, verifiedAt timestamp and the country VAT block — and treats monitoring as an additional opt-in layer rather than the headline feature. If you only need the validation primitive, you stop at the primitive.
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, // included for all 27 countries
"parkingRate": null, // included for all 27 countries
"vatNumberFormat": "FI + 8 digits",
"vatNumberPattern": "^FI\d{8}$",
"countryVatUpdatedAt": "2026-04-16"
}
}Vatstack does not return vatName, vatAbbr, currency, companyRegistrationDate, and industryDescription, registryCode, or registryCodeName in the validation response. You maintain a separate lookup table or make a second API call.
Feature Comparison
| Feature | vatnode | Vatstack |
|---|---|---|
| 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 | ||
| Webhook: VAT_BECAME_INVALID | ||
| Webhook: COMPANY_NAME_CHANGED | ||
| Webhook: COMPANY_ADDRESS_CHANGED | ||
| VAT number format + regex pattern in response | ||
| National registry fallback + enrichment (tax authority & company registry APIs) | ||
| EU VAT validation (VIES) | ||
| Company name + address | ||
| Company registration date (national registry) | ||
| Structured legal form (GmbH, SAS, AB…) | company_type field | |
| Industry description (NACE/SNI code) | ||
| Standard + reduced rates in response | ||
| HTTPS on all plans | ||
| VAT monitoring + webhooks | From €19/mo | Paid plans |
| Audit trail (checkId + verifiedAt timestamp) | ||
| VIES consultation number (audit reference) in API response | ||
| Bulk / batch validation + CSV import-export | ||
| VAT OSS + EC Sales List reporting | ||
| Annual billing | ||
| Entry paid plan | €19/mo — 1,000 req/mo | $15/mo — 500 req/mo |
Feature rows sourced from vatnode's own API and vatstack's public documentation and pricing page, retrieved 31 July 2026. Vatstack's pricing is quoted in its native currency (USD); vatnode's in EUR — figures are not currency-adjusted. Both vendors can change pricing or features after this date; vatnode's bulk/batch endpoint was in development at the time of writing.
The consultation number itself is not unique to vatnode — vatstack, vatsense and vatapi all return one when you supply your own VAT as requester (each verified against the vendor's own docs, 31 July 2026). What differs is delivery: set your EU VAT once in Account details and every response carries the number with no code change, and with a requester configured vatnode returns either a success with a consultation number or a typed error — never a silent success that drops the audit reference.
National Registry Integrations
When VIES is unavailable or returns no company data, vatnode automatically falls back to national tax-authority and company-registry APIs for covered EU member states — coverage is growing. The source field in every vatnode response tells you which authority answered.
Vatstack has no national-registry fallback of its own — instead it queues automated re-validation against VIES and notifies you by webhook once a result lands (see below).
When the VIES Service Is Down
VIES has scheduled and unscheduled outages. vatnode and Vatstack handle that moment differently, and it's worth being precise about what each approach actually buys you.
Vatstack's documented behavior: when the underlying government service is temporarily unavailable, the API responds with HTTP 202 and valid: null, then retries the request asynchronously until VIES returns a result (vatstack.com validation docs, verified 31 July 2026). You wait for the retry and get the eventual VIES answer.
vatnode instead queries the national tax authority or company registry for the same country immediately and returns a result. This buys availability, not equivalent correctness: a national-registry confirmation shows the number is registered domestically, not that it has passed the intra-EU/cross-border VIES check, and it does not carry a VIES consultation number. If you specifically need the authoritative cross-border confirmation, Vatstack's retry-until-VIES-answers approach eventually returns it; vatnode's fallback returns a faster, differently-scoped result in the meantime.
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 Freshness Without the Automation Overhead
EU VAT rates move — Finland raised its standard rate from 24% to 25.5% in September 2024. Vatstack's public docs don't describe how often its VAT-rate data refreshes (checked 31 July 2026). vatnode pulls from the European Commission TEDB on a daily cron, so the rate on every validation call reflects the current published rate — no dashboard or separate job for you to run.
Audit Reference per Call, Not per Subscription
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.
Vatstack's response also includes an id, created/updated timestamps, and — with a requester VAT configured — its own consultation number (vatstack.com validation docs, verified 31 July 2026), so it isn't missing audit data outright. The practical difference is delivery: vatnode's requester VAT is set once in Account details and applies to every check by default, returning a consultation number or a typed error on every qualified call rather than only when a requester is remembered per request.
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.
Switch to vatnode — Free to Start, No Credit Card Required
100 free API calls per month. Drop-in REST API — migrate in minutes.