Get started

VAT Validation & Rates API

Stay compliant with our simple, reliable, and powerful API for all your domestic and cross-border sales.
Get your free API key
Test it out
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Request

GET https://vat.abstractapi.com
?vat=923830N&api_key=KndsqhGSD6672dhGS6

Why 10,000+ developers love Abstract's APIs

Easy to implement and maintain

We built Abstract because most of the API's we've used aren't great for developers. That's why Abstract has excellent documentation, multiple easy to use libraries, and tutorials to get you started.

Speed and scale built into everything we do

Our APIs are built to power critical business processes and flows, so all our APIs are built for use at scale and at blazing speeds. These aren't just marketing phrases for, but fundamental features of our APIs.

Reliable uptime and great support

Developers trust Abstract because of our reliable uptime and excellent technical support that will help get you live quickly, keep you running smoothly, and resolve any issues you have fast.

The VAT Validation and Rates API makes it easy to stay compliant with VAT laws

Reliable and up-to-date VAT data

It's critical to have the latest and most accurate VAT data, so Abstract works directly with multiple sources, including the EU Commission itself, to provide you trustworthy data.

Validate VAT numbers via API

You're required to ensure the VAT numbers that you have or that users submit to you are valid, and Abstract makes it easy to validate VAT numbers with a single, simple API call.

Calculate VAT prices via API

Abstract's VAT API can calculate the VAT owed on a specific purchase, taking into account the country of purchase as well as other purchase-specific details.

VAT data from across the EU and beyond

Get VAT rates from individual countries, from across the European Union, and from other countries beyond the EU that use VAT. Abstract is the hub for all your VAT data needs.

Standard and reduced VAT rates

Take into account a country's specific VAT rates and other details in calculating VAT prices to ensure that you have the most accurate VAT calculation via our API.

Bank-level security for all queries

Our speed, data quality, and documentation are great, but security is top of mind too. All data that is sent and processed is secured via 256-bit SSL encryption (HTTPS).

VAT Validation and Rates API Documentation

REST

The VAT Validation and Rates API, like all of Abstract's APIs, is organized around REST. It is designed to use predictable, resource-oriented URL's and to use HTTP status codes to indicate errors.

HTTPS

The VAT Validation and Rates API requires all communications to be secured TLS 1.2 or greater.

API Versions

All of Abstract's API are versioned. The VAT Validation and Rates API is currently on Version 1.

Your API Key

Your API key is your unique authentication key to be used to access Abstract's Exchange Rate API. Note that each of Abstract's API has a unique API key, so you will need different keys to access the VAT Validation and Rates and IP Geolocation APIs, for example. To authenticate your requests, you will need to append your API key to the base URL.

Base URL

https://vat.abstractapi.com/v1/

Overview of Endpoints for VAT Validation and Rates

Abstract's VAT Validation and Rates API contains three main endpoints for accessing VAT data:

  • /validate/ checks whether the submitted VAT number is valid and, if it is, returns company details registered country, name, address, etc
  • /calculate/ determines VAT-compliant prices for a given value, country, purchase type, and more
  • /rates/ returns the latest VAT rates for a specific country

VAT Validation API Endpoint (/validate/)

The /validate/ endpoint takes your unique API key and a VAT number in the request, checks if that number is valid, and if it is valid, returns addition details about the company associated with that VAT number.

https://vat.abstractapi.com/v1/validate
    ? api_key = YOUR_API_KEY
    & vat_number = SE556656688001

This was a successful request, and the details below are included in the response:

{
    "vat_number": "SE556656688001",
    "is_vat_valid": true,
    "company_name": "Google Sweden AB",
    "company_address": "Google Ireland Ltd, M Collins, Gordon House, Barrow Street, Dublin 4, Ireland",
    "company_country": "SE",
    "company_country_code": "Sweden"
}

/validate/ VAT Validation Endpoint - API Request Parameters

PARAMETER

TYPE

DETAILS

api_key required

String

Your unique API key. Note that each user has unique API keys for each of Abstract's APIs, so your VAT Validation and Rates API key will not work for as your IP Geolocation API key, for example.

vat_number required

String

The VAT number to validate.

/validate/ VAT Validation Endpoint - API Responses

The API response is returned in a universal and lightweight JSON format.

PARAMETER

TYPE

DETAILS

vat_number

String

The VAT number to validate.

is_vat_valid

