VAT ID validation API

Check it, and be able to prove it.

VerifyVAT queries your business partners’ VAT IDs live against VIES and stores the official consultation number with every check, so you can show later that, and when, you validated.

New accounts start with 1,000 requests per month.

Validation recordSample
Request code
VV-3F9A1C2E
VAT ID checked
DE123456789
Result
valid
Company (per VIES)
Muster GmbH
Requester
LU32633157
Timestamp
2026-10-11 01:14:09

Consultation number (VIES)

WAPIAAAAZ4Kq8vDn

Stored in your account, available in the history and as CSV.

proven
27 + XI
EU member states and Northern Ireland, covered through VIES
VV-…
A unique request code for every single check
Proof
The official consultation number is stored with every request
CSV
Full history as an export for bookkeeping and audits

01Why validate at all?

A valid VAT ID often decides the tax treatment

If you sell to businesses in other EU countries you need to know who you are dealing with. The partner’s VAT ID is the key identifier, and its validity can change over time.

Tax-exempt deliveries

Intra-community supplies to businesses in another EU country are generally only exempt if the customer uses a valid VAT ID. If you cannot show that, you risk a tax reassessment.

Reverse charge on services

For many B2B services the recipient accounts for the tax. A check shows that your customer is registered as a business before you invoice without VAT.

Evidence in a tax audit

The tax office may later ask whether and when you checked. With request code, timestamp and consultation number you have an answer you do not have to reconstruct.

This is not tax advice. Which evidence you need in your case is something to clarify with your tax advisor.

02Simple or qualified

The difference between “valid” and “proven”

VIES knows two kinds of requests. For documentation, the second one counts.

Simple request

You only send your partner’s number. VIES answers whether it is valid. There is no identifier for the request, so all you have is your own memory or a screenshot.

GET /check?vat_number=DE123456789
→ { "valid": true }
This is what VerifyVAT does on every request

Request with requester

You also provide your own VAT ID. VIES then issues a consultation number for exactly this request. VerifyVAT sends your VAT ID automatically and stores the number.

GET /check?vat_number=DE123456789
→ { "valid": true,
    "consultation_number": "WAPIAAAAZ4Kq8vDn" }

03

How it works

From sign-up to your first check it takes a few minutes.

  1. 1

    Create an account

    Register with your company details, including your own VAT ID. It is sent to VIES as the requester on every check; this is the only way VIES issues a proof.

  2. 2

    Create a key

    Generate one API key per application in the dashboard, for example shop or ERP. You can revoke a key at any time.

  3. 3

    Send requests

    Send your customer’s VAT ID to the API. The answer, the consultation number and our own request code are stored immediately.

04For developers

One request, one answer

The API is a plain GET call with your key in a header. You get JSON back with the result, the company data per VIES and the proof. Write the customer’s VAT ID with its country prefix, for example DE123456789.

  • Every request gets a unique code (VV-…), including failed ones.
  • Monthly quota and per-minute limit are set per account and visible in the dashboard.
  • If VIES or the member state's service is unreachable you get 503 with vat_status UNAVAILABLE. A valid number is never reported as invalid in that case.

Request

curl "https://verifyvat.eu/api/v2/check?vat_number=DE123456789" \
  -H "apikey: vat_xxxxxxxx_xxxxxxxxxxxxxxxx"

Response

{
  "request_code": "VV-3F9A1C2E",
  "valid": true,
  "query": "DE123456789",
  "company_name": "Muster GmbH",
  "company_address": "Musterstraße 1, 10115 Berlin",
  "consultation_number": "WAPIAAAAZ4Kq8vDn",
  "vies_request_date": "2026-10-11T01:14:09.000Z",
  "proof_available": true
}

The response fields

