Reference
VAT numbers, country by country
Every country served here has a format of its own and a register of its own. These pages explain each one: how the number is built, which national identifier it hides, and what it takes to reach the company behind it.
What a business tax number is
In the Union it is the VAT identification number, issued by a member state's tax administration to a business that trades across EU borders. It is what makes a reverse-charge invoice possible: supply a valid number and your supplier invoices you without VAT, which is why checking a customer's number is not paperwork but the condition of the exemption. Elsewhere it is whatever number identifies a business on its invoices: an ABN in Australia, a CNPJ in Brazil, a UEN in Singapore, an invoice registration number in Japan. Each of them is served here the same way, from the same endpoint and with the same response.
Every number starts with a two-letter prefix, the ISO country code, with two exceptions:
Greece is written EL rather than GR, and Northern Ireland keeps
its own prefix, XI, since Brexit.
The VAT number is rarely the company number. In Belgium and Denmark they are the same digits; in France the VAT number is derived from the SIREN; in Germany, Ireland and Spain the tax administration assigns something entirely separate. That single fact is what makes cross-border company lookup hard.
Format, country by country
| Country | Prefix | Format |
|---|---|---|
| Australia | AU | AU + 11 digits (ABN) |
| Austria | AT | ATU + 8 digits |
| Belgium | BE | BE + 10 digits |
| Brazil | BR | BR + 14 digits (CNPJ) |
| Bulgaria | BG | BG + 9 or 10 digits |
| Canada | CA | CA + 9 digits (business number, RT0001 on the invoice) |
| Costa Rica | CR | CR + 10 digits (cédula jurídica) |
| Croatia | HR | HR + 11 digits |
| Cyprus | CY | CY + 8 digits + 1 letter |
| Czechia | CZ | CZ + 8 to 10 digits |
| Ecuador | EC | EC + 13 digits (RUC, establishment included) |
| Denmark | DK | DK + 8 digits |
| Estonia | EE | EE + 9 digits |
| Finland | FI | FI + 8 digits |
| France | FR | FR + 2 characters + 9 digits |
| Germany | DE | DE + 9 digits |
| Greece | EL | EL + 9 digits |
| Greenland | GL | GL + 8 digits (CVR number, no VAT) |
| Hungary | HU | HU + 8 digits |
| Ireland | IE | IE + 8 or 9 characters |
| Israel | IL | IL + 9 digits (company number) |
| Italy | IT | IT + 11 digits |
| Japan | JP | JPT + 13 digits (invoice registration number) |
| Latvia | LV | LV + 11 digits |
| Lithuania | LT | LT + 9 or 12 digits |
| Luxembourg | LU | LU + 8 digits |
| Malta | MT | MT + 8 digits |
| Netherlands | NL | NL + 9 digits + B + 2 digits |
| New Zealand | NZ | NZ + 13 digits (NZBN) |
| Nigeria | NG | NG + 10 digits (TIN; the older form is 8 + 4) |
| Northern Ireland | XI | XI + 9 or 12 digits |
| Norway | NO | NO + 9 digits + MVA (organisasjonsnummer) |
| Peru | PE | PE + 11 digits (RUC) |
| Poland | PL | PL + 10 digits |
| Portugal | PT | PT + 9 digits |
| Romania | RO | RO + 2 to 10 digits |
| Russia | RU | RU + 10 digits (ИНН; 12 for a sole trader) |
| Singapore | SG | SG + 9 or 10 characters (UEN) |
| Slovakia | SK | SK + 10 digits |
| Slovenia | SI | SI + 8 digits |
| Spain | ES | ES + 9 characters |
| Sweden | SE | SE + 12 digits |
| Switzerland | CHE | CHE + 9 digits + MWST/TVA/IVA (UID) |
| Taiwan | TW | TW + 8 digits (Unified Business Number) |
| Ukraine | UA | UA + 8 digits (ЄДРПОУ; the 12-digit ІПН reduces to it) |
| Vietnam | VN | VN + 10 digits (mã số thuế; 13 for a branch) |
The format is the syntax only. A well-formed number is not necessarily an assigned one, and an assigned one is not necessarily registered for the tax: in the Union, registration for intra-community trade is a separate question from the number existing, and outside it only Japan's register answers it: being in that file is what makes an invoice deductible. An ABN, a CNPJ, a UEN or a 統一編號 identify a business; whether it charges the tax is something else. Each page says how far its register goes, including where it stops, as in Costa Rica, which publishes a name and a status and no address at all.
Where the data comes from
There are two kinds of source, and the difference matters more than it looks:
- National open data. France, Estonia, Latvia, Finland and Belgium publish their whole register for free, and so do Brazil, Japan, Australia, Singapore and Peru. The catch is never the licence, it is whether a row can be reached by a VAT number. Ireland publishes its entire company register daily and it is useless here, because the Irish VAT number is assigned by Revenue and cannot be derived from the CRO number.
- A national API. Poland, Czechia, Romania, Greece, Costa Rica, Israel and Taiwan answer one number at a time, for free, each with its own protocol, its own rate limit and, sometimes, its own account. The Commission's VIES is one of these, no more and no less; it happens to be the one that answers whether a number is registered for intra-community trade, which no register does. Germany and Spain disclose nothing beyond that, which is why Germany is read from the Peppol e-invoicing directory instead, which is keyed by the VAT number.
One API for every country on this page
Vatlas resolves a business tax number (a VAT number, an ABN, a CNPJ, an invoice
registration number or a UEN) to a company record: legal name, national identifier, legal
form, status and address. Which register answered is a detail in meta, not
something your code has to branch on.
curl "https://api.vatlas.dev/v1/lookup/IT00743110157" \
-H "Authorization: Bearer $VATLAS_KEY"
Response:
200 OK
{
"data": {
"vatNumber": "IT00743110157",
"countryCode": "IT",
"nationalNumber": "00743110157",
"nationalId": null,
"name": "MOTOROLA SOLUTIONS ITALIA SRL",
"legalForm": null,
"status": "active",
"address": {
"line1": "LARGO FRANCESCO RICHINI 6",
"line2": null,
"postalCode": "20122",
"city": "MILANO",
"country": "IT"
}
},
"meta": {
"source": "VIES",
"sourceDate": "2026-09-15",
"sourceSince": "2026-09-15",
"sourceUpdatedAt": null,
"proof": {
"type": "vies_consultation_number",
"value": "WAPIAAAAaCkPv-vh"
}
}
}
Free to try. An email address is all it takes to create an account, with 100 requests a month and a working key in about a minute.
Get a free key Read the documentation
Guides
Last updated 15 September 2026.