VAT Number Validations

Highly-secured, real-time EU VAT number validation that allows you to check the VAT number for a business. It's helpful when you sell to business customer and do not need to add VAT.

We obtain company's informations directly from different official sources, such as EU commissions DB and local countries databases. All subscription plans are allowed to perform real-time VAT ID validations and company information lookups through the validate and validations API endpoints.

Hot and Cold Validations

At VatZen we have a concept of 2 validations types: Hot and Cold.

  • Cold validation works in fire and forget way. Meaning that you simply call our endpoint and we return you the data, which is never stored afterwards.

  • Hot validation is different from the cold one in the way that all the requests you make has id's assigned and stored in our DB. And you can always fetch this validations (fetch them all of fetch by id).

Cold validations are performed via validate endpoint, end hot validation use validations CRUD endpoint. You can get more details below.

Using Requester Data

When validating VAT number, EU commission database can return you reference id, which you can then use in your reports or during the audit process. In order to obtain this reference number, you have to provide requested VAT number, meaning the number of your company.

In order to do that, simply go to VatZen's dashboard and fill the VAT Number option on the settings page: https://dashboard.vatzen.com/settings

Consultation number is used if you want to be able to prove to a Tax Administration of a Member State that you have checked a given VAT number at a given time, and obtained a given validation reply.

Validation Entity

Base of the validations endpoints is the Validation entity, which is returned from all validations-related endpoint. You can find the description of the Validation entity below:

Key

Type

Example

Description

id

String or null

1234

Uniq ID of the validation. Only applies to Hot validations. You can use it afterwards to obtain validation information.

consultation_number

String

WAPIAAAAXQ6Sc

Consultation number returned by VIES system.

valid

Boolean or null

true

Represents the validity of VAT number in the query. true only when it's valid. Null if we were unable to check the validity due to the government services being down.

requested

String

2020-08-29+02:00

Requested date returned from VIES system

query

String

LU26375245

Original query from the request.

country

Object or null

---

Information about the country of the company.

country.code

String

LU

ISO country code

country.name

String

Luxembourg

Name of the country

country.local_name

String

Luxembourg

Local name of the country, falls back to English

country.member_state

Boolean

true

If the country member state or not

company

Object or null

---

Information about the company. Sometimes this information is private, so we'll show null

company.name

String

AMAZON EUROPE CORE S.A R.L.

Company's name

company.address

String

38, AVENUE JOHN F. KENNEDY, L-1855 LUXEMBOURG

Company's address

pending

Boolean

false

If the government service is down, we return pending request, which we'll fullfill later. You can get the result by fetching validation by id.

valid_format

Boolean

true

If the VAT format from the query valid

requester

Object or null

---

Information about your company - requester

requester.country_code

String

LU

Country code

requester.vat_number

String

26375245

VAT Number

get
Validate VAT Number

https://api.vatzen.com/v1/validate/:number
Request
Response
Request
Path Parameters
number
required
string
VAT Number of business you want to validate
Response
200: OK
Successfully validated
{
"success": true,
"consultation_number": "WAPIAAAAXQ6S",
"valid": true,
"requested": "2020-08-29+02:00",
"query": "LU26375245",
"country": {
"code": "LU",
"name": "Luxembourg",
"local_name": "Luxembourg",
"member_state": true
},
"company": {
"name": "AMAZON EUROPE CORE S.A R.L.",
"address": "38, AVENUE JOHN F. KENNEDY, L-1855 LUXEMBOURG"
},
"pending": false,
"valid_format": true,
"requester": {
"country_code": "LU",
"vat_number": "26375245"
}
}

Response

Validation Entity or API Error will be returned.

post
Create Validation

https://api.vatzen.com/v1/validations
Creates a new hot validation and stores it in our db. ID is assigned to every validation.
Request
Response
Request
Query Parameters
vat_number
required
string
VAT Number you want to validate
Response
200: OK
{
"success": true,
"id": "string",
"consultation_number": "string",
"requested": "string",
"created": "string",
"valid": true,
"query": "string",
"country": {
"code": "DE",
"name": "Germany",
"local_name": "Deutschland",
"member_state": true
},
"company": {},
"pending": true,
"valid_format": true,
"requester": {}
}

get
Get All Validations

https://api.vatzen.com/v1/validations
Returns all the validation you performed with your token, paginated. Can be useful for exporting your activity.
Request
Response
Request
Query Parameters
page
optional
integer
Page number. Default to 1.
limit
optional
integer
Limit used for pagination. Default to 100.
Response
200: OK
All the validation returned
{
"success": true,
"pagination": {
"has_more": false,
"total_count": 3
},
"validations": [
{
"id": "5f45015c04725a4f76e07d",
"valid": true,
"requested": "2020-08-25+02:00",
"created": "2020-08-25T12:17:32.370Z",
"query": "NL852071589B01",
"country": {
"code": "NL",
"name": "Netherlands",
"local_name": "Netherlands",
"member_state": true
},
"company": {
"name": "UBER B.V.",
"address": ", MR. TREUBLAAN 00007, 1097DP AMSTERDAM, "
},
"pending": false,
"valid_format": true,
"requester": null
}
//....
]
}

get
Get Validation By ID

https://api.vatzen.com/v1/validations/:id
Returns the single validation by id. You can use it to retrieve information about pending validation, of for the validation for the specific transaction.
Request
Response
Request
Path Parameters
id
required
string
Validation ID you want to obtain information about
Response
200: OK
{
"success": true,
"id": "5f45015c04725a4f76e07",
"valid": true,
"requested": "2020-08-25+02:00",
"created": "2020-08-25T12:17:32.370Z",
"query": "NL852071589B01",
"country": {
"code": "NL",
"name": "Netherlands",
"local_name": "Netherlands",
"member_state": true
},
"company": {
"name": "UBER B.V.",
"address": ", MR. TREUBLAAN 00007, 1097DP AMSTERDAM, "
},
"pending": false,
"valid_format": true,
"requester": null
}