request_code
Your request code (VV-…). Searchable in the dashboard.
valid
true if VIES lists the number as valid, otherwise false.
company_name / company_address
Name and address per VIES, if the member state provides them.
consultation_number
The consultation number from VIES. This is your proof.
vies_request_date
Time of the request according to VIES.
proof_available
true if VIES issued a consultation number.
vat_status
Check 1, VAT number: VALID, INVALID, UNAVAILABLE (service not reachable) or ERROR. valid is null for UNAVAILABLE/ERROR.
company_name_status
Check 2, company name (only if you send company_name): MATCH, MISMATCH, NOT_AVAILABLE (VIES returns no name, e.g. Germany), NOT_CHECKED or ERROR. A missing name is not a MISMATCH.
company_identity_status
Check 3, company identity: VERIFIED, UNVERIFIED, MISMATCH or PENDING. A valid VAT number alone never results in VERIFIED.
verification_level
How far the check went: VAT_ONLY, VAT_AND_NAME or VAT_AND_REGISTER.
representation_status
Check 4, authority to represent: always NOT_CHECKED. The API does not check whether a person may represent the company.
verification_id / verified_at
ID of the audit record and time of the original check. Use the ID to fetch the certificate: /api/v2/verification/{id}/certificate.
cached
true if the result comes from the cache. verified_at then shows the original check. Use fresh=true to force a new query.

Status codes

An invalid number is not an error: you get 200 and valid: false.

200
Request processed, result in the valid field.
400
vat_number is missing or has an invalid format.
401
The apikey header is missing, or the key is invalid or revoked.
402
The monthly quota is used up.
403
No VAT ID of your own is stored in the account yet.
429
The per-minute limit was exceeded. Wait briefly and retry.
502
Unexpected response from VIES (vat_status ERROR). The request is stored with its code.
503
VIES or the member state is currently unreachable (vat_status UNAVAILABLE). Retry later. Does not count against your quota.

05

What you see in your account

The dashboard is built so you can find any check again in seconds.

History

Every request with code, result, company, consultation number and timestamp. Searchable by code, VAT ID and consultation number.

CSV export

The full history as a file for bookkeeping or tax audits.

Manual check

Validate a single number by hand. Your company is already filled in as the requester.

Multiple keys

One key per system, individually revocable, so you always know where a request came from.

Usage

Used and remaining monthly quota, per-minute limit and success rate at a glance.

Help

Documentation with examples and a support form you can reach from every page.

What teams use it for

Web shop and checkout

Validate the VAT ID the moment a customer enters it at checkout and issue the invoice accordingly.

ERP and bookkeeping

Check new customer accounts when you create them and re-check your records regularly. File the consultation number with the document.

SaaS and onboarding

Verify business customers at sign-up without anyone having to look it up manually on a government site.

06Security

Your access and data are protected

You entrust us with API access and business data. That is why these basic rules apply:

Encrypted connection

All calls run over HTTPS.

API keys protected

Keys are stored encrypted and can be revoked individually at any time.

Protection against abuse

Sign-in and API are limited against guessing and overload.

Separated accounts

Every customer sees only their own requests and keys.

Terms in brief

VAT ID
Value-added tax identification number. It starts with a country prefix, for example DE for Germany, followed by the number.
VIES
The VAT Information Exchange System of the European Commission. It forwards your request to the national tax authority.
Consultation number
The identifier under which VIES documents a request that includes a requester.
Requester
That is you: your own VAT ID, sent along with the request.
Request code
The short VV-… code from VerifyVAT. It is unique per request and searchable in the dashboard.

Frequently asked questions

Why do I need my own VAT ID?+

VIES only issues a consultation number when the requester is given. Without a stored VAT ID the API is therefore not enabled.

What is the consultation number?+

It is the identifier VIES uses to document a request that includes a requester. You keep it as proof alongside your records.

Where does the data come from?+

Everything comes from VIES, the European Commission’s service. VerifyVAT is not an offering of the European Commission.

Which countries are covered?+

All 27 EU member states plus Northern Ireland (XI). Numbers from Switzerland, the United Kingdom or other non-EU countries are unknown to VIES.

What does “invalid” mean?+

VIES does not list the number as valid at the time of the request. That can be a typo, a number not yet activated or one that was deleted. If in doubt, ask your business partner.

What happens if VIES is unreachable?+

The API answers with 502 and gives you the request code. Nothing is reported as valid. You can send the request again later.

Can I use it without coding?+

Yes. The dashboard has a manual checker, with your company already filled in as the requester.

What does it cost?+

Currently nothing. Your quota is shown in your dashboard.

Ready for your first check?

Create an account, generate a key, get going. It takes a few minutes.