Boolean

Is true if the submitted VAT number is valid.

company_name

String

The name of the company associated with the VAT number.

company_address

String

The address of the company associated with the VAT number.

company_country

String

The country of the company associated with the VAT number.

company_country_code

String

The two letter ISO 3166-1 alpha-2 code of the country associated with the VAT number.

VAT Price Calculation API Endpoint (/calculate/)

The /calculate/ endpoint makes it easy to calculate a VAT compliant price given a country and price, as well as such optional values as the type of goods.

Below is a simple example of the /calculate/ endpoint being used to find the VAT compliant price of a 175 Euro purchase in Germany:

https://vat.abstractapi.com/v1/calculate
    ? api_key = YOUR_API_KEY
    & amount = 175
    & country_code = DE

This was a successful request, and the converted because no target currency or currencies were included, the exchange rate of all available currencies were included in the response:

{
    "amount_excl_vat": 175.00,
    "vat_amount": 33.25,
    "amount_incl_vat": 208.25,
    "vat_rate": 0.19,
    "country_code": "DE",
    "country_name": "Germany"
}

/calculate/ VAT Price Calculation Endpoint - API Request Parameters

PARAMETER

TYPE

DETAILS

api_key required

String

Your unique API key. Note that each user has unique API keys for each of Abstract's APIs, so your VAT Validation API key will not work for as your IP Geolocation API key, for example.

amount required

String

The amount that you would like to get the VAT amount for or from.

country_code required

String

The two letter ISO 3166-1 alpha-2 code of the country in which the transaction takes place.

is_vat_incl

Boolean

If the amount already has VAT added and you'd like to do the reverse calculation and split out the amount and VAT, set this parameter to true. If this parameter is not explicitly included it will default to false.

vat_category

String

Some countries offer a reduced VAT rate for certain categories of goods. To determine if a reduced VAT is available and to apply it to the final amount, include the vat_category in the request.

/calculate/ VAT Price Calculation Endpoint  - API Response

The API response is returned in a universal and lightweight JSON format.

PARAMETER

TYPE

DETAILS

amount_excl_vat

Float

The amount excluding the VAT.

vat_amount

Float

The calculated amount of VAT.

amount_incl_vat

Float

The sum of the base amount and the VAT, i.e., amount_excl_vat + vat_amount

vat_rate

Float

The VAT rate, from 0.01 to 0.99.

vat_category

String

The optional category of the purchase, used to determine whether it qualifies for a reduced rate. See below for a list of supported categories.

country_code

String

The two letter ISO 3166-1 alpha-2 code of the country in which the transaction takes place.

country_name

String

The name of the country the VAT is being calculated from.

Example: Starting with a final price and getting the added VAT from it using the /calculate/ endpoint

Rather than taking an amount and getting the VAT that should be added to it, let's assume we already have an amount with VAT added to it and that we want to split out the VAT from that amount. To do that, you would include the is_vat_incl parameter set to true.

https://vat.abstractapi.com/v1/calculate
    ? api_key = YOUR_API_KEY
    & amount = 208.05
    & country_code = DE
    & is_vat_incl = true

You'll notice that response is the exact same as if the request was to add VAT to an amount. Using the is_vat_incl you can either add or more VAT from an amount, and have a clear breakdown of the base price, the VAT, and the base price including the VAT.

{
    "amount_excl_vat": 175.00,
    "vat_amount": 33.25,
    "amount_incl_vat": 208.25,
    "vat_rate": 0.19,
    "country_code": "DE",
    "country_name": "Germany"
}

Example: Specifying a VAT category to check for reduced VAT rates with the /calculate/ endpoint

Some countries give reduced VAT rates for certain categories of goods. If you pass the VAT category in the request, the API will check if there is a reduced VAT rate for that country and category. For example, below is a request to get the VAT for 500 EUR worth of books in Germany:

https://vat.abstractapi.com/v1/calculate
    ? api_key = YOUR_API_KEY
    & amount = 500
    & country_code = DE
    & vat_category = books

The request was valid and successful, and books qualify for reduced VAT in Germany, so it returns the following:

{
    "amount_excl_vat": 500.00,
    "vat_amount": 35.00,
    "amount_incl_vat": 535.00,
    "vat_rate": 0.07,
    "country_code": "DE",
    "country_name": "Germany"
}

