Tax ID Validation

The Tax ID Pro API makes it easy to validate tax ID numbers for over 100 countries. The API returns JSON-encoded responses, and uses standard HTTP response codes. There are several ways to authenticate your request, read our Authentication guide to learn more.


Request

Validation requests include query parameters for country (two-letter country code), type (tax ID type, optional), and tin (tax id number). Learn more about the query parameters further down the page. Below is a request for a German individual tax ID number (Steuernummer).

GET https://v3.api.taxid.pro/validate
?country=au
&tin=92873837267
&type=vat

Valid Response

The response includes a JSON-encoded body with several properties that provide helpful information about the validation. The is_valid property will be true when the tax id number is valid, and the message propery will be null. To learn more about the other properties, read the response guide below.

HTTP/1.1 200 OK
{
  "is_valid": true,
  "message": null,
  "tin_compact": "92873837267",
  "tin_standard": "92 873 837 267",
  "country_name": "Australia",
  "format_name": "Business Number"
}


Invalid Response

There are several reasons a tax ID number may be invalid. It may be too long or too short. It may not pass a checksum test. It may have letters or numbers in the wrong place. Whatever the reason, the response will attempt to provide guidance to address the problems. The is_valid property will be false and the message propery will provide the guidance.

The message will be in English by default. You can specify a locale or set the locale to auto to automatically use the language most appropriate for the country. Read about the optional query parameters further down the page.

HTTP/1.1 200 OK
{
  "is_valid": false,
  "message": "Input is too short.",
  "tin_compact": null,
  "tin_standard": null,
  "country_name": "Australia",
  "format_name": null
}


Error Response

If there is an issue with the request itself, rather than the tax ID number, the response will come with an HTTP status code of 4XX or 5XX and any additional information will be included in the detail property. In the example below, a request was made with no tax ID number.

HTTP/1.1 400 Bad Request
{
  "detail": "Please provide a tax ID number."
}


Query Parameters

country string required

A two-letter country code, as defined in the ISO standard. If you need to use IRS country codes, see the is_irs query parameter below.

tin string required

The tax ID Number. It may contain numbers, letters (uppercase or lowercase), dots, dashes, or slashes. Separators that are not standard for the tax ID format being tested will trigger an invalid response. For example, a U.S. EIN typically uses a dash after the first two digits. Valid input can include this dash, or no dash, and both versions will be valid. However, if if extra dashes are used, or dashes were put in the wrong place, or dots were used instead of dashes, the response will be invalid because the separators aren't appropriate for the format. Experiment with this on our home page.

type string optional

This parameter is optional, but recommended. Specify individual, entity, or vat. Exclude this parameter to test all available types for a given country. Some caveats to keep in mind if you do not specify a type:

  • The result will be valid if any format is valid.
  • The result will only be invalid if all formats are invalid.
  • Guidance provided in the message property may be less specific.

For example, there are three types of tax ID numbers in Germany, one for individuals, one for entities, and one for vat numbers. If your tax ID number is a valid Steuernummer, and you do not specify a type, the validator will test all three formats available, and the response will be valid: true because it was valid for one of the three types tested. We recommend experimenting with this setting to ensure you are getting the behavior you are expecting.


locale string optional default: en

The locale parameter determines the language of the message property in the response. Messages are in English by default. If you specify auto, the most appropriate language for the country will be used. Otherwise, the locale can manually be set using a IETF language tag.
  • auto (Most appropriate language)
  • nl (Dutch)
  • en (English, default)
  • fr (French)
  • de (German)
  • it (Italian)
  • jp (Japanese)
  • ru (Russian)
  • es (Spanish)

is_irs boolean optional default: false

If you are using IRS country codes instead of ISO country codes, set is_irs to true.

api_key string optional

You may choose to provide your API key as a query parameter instead of as an Authorization header. Learn more about authenticating your requests and keeping your API key secure.

Let's Validate

Enter your email address to get started.