@apilayer/vatlayer

Vatlayer offers free, instant VAT Number validation & EU VAT rates.

Usage no npm install needed!

<script type="module">
  import apilayerVatlayer from 'https://cdn.skypack.dev/@apilayer/vatlayer';
</script>

README

vatlayer-js

Vatlayer offers free, instant VAT Number validation & EU VAT rates.

Installation

Using npm

npm install --save @apilayer/vatlayer

or yarn

yarn add @apilayer/vatlayer

Getting Started

Head over to Vatlayer and create an account. Copy access key from dashboard.

import Vatlayer from '@apilayer/vatlayer';

const layer = new Vatlayer({
  key: "<your-access-key>",
  secure: false, // use HTTPs
})

validate

validate perform VAT number validations and company information lookups

Signature:

validate(vat_number: string): Promise<Response>

Example:

const response = layer.validate("LU26375245")

console.log('response:', response)

Response:

{
    valid: true,
    database: "ok",
    format_valid: true,
    query: "LU26375245",
    country_code: "LU",
    country_name: "Luxembourg",
    vat_number: "26375245",
    company_name: "AMAZON EUROPE CORE S.A R.L.",
    company_address: "5, RUE PLAETIS L-2338 LUXEMBOURG",
}

rateByCountry

rateByCountry gets the vat rate by country code

Signature:

rateByCountry(code: string): Promise<Response>

Example:

const response = layer.rateByCountry("DE")

console.log('response:', response)

Response:

{
  success: true,
  country_code: "DE",
  country_name: "Germany",
  standard_rate: 19,
  reduced_rates: {
    "foodstuffs": 7,
    "books": 7,
    "medical": 7,
    "passenger transport": 7,
    "newspapers": 7,
    "admission to cultural events": 7,
    "admission to entertainment events": 7,
    "hotels": 7
    ...
  }
}

rateByIP

rateByIP gets the vat data by IP address

Signature:

rateByIP(ip: string): Promise<Response>

Example:

const response = layer.rateByIP("134.245.44.17")

console.log('response:', response)

Response:

{
  success: true,
  country_code: "DE",
  country_name: "Germany",
  standard_rate: 19,
  reduced_rates: {
    "foodstuffs": 7,
    "books": 7,
    "medical": 7,
    "passenger transport": 7,
    "newspapers": 7,
    "admission to cultural events": 7,
    "admission to entertainment events": 7,
    "hotels": 7
    ...
  }
}

rateByDetect

rateByDetect auto detects the users location and gets the vat data

Signature:

rateByDetect(): Promise<Response>

Example:

const response = layer.rateByDetect()

console.log('response:', response)

Response:

{
  success: true,
  country_code: "DE",
  country_name: "Germany",
  standard_rate: 19,
  reduced_rates: {
    "foodstuffs": 7,
    "books": 7,
    "medical": 7,
    "passenger transport": 7,
    "newspapers": 7,
    "admission to cultural events": 7,
    "admission to entertainment events": 7,
    "hotels": 7
    ...
  }
}

rateList

rateList returns a list of vat rates

Signature:

rateList(): Promise<Response>

Example:

const response = layer.rateList()

console.log('response:', response)

calculate

calculate calculates the vat amount based on the country code

Signature:

calculate(country_code: string, amount: number): Promise<Response>

Example:

const response = layer.calculate("GB", 125)

console.log('response:', response)

Response:

{
  country_code: "GB",
  country_name: "United Kingdom",
  price_excl_vat: 125, // price without vat
  price_incl_vat: 150, // price with vat
  vat_rate: 20 // vat amount
}

License

MIT