The Leading EU VAT API

A developer friendly API to help your business achieve VAT compliance

EU VAT Rates

EU VAT Rates

Retrieve all EU VAT Rates using an IP Address or Country Code.

Currency Conversion

Currency Conversion

Convert currencies to GBP & EUR from any other currency.

VAT Number Validation

VAT Number Validation

Validate VAT Numbers to determine if your customer is a valid business customer.

VAT Invoicing

EU VAT Invoices

Easily generate VAT invoice data or use our handy auto generated invoices.

Request:
<?php
	        
$apikey = '0800fc577294c34e0b28ad2839435945';
$ip_address = '212.58.246.90';
$endpoint = 'https://vatapi.com/v1/ip-check?address='.$ip_address;

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $endpoint);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Apikey: '.$apikey));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 40);

$response = curl_exec($ch);

curl_close($ch);

echo $response;

?>
Response:
{
    "status": 200,
    "country_code": "LU",
    "country": "Luxembourg",
    "vat_applies": true,
    "rates":  {
        "standard":  {
            "value": 17
            },
            "reduced":  {
                "value": 8,
                "applies_to": false
            },
            "reduced_alt":  {
                "value": null,
                "applies_to": false
            },
            "super_reduced":  {
                "value": 3,
                "applies_to": "ebooks"
            },
            "parking":  {
                "value": 14,
                "applies_to": false
            }
        }
}
<?xml version="1.0" encoding="UTF-8"?>
<xml>
    <status>200</status>
    <country_code>LU</country_code>
    <country>Luxembourg</country>
    <rates>
        <standard>
        	<value>17</value>
        </reduced>
        <reduced>
        	<value>8</value>
        	<applies_to />
        </reduced>
        <reduced_alt>
        	<value>null</value>
        	<applies_to />
        </reduced_alt>
        <super_reduced>
        	<value>3</value>
        	<applies_to>ebooks</applies_to>
        </super_reduced>
        <parking>
        	<value>14</value>
        	<applies_to />
        </parking>
    </rates>
</xml>
Request:
<?php
	        
$apikey = '0800fc577294c34e0b28ad2839435945';
$code = 'LU';
$endpoint = 'https://vatapi.com/v1/country-code-check?code='.$code;

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $endpoint);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Apikey: '.$apikey));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 40);

$response = curl_exec($ch);

curl_close($ch);

echo $response;

?>
Response:
{
    "status": 200,
    "country_code": "LU",
    "country": "Luxembourg",
    "vat_applies": true,
    "rates":  {
        "standard":  {
            "value": 17
            },
            "reduced":  {
                "value": 8,
                "applies_to": false
            },
            "reduced_alt":  {
                "value": null,
                "applies_to": false
            },
            "super_reduced":  {
                "value": 3,
                "applies_to": "ebooks"
            },
            "parking":  {
                "value": 14,
                "applies_to": false
            }
        }
}
<?xml version="1.0" encoding="UTF-8"?>
<xml>
    <status>200</status>
    <country_code>LU</country_code>
    <country>Luxembourg</country>
    <rates>
        <standard>
        	<value>17</value>
        </reduced>
        <reduced>
        	<value>8</value>
        	<applies_to />
        </reduced>
        <reduced_alt>
        	<value>null</value>
        	<applies_to />
        </reduced_alt>
        <super_reduced>
        	<value>3</value>
        	<applies_to>ebooks</applies_to>
        </super_reduced>
        <parking>
        	<value>14</value>
        	<applies_to />
        </parking>
    </rates>
</xml>
Request:
<?php
	        
$apikey = '0800fc577294c34e0b28ad2839435945';
$endpoint = 'https://vatapi.com/v1/vat-rates';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $endpoint);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Apikey: '.$apikey));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 40);

$response = curl_exec($ch);

curl_close($ch);

echo $response;

