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/dashboard. No credit card required.
2. Get Your API Key
Go to Dashboard > API Keys. You'll see two sections:
- Test Key — created automatically when you signed up. Use it with
XXfixture VAT numbers during development. - Live Keys — click Create Key, enter a label (e.g. "Production"), and copy the key immediately. It is shown only once.
Live keys look like vat_live_xxxxxxxxxxxx, test keys like vat_test_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",
"companyRegistrationDate": null,
"companyForm": null,
"industryDescription": null,
"registryCode": null,
"registryCodeName": null,
"verifiedAt": "2026-03-26T14:25:57.209Z",
"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,
"vatNumberFormat": "IE + 7 digits + 1–2 letters",
"vatNumberPattern": "^IE\d{7}[A-W][A-IW]?$|^IE\d[A-Z+*]\d{5}[A-W]$",
"countryVatUpdatedAt": "2026-03-27"
},
}| 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) |
| companyRegistrationDate | Registration date from national registry (ISO 8601 date, or null) |
| companyForm | Legal form (e.g. "GmbH", "AB", "SAS"), or null |
| industryDescription | Business activity description from national registry, or null |
| registryCode | National company registry identifier (e.g. Y-tunnus, SIREN, CVR), or null |
| registryCodeName | Name of the registry identifier type (e.g. "Y-tunnus", "SIREN"), or null |
| checkId | Unique ID for this validation (for audit trails) |
| verifiedAt | ISO timestamp of when the check was performed |
5. Test VAT Numbers
Use test mode with your vat_test_ key and XX fixture numbers for integration testing. If you want to verify live behaviour with real VIES responses, these known-good VAT numbers work with your live key:
| 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