You can combine this use of the vat_category parameter with the is_vat_incl, to split out the VAT and base amount for an amount that already includes the VAT. Note in the example below, the amount has changed to 535, the total include VAT of 500 EUR worth of books from Germany.

https://vat.abstractapi.com/v1/calculate
    ? api_key = YOUR_API_KEY
    & amount = 535
    & country_code = DE
    & vat_category = books
    & is_vat_incl = true

Once again the response for an amount=535 where is_vat_incl=true is the same as for amount=500 and is_vat_incl=false or where this parameter is not included at all, since they are effectively two sides of the same equation, adding and removing VAT from the same amount.

{
    "amount_excl_vat": 500.00,
    "vat_amount": 35.00,
    "amount_incl_vat": 535.00,
    "vat_rate": 0.07,
    "country_code": "DE",
    "country_name": "Germany"
}

VAT Rates API Endpoint (/rates/)

The /rates/ endpoint makes it easy to get the latest VAT rates, including the reduced rates for certain categories, for a specific country.

Below is a simple example of the /rates/ endpoint being used to get the latest VAT rates for Germany:

https://vat.abstractapi.com/v1/rates
    ? api_key = YOUR_API_KEY
    & country_code = DE

This was a successful request, and the response includes both the standard rate as well as the reduces rates and categories associated with them:

{
    "country_code": "DE",
    "country_name": "Germany",
    "standard_rate": 0.19,
    "reduced_rates": {
        "foodstuffs": 0.07,
        "water supplies": 0.07,
        "medical equipment": 0.07,
        "books": 0.07,
        "e-books": 0.07,
        "audiobooks": 0.07,
        "newspapers and periodicals": 0.07,
        "cultural events": 0.07,
        "hotel": 0.07,
        "sports events": 0.07,
        "social services": 0.07,
        "medical care": 0.07,
        "dental care": 0.07,
        "firewood": 0.07,
        "take away food": 0.07,
        "cut flowers": 0.07
    }
}

/rates/ VAT Rates Endpoint - API Request Parameters

PARAMETER

TYPE

DETAILS

api_key required

String

Your unique API key. Note that each user has unique API keys for each of Abstract's APIs, so your VAT Validation API key will not work for as your IP Geolocation API key, for example.

country_code required

String

The two letter ISO 3166-1 alpha-2 code of the country in which the transaction takes place.

/rates/ VAT Rates Endpoint  - API Responses

The API response is returned in a universal and lightweight JSON format.

PARAMETER

TYPE

DETAILS

country_code

String

The two letter ISO 3166-1 alpha-2 code of the country in which the transaction takes place, which is returned from the request.

country_name

String

The full plain text name of the country specified by the country_code.

standard_rate

Float

The standard VAT rate for the requested country.

reduced_rates

Object

A JSON object containing categories as the keys and the reduced VAT rate for that category as the values.

Response and Error Codes

Whenever you make a request that fails for some reason, an error is returned also in the JSON format. The errors include an error code and description, which you can find in detail below.

CODE

TYPE

DETAILS

200

OK

Everything worked as expected.

400

Bad request

Bad request

401

Unauthorized

The request was unacceptable. Typically due to the API key missing or incorrect.

500

Internal Server Error

The request could not be completed due to an error on the server side.

503

Service Unavailable

The server was unavailable.

Frequently Asked Questions
about Abstract's VAT Validation and Rates API

What is a Value Added Tax (VAT)?

A value-added tax (VAT) is a consumption tax that is applied to a product when value is applied to it at every step of a supply chain. This means it can be applied all the way from the initial steps of production to the final point of sale. The total VAT amount that is paid is on the cost of the product itself, excluding the cost of materials that had already been taxed on the product itself. Many countries around the world use some form of VAT, but it is most commonly found in the European Union.

Is it required to check and validate VAT numbers?

Yes, businesses selling to customers in the European Union must collect VAT numbers and submit them to the authorities. Incorrect VAT numbers -- whether the inaccuracy is purposeful or not -- could result in fines and / or other issues. Just as you would validate emails or validate phone numbers, it's best practice (and actually required!) that you validate VAT numbers.

Do you need to register for or collect VAT if your business is outside the European Union?

The short answer is that it depends, but generally yes. If you are selling to customers in the European Union, whether or not you yourself are based in the European Union, you must obtain a (free) VAT number. Every country in the EU enforces tax requirements related to VAT, so it's not recommended that you ignore it.

