VAT Rates

Obtain official EU VAT rates, full and reduced, for different categories.

Keep the rates of your application up-to-date with a regular VAT rate lookup. This ensures that your invoice states the correct VAT across EU Member States. We have also started to add countries outside the EU and will keep them updated.

VAT rates can change irregularly as governments adapt to new circumstances. We track such announcements closely and store scheduled changes in our database. Any such change will take effect at exactly midnight local time of the respective country.

Rate Entity

Base of the rate endpoint is the Rate entity, which is returned from all rates endpoint. You can find the description of the Rate entity below:

Key

Type

Example

Description

standard_rate

Number

20

Standard rate used in the country.

currency

String

EUR

3-letter ISO 4217 local currency code.

country

Object

N/A

Contains information about the country

country.code

String

DE

2-letter ISO country code.

country.name

String

Germany

Corresponding English name of country_code.

country.local_name

String

Deutschland

Corresponding name of country_code on local language (in case of multiple national languages, English will be returned)

country.member_state

Boolean

false

Identifies if the country is a member state or not

categories

Object

N/A

Contains rates for different categories relevant for digital products.

categories.audiobook

Number

20

Rate for audiobooks. Defaults to standard_rate

categories.broadcasting

Number

10

Rate for broadcasting services. Defaults to standard_rate

categories.ebook

Number

10

Rate for electronic books. Defaults to standard_rate

categories.eperiodical

Number

4

Rate for electronic periodical. Defaults to standard_rate

categories.eservice

Number

20

Rate for electronic services. Defaults to standard_rate

categories.telecommunication

Number

30

Rate for telecommunication

get
Get All VAT Rates

https://api.vatzen.com/v1/rates
This endpoint allows you fetch all the rates from our system. Before reading this article, familiarize yourself with Authorization and Rate Entity.
Request
Response
Request
Query Parameters
limit
optional
integer
Pagination option to limit the page length. Defaults to 100.
page
optional
integer
Page number, defaults to 1.
member_state
optional
boolean
Filter response to include only EU member states.
Response
200: OK
Rates fetched successfully
{
"success": true,
"pagination": {
"has_more": false,
"total_count": 28
},
"rates": [
{
"standart_rate": 20,
"currency": "EUR",
"country": {
"code": "AT",
"name": "Austria",
"local_name": "Austria",
"member_state": true
},
"categories": {
"audiobook": 5,
"broadcasting": 5,
"ebook": 5,
"eperiodical": 5,
"eservice": 20,
"telecommunication": 20
}
}
// ...
]
}
400: Bad Request
General error. For details, see API Errors page.
{
"status": 400,
"success": false,
"error": {
"code": 101,
"type": "missing_api_key",
"message": "No API Key provided"
}
}

Response Params

Key

Type

Value

pagination

Object

Information about the pagination

pagination.has_more

Boolean

Identifies if we have more data after this request (e.g. if you need to fetch additional page)

pagination.total_count

Number

Total items count for your request

rates

Array<Rate>

Array of Rate Entities.

get
VAT Rate by Country Code

https://api.vatzen.com/v1/rate/:country_code
Returns country's VAT rate by country code provided in path parameter.
Request
Response
Request
Path Parameters
country_code
required
string
2-letter ISO country code. For example "DE".
Response
200: OK
Returns the Rate entity for the country by the county code.
{
"success": true,
"standart_rate": 20,
"currency": "EUR",
"country": {
"code": "AT",
"name": "Austria",
"local_name": "Austria",
"member_state": true
},
"categories": {
"audiobook": 5,
"broadcasting": 5,
"ebook": 5,
"eperiodical": 5,
"eservice": 20,
"telecommunication": 20
}
}
400: Bad Request
General error, for details see API Errors section
{
"success": false,
"status": 400,
"error": {
"code": 101,
"type": "missing_api_key",
"message": "No API Key provided"
}
}
404: Not Found
We were unable to fetch the country by the country code.
{
"success": false,
"status": 404,
"error": {
"code": 108,
"type": "invalid_country_code",
"message": "You provided invalid count"
}
}

get
VAT Rate Lookup

https://api.vatzen.com/v1/rate
This method allows you to lookup the VAT rate using different parameters, such as country name, country code, ip address, etc.
Request
Response
Request
Query Parameters
country_code
optional
string
2-digits ISO Country Code. For example "DE"
country_name
optional
string
English or local country name. For example "Germany"
ip_address
optional
string
IP address of the customer. For example "8.8.8.8". We support both IP v4 and v6 and use extended databases to get the best results.
use_client_ip
optional
string
We will use IP address coming from the request. This might be helpful is you're making the request from the browser.
Response
200: OK
Response in case if we've found the correct rate.
{
"success": true,
"standart_rate": 20,
"currency": "EUR",
"country": {
"code": "CH",
"name": "Switzerland",
"local_name": "Switzerland",
"member_state": false
},
"categories": {
"audiobook": 3,
"broadcasting": 8,
"ebook": 3,
"eperiodical": 3,
"eservice": 8,
"telecommunication": 8
}
}
400: Bad Request
Something went wrong, see API Errors section for error details.
{
"success": false,
"statusCode": 400,
"error": {
"code": 107,
"type": "could_not_resolve_ip",
"message": "We failed locating the supplied IP Address"
}
}
404: Not Found
We were unable to find the requested country.
{
"success": false,
"statusCode": 404,
"error": {
"code": 109,
"type": "country_not_found",
"message": "We were unable to find requested country"
}
}