Sage 50, Sage 200, Sage 300, Sage 1000, Access Dimensions — or anything else that can make an HTTPS call.
An ERP will happily store a customer VAT number as free text and zero-rate every intra-EU invoice it produces. The problem surfaces years later, during an audit: the inspector doesn't ask whether the number is valid, they ask you to prove it was valid on the date of supply. A tick box in a customer record proves nothing. The artefact that does is the VIES consultation number — a reference the European Commission issues when you identify yourself as the requester, and the only machine-generated proof that the check happened.
So the integration has three jobs, not one: validate, capture the consultation number, and store both against the transaction.
POST https://vatnode.com/v1/validate
x-api-key: YOUR_API_KEY
Content-Type: application/json
{
"vat_number": "IE6388047V",
"requester_vat": "YOUR_OWN_VAT_NUMBER"
}
{
"valid": true,
"vatNumber": "IE6388047V",
"countryCode": "IE",
"name": "GOOGLE IRELAND LIMITED",
"address": "3RD FLOOR, GORDON HOUSE, BARROW STREET, DUBLIN 4",
"consultationNumber": "WAPIAAAAW1234567",
"timestamp": "2026-09-17T09:14:02.000Z"
}
requester_vat must be your own company's real, currently valid VAT number — VIES only issues a consultation number to a requester it can identify. Store consultationNumber and timestamp on the invoice or customer record; that pair is your audit evidence.
No scripting engine inside the product, so the practical routes are: the Sage 50 SDK / ODBC layer from a small external service that watches new customers or invoices, or a scheduled job that reads unvalidated VAT numbers, calls the endpoint and writes the consultation number back into a custom field or an analysis field. Teams commonly run this nightly rather than at entry time.
Sage 200 exposes a proper API surface (Sage 200 Professional's SDK, or the cloud REST API). A small integration service calls the endpoint on customer create/update and stores the response in a user-defined field. If you are already using a middleware layer for other integrations, add it there rather than in the ERP itself.
Sage 300 supports custom screens, macros and the .NET/Web API layer. The pattern that survives upgrades best is an external service against the Web API rather than customising the screen directly — validate on A/R customer save, write back to an optional field.
Typically integrated through its own middleware or an enterprise service bus. Treat Vatnode as one more REST service the bus calls during customer onboarding, and persist the consultation number with the customer master record.
Dimensions is usually extended through its API/toolkit or through scheduled SQL-side jobs. Same shape as the others: pick the moment a VAT number is entered or changed, call the endpoint, store the consultation number and timestamp alongside the customer or transaction.
Dynamics, NetSuite, Odoo, Exact, Xero, a bespoke system, a spreadsheet with a script — the endpoint doesn't care. We publish dependency-free clients for Node, Python and PHP, plus an MCP server if your team works through AI tooling. Coverage is the EU-27 plus Norway and Switzerland, which matters if your customer file crosses the Swiss border.
VIES relays to 27 national databases, and individual countries go offline regularly — often around filing deadlines, exactly when finance teams batch-validate. VIES reports those outages as isValid: false, identical to a genuinely invalid number. An ERP integration that trusts that boolean will silently start rejecting real customers, or flag good VAT numbers as bad in a nightly batch, for as long as the outage lasts.
Vatnode reads the underlying status code and returns {"error":"vies_unavailable","retryable":true} instead — and for France, Poland, Finland, Czechia and Denmark it re-checks against that country's own official register first, clearly flagged. Your batch job can then retry rather than corrupt your customer master. See VIES error codes explained and the live status page.
Re-validating your whole customer file periodically is sensible — VAT registrations get cancelled without telling you. Serialise the calls (VIES rate-limits concurrency per member state), handle the outage error rather than writing "invalid", and keep every consultation number: an annual re-validation run with stored evidence is a strong position in an audit.
Free key, 100 validations a month, no card. Run one of your real customer VAT numbers through it and look at what comes back — that's the fastest way to judge whether the evidence trail is what your auditor wants.
Get your free API key Read the docs →