Where does Abstract's VAT data come from?

We use a variety of sources to collect and validate VAT data to ensure our customers have the more accurate and up to date information available. We primarily rely on the VAT Information Exchange System (VIES) operated by the European Commission as a primary source, and then we supplement this with additional data and validations before we expose it to our end users.

Is it required that I include VAT in my invoices?

While each country in the European Union has different detailed requirements on what must be on an invoice, they generally all require VAT information to be included on the invoices themselves.

Developers around the world love Abstract's VAT Validation and Rates API

Dealing with VAT rates and validation was a huge time sink for our team, as well as something that kept us up at time worrying that we were doing it incorrectly. Thankfully we've been able to offload all this work and worry to Abstract and we haven't looked back. It's been a great experience.

Caroline Sanesbury

Our startup was afraid to start selling into European Union countries because of all the horror stories we heard about calculating VAT rates, validating VAT numbers, and overall just dealing with the tax complexities and risk. But Abstract makes it simple for us and now EU is a big growth area for us.

Jonathan Gurkis

Abstract has been a life saver ! It was so confusing to handle VAT rates before, especially with our automated invoicing and payments systems. Now we have everything set up nicely and don't have to worry about being compliant with tax authorities since it is handled 24/7 for us. Big win !

Etienne Dupas

VAT Validation and Rates API Changelog

Last Updated on 

August 10, 2020

August 10, 2020

 - 

Improved error handling and responses when third party services are down or slow

July 23, 2020

 - 

Updated reduced rates and their descriptions for France, Italy, and Sweden

Included references to tax codes where relevant and available.

July 11, 2020

 - 

Added additional categories and rates for reduced VAT types for France, Germany, and Spain

July 9, 2020

 - 

Improved daily data sync and validation with several European VAT sources, especially Nordic countries

GET STARTED

Get 1,000 free credits
per month.

Experience the power of Abstract APIs
with free credits every month.
Get free API key

Frequently Asked Questions
About Subscription & Pricing

What does the API cost?

Each of our API's has a free plan as well as several paid options, which offer a greater number of requests, a higher level of data quality, and greater speed for higher prices. Please see the page above or sign into your account to view pricing for each API.

Do you have a free trial or free options for your API's?

Absolutely! We want you to try before you buy. Each of our API's has a free tier with a generous usage allowance for you to try the product out and verify that the speed and data quality work for you.

What payment options do you offer?

We use Stripe to accept payment via major debit and credit cards (Visa, Mastercard, American Express). If you cannot use those payment methods, then contact us at team at abstractapi.com to arrange for an alternative payment method.

Can I upgrade or downgrade my subscription?

Yes, you can upgrade or downgrade your subscription at any time by visiting your dashboard. If you upgrade in the middle of a billing cycle, you will be charged a pro-rated amount for your new plan through the end of the billing cycle.

Can I cancel at any time?

Yes, all of our subscriptions are month to month. You can cancel at any time, and you will not be charged again at the end of your billing cycle.

How can I cancel my subscription?

You can cancel your subscription at any time from your dashboard. Once canceled, your subscription will be active until the end your current billing cycle, and then it will be automatically moved to the free plan.

What happens if I go over my monthly quota for requests?

If your API usage exceeds the monthly limit set by your plan, then you will be charged a fee for each call over your limit. At the end of your billing period, your usage will reset again.

What if I need more requests or something else that's not offered in your plans?

We do offer enterprise plans with custom features and pricing in limited circumstances. If our public pricing plans don't work for you, then contact us (team at abstractapi.com) and we'll work something out.

Do you offer any discounts?

While we don't normally offer discounts, we do make exceptions for certain types of users and use cases. If you are a student or are engaged in academic work, or are working on a non-profit or open source project, we're happy to offer you discounts for our API's. Just email us at team at abstractapi.com.

Do you offer discounts for annual or quarterly payments?

All of our plans are currently paid month to month. We will be launching annual plans at a discount soon. If you're interested in an annual plan in the meantime, just contact us and we'll set you up.

What happens if my payment method expires?

We will typically attempt to charge your payment method up to three times after it fails. If we're still unable to collect payment, then your subscription will be automatically canceled and you'll be moved to the free plan.

Can I use the API's for a commercial project?

Yes, a paid tier of our API may be used in conjunction with a commercial project. The free tiers of our API's may not be used in commercial projects.