EU VIES + UK HMRC

Proof you checked, years after you checked.

Validate a VAT number, and VATWarden keeps the registry's own consultation ID on file for seven years — then re-checks that customer every night and calls your webhook the moment they deregister.

14 days free · no charge during trial · from $19/month

Evidence record archived · 7 years
VAT
DE 811569869
Result
valid
Name
Bayerische Motoren Werke AG
Consultation
WAPIAAAAY5J8kHRD
Checked
2026-08-06 09:14:07 UTC
Registry
VIES
The consultation ID is the registry's own reference for this exact lookup — the number a tax authority asks for.

How it works

Three verbs, one durable record

Validate

One POST. We pre-check the format, call VIES or HMRC, retry with backoff, and fall back to a recent cached answer — flagged stale — when the registry is down.

Remember

Every answer is appended to an archive that is never edited or deleted: the verbatim registry response, the consultation ID, the timestamp. Exportable as CSV, always.

Watch

Save the numbers you invoice. We re-check them nightly, within the registries' rate limits, and fire a signed webhook when one flips from valid to invalid.

Deregistration

The failure nobody watches for

Validating at signup is easy, and everyone does it. The expensive case is the customer who was valid when you onboarded them and quietly deregistered eighteen months later — while you kept zero-rating every invoice.

Stripe validates a tax ID once and, by its own documentation, never checks it again. Neither do most VAT APIs. VATWarden checks every saved number every night.

Monitored customers nightly re-check
NL 823100100B01
Kessler Logistiek
valid
IT 12345678903
Rossi Forniture Srl
deregistered
IE 6388047V
Google Ireland Ltd
valid
One customer deregistered overnight. Your endpoint was told at 02:41.

Your endpoint, 02:41

You find out before your accountant does

A status change fires a webhook signed with HMAC-SHA256, retried at one minute, five minutes, thirty minutes, two hours and twelve hours until your server acknowledges it.

No email notifications. Webhooks and the dashboard only — so alerts land in your systems, not someone's inbox.

POST https://your-app.example/hooks/vat
{
  "id": "evt_0mkq9r2h71x4c8t2w6p3n5d1",
  "type": "monitored.status_changed",
  "data": {
    "country_code": "IT",
    "vat_number": "12345678903",
    "label": "Rossi Forniture Srl",
    "old_status": "valid",
    "new_status": "invalid"
  }
}

The API

One request, one durable answer

Request
curl -s https://vatwarden.com/v1/validate \
  -H "Authorization: Bearer vw_live_..." \
  -H "Content-Type: application/json" \
  -d '{"country_code": "DE", "vat_number": "811569869"}'
Response
{
  "id": "val_0mkq9r2h71x4c8t2w6p3n5d1",
  "country_code": "DE",
  "vat_number": "811569869",
  "valid": true,
  "name": "Bayerische Motoren Werke Aktiengesellschaft",
  "address": "Petuelring 130\n80809 München",
  "consultation_id": "WAPIAAAAY5J8kHRD",
  "checked_at": "2026-08-06T09:14:07Z",
  "source": "vies",
  "stale": false,
  "error_code": null
}

Outage-proof

VIES goes down on a schedule — Germany overnight, the Netherlands most weekends. We retry, then serve the freshest confirmed answer, clearly marked stale: true.

Errors are not verdicts

A registry timeout never becomes “invalid”. Downtime can't trigger a false deregistration alert, and it never consumes your quota.

Honest metering

Monitoring re-checks are free. Trials stop at the quota instead of surprise-billing you. No per-seat pricing, no annual lock-in.

Why it matters

The question arrives years later

When you sell B2B across an EU border you invoice without VAT, and the buyer self-accounts under the reverse-charge mechanism. That zero-rating rests on the buyer's VAT number being valid at the time of supply — and an auditor can ask you to show that you checked.

VIES keeps no history for you. A number that was valid when you invoiced may be gone by the time anyone asks, and the public registry holds no record of what you saw. VATWarden keeps the registry's exact answer, so the proof exists when the question arrives.

This describes how the product works; it is not tax or legal advice, and a valid check is one element of evidence rather than a guarantee. Your accountant has the final word on your invoicing.

Exportevidence.csv
VATResultConsultationChecked
DE811569869validWAPIAAAAY5J8kHRD2026-08-06
FR40303265045validWAPIAAAAY5J1pQ2M2026-08-05
IT12345678903invalidWAPIAAAAY4X7dR9L2026-08-05
Your archive stays exportable even after you cancel.

Start validating in minutes

One API key, one POST request, evidence from the first call.