Skip to main content

Supported Countries

Vatly validates VAT and GST numbers for 32 countries - all EU member states, the United Kingdom (including Northern Ireland via the XI prefix), Switzerland, Liechtenstein, Norway, and Australia.
You can also retrieve current VAT rates for all supported countries via the VAT Rates API. Free and unlimited.

Country codes

CodeCountryUpstream
ATAustriaVIES
BEBelgiumVIES
BGBulgariaVIES
CHSwitzerlandBFS UID Register
CYCyprusVIES
CZCzech RepublicVIES
DEGermanyVIES
DKDenmarkVIES
EEEstoniaVIES
ELGreeceVIES
ESSpainVIES
FIFinlandVIES
FRFranceVIES
GBUnited KingdomHMRC
HRCroatiaVIES
HUHungaryVIES
IEIrelandVIES
ITItalyVIES
LILiechtensteinBFS UID Register
LTLithuaniaVIES
LULuxembourgVIES
LVLatviaVIES
MTMaltaVIES
NLNetherlandsVIES
NONorwayBronnysund Register Centre
AUAustraliaABR (Australian Business Register)
PLPolandVIES
PTPortugalVIES
RORomaniaVIES
SESwedenVIES
SISloveniaVIES
SKSlovakiaVIES
XINorthern IrelandVIES

Routing

  • EU countries (including XI) are validated via the VIES service
  • GB is validated via the HMRC API
  • CH and LI are validated via the BFS UID Register (Swiss Federal Statistical Office). Liechtenstein shares a VAT territory with Switzerland and uses the same BFS API
  • NO is validated via the Bronnysund Register Centre (Enhetsregisteret)
  • AU is validated via the ABR (Australian Business Register). Checks GST registration status via ABN lookup

Input normalization

The API automatically normalizes VAT numbers before validation:
  • Uppercase: nl123456789b01 becomes NL123456789B01
  • Strip spaces: NL 123 456 789 B01 becomes NL123456789B01
  • Strip dots: NL123.456.789.B01 becomes NL123456789B01
  • Strip hyphens: NL-123456789-B01 becomes NL123456789B01
You can pass messy input and the API handles the rest.
Greece uses EL as its country code (not GR). This follows the EU VIES convention.

Format details

Switzerland (CH) and Liechtenstein (LI)

Swiss UID format: CHE-NNN.NNN.NNN followed by a MWST, TVA, or IVA suffix (depending on language region). Example: CHE-123.456.789 MWST. The API normalizes this to CHE123456789MWST. The last digit of the 9-digit UID number is a MOD11 checksum. The API validates this checksum before calling the BFS upstream. Liechtenstein uses the same format and the same BFS API as Switzerland.

Norway (NO)

Norwegian format: NO followed by 9 digits and the MVA suffix. Example: NO123456785MVA. The last digit of the 9-digit organization number is a MOD11 checksum. The API validates this checksum before calling the Bronnysund upstream.

Australia (AU)

Australian ABN (Australian Business Number) format: AU followed by 11 digits. Example: AU51824753556. The ABN has a weighted checksum algorithm that the API validates before calling the ABR upstream. You can also pass the ABN prefix (e.g., ABN51824753556) and it will be normalized to AU51824753556.

Consultation numbers with requester_vat_number

Pass your own VAT number as the requester_vat_number query parameter to receive a consultation number for audit-proof tax compliance workflows. This works for both EU (VIES) and UK (HMRC) validations. EU example: EU requester for an EU target:
curl -H "Authorization: Bearer vtly_live_your_api_key" \
  "https://api.vatly.dev/v1/validate?vat_number=NL123456789B01&requester_vat_number=DE987654321"
UK example: UK requester for a UK target:
curl -H "Authorization: Bearer vtly_live_your_api_key" \
  "https://api.vatly.dev/v1/validate?vat_number=GB123456789&requester_vat_number=GB987654321"
The consultation number appears in data.consultation_number:
{
  "data": {
    "valid": true,
    "vat_number": "NL123456789B01",
    "consultation_number": "WAPIAAAAA1BBB2",
    "..."
  }
}
For EU targets, the requester must be an EU VAT number. For UK targets, the requester must be a UK VAT number. Cross-system requests (e.g. EU requester for UK target) silently omit consultation_number.
Consultation numbers are not available for CH, LI, NO, or AU validations. The BFS UID Register, Bronnysund Register Centre, and ABR do not support consultation number issuance.