Quick Start Guide
Get started with vatnode in just a few minutes.
1. Create an Account
Sign in or create a free account at vatnode.dev/login. No credit card required.
2. Get Your API Key
After signing in, go to your Dashboard and create a new API key.
- Click "Create Key"
- Give it a descriptive label (e.g., "Production API Key")
- Choose the environment (live or test)
- Copy the key immediately - you won't be able to see it again!
Your API key will look like: vat_live_xxxxxxxxxxxx
3. Make Your First Request
Use your API key to validate a VAT number:
Using cURL
Terminal
curl https://api.vatnode.dev/v1/vat/IE6388047V \
-H "Authorization: Bearer vat_live_your_key_here"Using JavaScript (fetch)
JavaScript
const response = await fetch('https://api.vatnode.dev/v1/vat/IE6388047V', {
headers: {
'Authorization': 'Bearer vat_live_your_key_here'
}
});
const data = await response.json();
if (data.valid) {
console.log(`Valid VAT: ${data.companyName}`);
} else {
console.log('Invalid VAT number');
}Using Python
Python
import requests
response = requests.get(
'https://api.vatnode.dev/v1/vat/IE6388047V',
headers={'Authorization': 'Bearer vat_live_your_key_here'}
)
data = response.json()
if data['valid']:
print(f"Valid VAT: {data['companyName']}")
else:
print('Invalid VAT number')Using PHP
PHP
<?php
$ch = curl_init('https://api.vatnode.dev/v1/vat/IE6388047V');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer vat_live_your_key_here'
]);
$response = curl_exec($ch);
$data = json_decode($response, true);
if ($data['valid']) {
echo "Valid VAT: " . $data['companyName'];
} else {
echo "Invalid VAT number";
}Using Go
Go
package main
import (
"encoding/json"
"fmt"
"net/http"
"os"
)
type VatResponse struct {
Valid bool `json:"valid"`
CompanyName string `json:"companyName"`
}
func main() {
req, _ := http.NewRequest("GET", "https://api.vatnode.dev/v1/vat/IE6388047V", nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("VATNODE_API_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
var data VatResponse
json.NewDecoder(resp.Body).Decode(&data)
if data.Valid {
fmt.Println("Valid VAT:", data.CompanyName)
} else {
fmt.Println("Invalid VAT number")
}
}4. Understanding the Response
A successful validation returns:
Response
{
"valid": true,
"vatId": "IE6388047V",
"countryCode": "IE",
"countryName": "Ireland",
"companyName": "GOOGLE IRELAND LIMITED",
"companyAddress": "3RD FLOOR, GORDON HOUSE, BARROW STREET, DUBLIN 4",
"checkedAt": "2026-03-26T14:25:57.209Z",
"source": "VIES",
"checkId": "019d2a89-a5d9-7b97-b710-57b84604de2b",
"countryVat": {
"vatName": "Value Added Tax",
"vatAbbr": "VAT",
"currency": "EUR",
"standardRate": 23,
"reducedRates": [13.5, 9],
"superReducedRate": null,
"parkingRate": null,
"ratesUpdatedAt": "2026-03-27"
},
"cache": {
"hit": false,
"ttlSeconds": 900
}
}| Field | Description |
|---|---|
| valid | Whether the VAT number is valid and active |
| vatId | The normalized VAT number |
| countryCode | Two-letter EU country code |
| countryName | Full country name (e.g. "Finland") |
| companyName | Company name (may be null for some countries) |
| companyAddress | Company address (may be null for some countries) |
| checkId | Unique ID for this validation (for audit trails) |
| checkedAt | ISO timestamp of when the check was performed |
| source | Data source (always "VIES") |
| cache.hit | Whether this response came from cache |
| cache.ttlSeconds | How long until the cache expires |
5. Test VAT Numbers
Use these real VAT numbers for testing:
| VAT Number | Country | Notes |
|---|---|---|
| IE6388047V | Ireland | Returns full company details |
| LU20260743 | Luxembourg | Returns full company details |
| DE134214316 | Germany | Valid, but no name/address returned (DE limitation) |
Next Steps
- Learn about Authentication and API key management
- Explore the VAT Validation endpoint in detail
- Check VAT Rates for getting tax rates by country
- Handle Errors gracefully in your application