?>
Response:
{
  "status": 200,
  "countries": [
    {
      "AT": {
        "country": "Austria",
        "rates": {
          "standard": {
            "value": 20
          },
          "reduced": {
            "value": 10,
            "applies_to": false
          },
          "reduced_alt": {
            "value": null,
            "applies_to": false
          },
          "super_reduced": {
            "value": null,
            "applies_to": false
          },
          "parking": {
            "value": 12,
            "applies_to": false
          }
        }
      }
    },
    {
      "BE": {
        "country": "Belgium",
        "rates": {
          "standard": {
            "value": 21,
            }
                
<?xml version="1.0" encoding="utf-8"?>
<xml>
  <status>200</status>
  <countries>
    <country>
      <AT>
        <country>Austria</country>
        <rates>
          <standard>
            <value>20</value>
          </standard>
          <reduced>
            <value>10</value>
            <applies_to>0</applies_to>
          </reduced>
          <reduced_alt>
            <value/>
            <applies_to>0</applies_to>
          </reduced_alt>
          <super_reduced>
            <value/>
            <applies_to>0</applies_to>
          </super_reduced>
          <parking>
            <value>12</value>
            <applies_to>0</applies_to>
          </parking>
        </rates>
      </AT>
    </country>
    <country>
      <BE>
        <country>Belgium</country>
        <rates>
          <standard>
            <value>21</value>
          </standard>
            
            etc etc...
Request:
<?php
	        
$apikey = '0800fc577294c34e0b28ad2839435945';
$vat_number = 'GB198332378';
$endpoint = 'https://vatapi.com/v1/vat-number-check?vatid='.$vat_number;

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $endpoint);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Apikey: '.$apikey));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 40);

$response = curl_exec($ch);

curl_close($ch);

echo $response;

?>
Response:
{
  "status": 200,
  "countryCode": "GB",
  "vatNumber": 198332378,
  "requestDate": "2017-10-30+01:00",
  "valid": true,
  "name": "DIGITAL GOODS STORE LTD",
  "address": "GRESHAM HOUSE\n24 HOLBORN VIADUCT\nLONDON\n\n\nEC1A 2BN"
}
<?xml version="1.0" encoding="UTF-8"?>
<xml>
<status>200</status>
<countryCode>GB</countryCode>
  <vatNumber>333289454</vatNumber>
  <requestDate>2014-10-30+01:00</requestDate>
  <valid>1</valid>
  <name>BRITISH BROADCASTING CORPORATION</name>
  <address>FAO ALEX FITZPATRICK
BBC GROUP VAT MANAGER
THE LIGHT HOUSE (1ST FLOOR)
MEDIA VILLAGE, 201 WOOD LANE
LONDON
W12 7TQ</address>
</xml>
Request:
<?php
	        
$apikey = '0800fc577294c34e0b28ad2839435945';
$currency_from = 'EUR';
$currency_to = 'GBP';
$amount = 39.99;

$endpoint = 'https://vatapi.com/v1/country-code-check?currency_from='.$currency_from.'&currency_to='.$currency_to.'&amount='.$amount;

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $endpoint);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Apikey: '.$apikey));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 40);

$response = curl_exec($ch);

curl_close($ch);

echo $response;

?>
Response:
{
    "status": 200,
    "currency_from": "EUR",
    "currency_to": "GBP",
    "amount_from": 39.99,
    "amount_to": 31.56,
    "rate": 1.2673
}
<?xml version="1.0" encoding="UTF-8"?>
<xml>
    <status>200</status>
    <currency_from>EUR</currency_from>
    <currency_to>GBP</currency_to>
    <amount_from>39.99</amount_from>
    <amount_to>31.56</amount_to>
    <rate>1.2673</rate>
</xml>
Request:
<?php
	        
$apikey = '0800fc577294c34e0b28ad2839435945';
$invoice_id = 3023;
$endpoint = 'https://vatapi.com/v1/invoice/'.$invoice_id;

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $endpoint);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Apikey: '.$apikey));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 40);

$response = curl_exec($ch);

curl_close($ch);

echo $response;

?>
Response:
{
    "status": 200,
    "invoice": {
        "id": 3023,
        "invoice_number": 46,
        "date": "2014-11-10 15:38:29",
        "tax_point": "2014-11-10 15:38:29",
        "type": "sale",
        "currency_code": "GBP",
        "currency_code_conversion": null,
        "conversion_rate": null,
        "business_name": "Digital Goods Store Ltd",
        "business_address": "International House, \n24 Holborn Viaduct, \nCITY OF LONDON, \nLondon EC1A 2BN",
        "customer_name": null,
        "customer_address": "John Smith\n23 Oakland Drive\nLondon\nL1 A33\nUnited Kingdom\n\nCountry: GB \nIP Address: 86.14.62.178",
        "vat_number": "198 3323 78",
        "subtotal": 19.99,
        "vat_total": 4,
        "discount_rate": null,
        "discount_total": 0,
        "total": 23.99,
        "logo_url": "https://vatapi.com/images/logo-invoice.jpg",
        "invoice_url": "https://vatapi.com/invoice/1/1c5a88",
        "notes": null,
        "items": [
            {
                "description": "Subscription Payment Standard",
                "quantity": 1,
                "price_each": 19.99,
                "vat_rate": 20
            }
        ]
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<xml>
    <status>200</status>
    <invoice>
        <id>3023</id>
        <invoice_number>46</invoice_number>
        <date>2014-11-10 15:38:29</date>
        <tax_point>2014-11-10 15:38:29</tax_point>
        <type>sale</type>
        <currency_code>GBP</currency_code>
        <currency_code_conversion/>
        <conversion_rate/>
        <business_name>Digital Goods Store Ltd</business_name>
        <business_address>
          International House,
          24 Holborn Viaduct,
          CITY OF LONDON,
        London EC1A 2BN</business_address>
        <customer_name/>
        <customer_address>
          John Smith
          23 Oakland Drive
          London
          L1 A33
          United Kingdom
          
          Country: GB
        IP Address: 86.14.62.178</customer_address>
        <vat_number>198 3323 78</vat_number>
        <subtotal>19.99</subtotal>
        <vat_total>4.00</vat_total>
        <discount_rate/>
        <discount_total>0.00</discount_total>
        <total>23.99</total>
        <logo_url>https://vatapi.com/images/logo-invoice.jpg</logo_url>
        <invoice_url>https://vatapi.com/invoice/1/1c5a88</invoice_url>
        <notes/>
        <items>
            <item>
                <description>Subscription Payment Standard</description>
                <quantity>1</quantity>
                <price_each>19.99</price_each>
                <vat_rate>20</vat_rate>
            </item>
        </items>
	</invoice>
</xml>
Europe

EU VAT Rates

Are you selling digital services to other EU countries? On Jan 1st 2015 changes to the VAT place of supply came into effect.

One acceptable way to prove where your customer resides is their IP address. We have removed the headache and cost of you having to geo locate your customers IP address, and workout what VAT rate they should be charged.

Simply pass your customers IP address from your application to our API and we'll return a JSON or XML object of all the current EU VAT rates for that country, or if you already know their country you can lookup the rates from the 2 digit country code.

VAT Number Validation

Validating VAT numbers in realtime is a useful way to determine if a customer is who they say they are, and is essential in determining if your selling to a consumer i.e. a B2C transaction or business B2B. Information returned is based on the European Commission VIES service therefore is realtime and up-to date.

VAT Number

If you aren't a developer or don't have access to a developer and are just looking to bulk validate VAT numbers you might be interested in our sister service Bulk VAT Validator

Currency Conversion

Currency Conversion

Although this applies to UK business it may apply to other member states. If you are invoicing in any other currency other than your local currency it is a requirement to show the converted amount in your local currency on your VAT invoices, read here for clarification.

We keep an up-to-date record of the current currency conversion rates that the HMRC and European Central Bank publish, via the currency conversion API function you are able to convert any currency to UK Sterling or Euro.

VAT Compliant Invoices

Our VAT compliant invoice API service was developed out of necessity in order for our own business to comply with the new EU law on the sale of digital services, effective Jan 1st 2015. We have developed the service strictly in accordance with the requirements for VAT compliant invoicing published by the HMRC.

This API will save our business and quite possibly yours a big headache as it gives us a centralised invoicing system with sequential invoice numbering, and can accept invoices from any one of our companies different trading names.

It couldn't be any simpler to use, you simply send it your invoice data and it generates a secure url which you can then view the invoice from, for example:

You also get back all the generated invoice data allowing you to do whatever suits your businesses needs.

Pricing & Plans

Flexible pricing plans to meet demand.

All plans include full API features and all data is delivered over SSL.

Dev

50

requests per month

£2.39/mth

Starter

500

requests per month

£5.99/mth

Basic

2,000

requests per month

£11.99/mth

Standard

10,000

requests per month

£35.99/mth

Professional

50,000

requests per month

£119.99/mth

Premium

200,000

requests per month

£299.99/mth

Custom plan

Need more?

 

Get in touch!

All data that we make available via the VAT API and store at vatapi.com is hosted on secure UK servers and accessed over the SSL secure sockets layer protocol. Our company is registered with the UK data protection act, registration reference:- ZA335680