Request a validation
Changed onThis endpoint allows you to request a validation of the Tax Identification Number. In order to do so, our system needs a country of the client (ISO code) and a tax identification number of the client.
Set prefer_cached_result to true to attempt returning a result from the Instant Lookup cache before running a new online validation. This requires the Instant Lookup product entitlement on your account.
Set max_retry_duration (in hours) to enable smart retries: Fonoa keeps retrying the validation while the government database is unavailable, for up to the given number of hours, instead of completing it with an error after the standard retry window.
Request
- Base URLhttps://api-demo.fonoa.com
- URLhttps://api-demo.fonoa.com/lookup/v2/single-validations
- AuthAPI key in header Ocp-Apim-Subscription-Key
Request body
Example request
{
"country_iso_code": "ee",
"tax_identification_number": "100070008",
"additional_parameters": {
"egypt_uin": "10000010066d9770abe966h4vk7H9oj0cd7c8a8",
"malaysia_id_type": "brn",
"malaysia_id_value": "X19510100011",
"nigeria_brn": "1234567"
},
"fuzzy_matching": {
"name": "expected taxpayer name",
"address": "expected taxpayer address"
},
"prefer_cached_result": true,
"max_retry_duration": 24
}Response
An immediate response is returned in the following cases:
- Format or checksum invalid: the TIN did not pass offline format/checksum validation, so no online lookup is performed. The response contains error_details.
- Format valid but no online check supported: the TIN passed offline format/checksum validation, but no online lookup is performed.
- Instant Lookup cache hit: when prefer_cached_result is true and a cached result is found, the validation completes immediately with validation_database_source set to fonoa_cache and includes enriched taxpayer data.
Example response
{
"validation": {
"validation_id": "b470a195-8e83-4d89-b4a7-4d389ac358a4",
"tax_identification_number": "100070008",
"country_iso_code": "cl",
"extra_fields": {
"brazil_fantasy_name": "BAR E LANCHES 111",
"canada_federal_state": "Federal",
"colombia_check_digit": "9",
"colombia_large_taxpayer": "yes",
"colombia_tin_without_check_digit": "123456789",
"egypt_uin_expiry_date": "2010-10-10",
"germany_federal_state": "Berlin",
"hungary_full_tax_identification_number": "13353298-2-44",
"india_pan_aadhaar_linked": "not_applicable",
"india_pan_specified_person": "no",
"india_trade_name": "ACME TRADE",
"japan_qualified_invoice_issuer": "yes",
"mexico_zip_code_used_for_validation": "12345",
"usa_irs_response": "TIN and Name combination does not match IRS records.",
"italy_codice_fiscale_status": "Codice Fiscale valid",
"italy_vat_split_payment": "no",
"brazil_status_detail": "Active",
"brazil_cnae_code": "6201500",
"brazil_cnae_description": "Desenvolvimento de programas de computador sob encomenda",
"brazil_secondary_cnaes": [
{
"code": "6202300",
"description": "Desenvolvimento e licenciamento de programas de computador customizaveis"
}
],
"brazil_municipality": "SAO PAULO",
"brazil_federal_state": "SP",
"brazil_neighborhood": "VILA OLIMPIA",
"brazil_company_size": "Demais",
"brazil_special_status": "Recuperacao Judicial",
"brazil_special_status_date": "2023-01-15",
"brazil_date_of_birth": "1985-03-20",
"brazil_year_of_death": "2020",
"brazil_suframa": {
"number": "123456789",
"status": "ACTIVE",
"registration_date": "2020-01-15"
},
"brazil_state_registrations": [
{
"number": "123456789",
"federal_state": "SP",
"enabled": true,
"registration_date": "2019-05-10",
"status": "NO_RESTRICTION",
"type": "IE_NORMAL"
}
],
"brazil_simples": {
"optant": "yes"
},
"company_representative_name": "John Doe",
"brazil_status_reason": "Sem motivo",
"brazil_status_date": "2019-01-01",
"brazil_address": {
"street": "RUA EXEMPLO",
"number": "123",
"additional_info": "SALA 456",
"neighborhood": "VILA OLIMPIA",
"city": "SAO PAULO",
"state": "SP",
"postal_code": "04551065",
"country": "BRASIL",
"country_code": "076",
"city_code": "7107"
},
"brazil_legal_nature_code": "206-2",
"brazil_entity_social_capital": "100000000",
"brazil_email": "contato@empresa.com.br",
"business_activities": [
{
"activity": "ACTIVIDADES DE CONSULTORIA DE INFORMATICA Y DE GESTION DE INSTALACIONE",
"code": "620200",
"category": "Primera",
"subject_to_vat": "yes",
"registration_date": "05-10-2015"
}
]
},
"additional_parameters": {
"egypt_uin": "10000010066d9770abe966h4vk7H9oj0cd7c8a8",
"malaysia_id_type": "brn",
"malaysia_id_value": "X19510100011",
"nigeria_brn": "1234567"
},
"name": "ACME CO.",
"address": "Tower A DLF Tower, 4th Floor, DLF INFINTY TOWER, Sector 25A, Gurugram, Haryana, 122002",
"registration_type": "Regular",
"registration_date": "2017-07-20",
"de_registration_date": "2017-07-20",
"tax_identification_number_name": "Système d’Identification du Répertoire des Entreprises (SIREN)",
"last_updated": "2026-03-05T08:00:00.000Z",
"country_specific": {
"fantasy_name": "Example Corp"
}
},
"validation_result_url": "https://api-demo.fonoa.com/lookup/v2/single-validations/b470a195-8e83-4d89-b4a7-4d389ac358a4"
}Changes
- breaking
removed the enum value
lv - ma - mc - mdof the request property - warning
added the new
AUTHENTICATION_ERRORenum value to the//response property for the response status - warning
added the new
AUTHENTICATION_ERRORenum value to the//response property for the response status - warning
added the new
AUTHENTICATION_ERRORenum value to the//response property for the response status - warning
added the new
BATCH_REQUEST_CANNOT_BE_EMPTYenum value to the//response property for the response status - warning
added the new
BATCH_REQUEST_CANNOT_BE_EMPTYenum value to the//response property for the response status - warning
added the new
BATCH_REQUEST_CANNOT_BE_EMPTYenum value to the//response property for the response status - warning
added the new
CANNOT_HAVE_MORE_THAN_X_RESULTSenum value to the//response property for the response status - warning
added the new
CANNOT_HAVE_MORE_THAN_X_RESULTSenum value to the//response property for the response status - warning
added the new
CANNOT_HAVE_MORE_THAN_X_RESULTSenum value to the//response property for the response status - warning
added the new
CANNOT_HAVE_MORE_THAN_X_SEARCHESenum value to the//response property for the response status - warning
added the new
CANNOT_HAVE_MORE_THAN_X_SEARCHESenum value to the//response property for the response status - warning
added the new
CANNOT_HAVE_MORE_THAN_X_SEARCHESenum value to the//response property for the response status - warning
added the new
CANNOT_HAVE_MORE_THAN_X_TINSenum value to the//response property for the response status - warning
added the new
CANNOT_HAVE_MORE_THAN_X_TINSenum value to the//response property for the response status - warning
added the new
CANNOT_HAVE_MORE_THAN_X_TINSenum value to the//response property for the response status - warning
added the new
CANNOT_HAVE_ZERO_ENTRIESenum value to the//response property for the response status - warning
added the new
CANNOT_HAVE_ZERO_ENTRIESenum value to the//response property for the response status - warning
added the new
CANNOT_HAVE_ZERO_ENTRIESenum value to the//response property for the response status - warning
added the new
CANNOT_REQUEST_MORE_THAN_X_RESULTSenum value to the//response property for the response status - warning
added the new
CANNOT_REQUEST_MORE_THAN_X_RESULTSenum value to the//response property for the response status - warning
added the new
CANNOT_REQUEST_MORE_THAN_X_RESULTSenum value to the//response property for the response status - warning
added the new
COUNTRIES_NOT_ALLOWEDenum value to the//response property for the response status - warning
added the new
COUNTRIES_NOT_ALLOWEDenum value to the//response property for the response status - warning
added the new
COUNTRIES_NOT_ALLOWEDenum value to the//response property for the response status - warning
added the new
COUNTRY_NOT_SUPPORTEDenum value to the//response property for the response status - warning
added the new
COUNTRY_NOT_SUPPORTEDenum value to the//response property for the response status - warning
added the new
COUNTRY_NOT_SUPPORTEDenum value to the//response property for the response status - warning
added the new
CSV_COLUMN_MISMATCH_ERRORenum value to the//response property for the response status - warning
added the new
CSV_COLUMN_MISMATCH_ERRORenum value to the//response property for the response status - warning
added the new
CSV_COLUMN_MISMATCH_ERRORenum value to the//response property for the response status - warning
added the new
CSV_COUNTRY_CODE_FORMAT_ERRORenum value to the//response property for the response status - warning
added the new
CSV_COUNTRY_CODE_FORMAT_ERRORenum value to the//response property for the response status - warning
added the new
CSV_COUNTRY_CODE_FORMAT_ERRORenum value to the//response property for the response status - warning
added the new
CSV_FILE_NOT_PROVIDEDenum value to the//response property for the response status - warning
added the new
CSV_FILE_NOT_PROVIDEDenum value to the//response property for the response status - warning
added the new
CSV_FILE_NOT_PROVIDEDenum value to the//response property for the response status - warning
added the new
CSV_GENERIC_PARSING_ERRORenum value to the//response property for the response status - warning
added the new
CSV_GENERIC_PARSING_ERRORenum value to the//response property for the response status - warning
added the new
CSV_GENERIC_PARSING_ERRORenum value to the//response property for the response status - warning
added the new
CURSOR_PARSING_ERRORenum value to the//response property for the response status - warning
added the new
CURSOR_PARSING_ERRORenum value to the//response property for the response status - warning
added the new
CURSOR_PARSING_ERRORenum value to the//response property for the response status - warning
added the new
DIRECT_TAX_ID_NOT_SUPPORTEDenum value to the//response property for the response status - warning
added the new
DIRECT_TAX_ID_NOT_SUPPORTEDenum value to the//response property for the response status - warning
added the new
DIRECT_TAX_ID_NOT_SUPPORTEDenum value to the//response property for the response status - warning
added the new
INTERNAL_ERRORenum value to the//response property for the response status - warning
added the new
INTERNAL_ERRORenum value to the//response property for the response status - warning
added the new
INTERNAL_ERRORenum value to the//response property for the response status - warning
added the new
INVALID_FIELD_FORMATenum value to the//response property for the response status - warning
added the new
INVALID_FIELD_FORMATenum value to the//response property for the response status - warning
added the new
INVALID_FIELD_FORMATenum value to the//response property for the response status - warning
added the new
INVALID_ID_ERRORenum value to the//response property for the response status - warning
added the new
INVALID_ID_ERRORenum value to the//response property for the response status - warning
added the new
INVALID_ID_ERRORenum value to the//response property for the response status - warning
added the new
INVALID_MIME_ONLY_FORM_DATA_IS_VALIDenum value to the//response property for the response status - warning
added the new
INVALID_MIME_ONLY_FORM_DATA_IS_VALIDenum value to the//response property for the response status - warning
added the new
INVALID_MIME_ONLY_FORM_DATA_IS_VALIDenum value to the//response property for the response status - warning
added the new
INVALID_MIME_ONLY_JSON_IS_VALIDenum value to the//response property for the response status - warning
added the new
INVALID_MIME_ONLY_JSON_IS_VALIDenum value to the//response property for the response status - warning
added the new
INVALID_MIME_ONLY_JSON_IS_VALIDenum value to the//response property for the response status - warning
added the new
INVALID_REQUESTenum value to the//response property for the response status - warning
added the new
INVALID_REQUESTenum value to the//response property for the response status - warning
added the new
INVALID_REQUESTenum value to the//response property for the response status - warning
added the new
INVALID_VALIDATION_DATABASE_SOURCEenum value to the//response property for the response status - warning
added the new
INVALID_VALIDATION_DATABASE_SOURCEenum value to the//response property for the response status - warning
added the new
INVALID_VALIDATION_DATABASE_SOURCEenum value to the//response property for the response status - warning
added the new
MISSING_QUERY_OR_COUNTRY_ISO_CODEenum value to the//response property for the response status - warning
added the new
MISSING_QUERY_OR_COUNTRY_ISO_CODEenum value to the//response property for the response status - warning
added the new
MISSING_QUERY_OR_COUNTRY_ISO_CODEenum value to the//response property for the response status - warning
added the new
MISSING_TAX_IDENTIFICATION_NUMBER_OR_COUNTRY_ISO_CODEenum value to the//response property for the response status - warning
added the new
MISSING_TAX_IDENTIFICATION_NUMBER_OR_COUNTRY_ISO_CODEenum value to the//response property for the response status - warning
added the new
MISSING_TAX_IDENTIFICATION_NUMBER_OR_COUNTRY_ISO_CODEenum value to the//response property for the response status - warning
added the new
NO_BATCH_FOUNDenum value to the//response property for the response status - warning
added the new
NO_BATCH_FOUNDenum value to the//response property for the response status - warning
added the new
NO_BATCH_FOUNDenum value to the//response property for the response status - warning
added the new
NO_VALIDATION_FOUNDenum value to the//response property for the response status - warning
added the new
NO_VALIDATION_FOUNDenum value to the//response property for the response status - warning
added the new
NO_VALIDATION_FOUNDenum value to the//response property for the response status - warning
added the new
TAX_IDENTIFICATION_NUMBER_TYPE_NOT_SUPPORTEDenum value to the//response property for the response status - warning
added the new
TAX_IDENTIFICATION_NUMBER_TYPE_NOT_SUPPORTEDenum value to the//response property for the response status - warning
added the new
TAX_IDENTIFICATION_NUMBER_TYPE_NOT_SUPPORTEDenum value to the//response property for the response status - warning
added the new
TIN_SEARCH_NOT_FOUNDenum value to the//response property for the response status - warning
added the new
TIN_SEARCH_NOT_FOUNDenum value to the//response property for the response status - warning
added the new
TIN_SEARCH_NOT_FOUNDenum value to the//response property for the response status - warning
added the new
TIN_SEARCH_NOT_SUPPORTED_FOR_SUBSCRIPTIONenum value to the//response property for the response status - warning
added the new
TIN_SEARCH_NOT_SUPPORTED_FOR_SUBSCRIPTIONenum value to the//response property for the response status - warning
added the new
TIN_SEARCH_NOT_SUPPORTED_FOR_SUBSCRIPTIONenum value to the//response property for the response status - warning
added the new
TIN_SEARCH_QUERY_LENGTH_INVALIDenum value to the//response property for the response status - warning
added the new
TIN_SEARCH_QUERY_LENGTH_INVALIDenum value to the//response property for the response status - warning
added the new
TIN_SEARCH_QUERY_LENGTH_INVALIDenum value to the//response property for the response status - warning
added the new
TIN_SEARCH_WORD_COUNT_INVALIDenum value to the//response property for the response status - warning
added the new
TIN_SEARCH_WORD_COUNT_INVALIDenum value to the//response property for the response status - warning
added the new
TIN_SEARCH_WORD_COUNT_INVALIDenum value to the//response property for the response status - warning
added the new
UNSUPPORTED_CSV_COLUMNSenum value to the//response property for the response status - warning
added the new
UNSUPPORTED_CSV_COLUMNSenum value to the//response property for the response status - warning
added the new
UNSUPPORTED_CSV_COLUMNSenum value to the//response property for the response status - warning
added the new
UNSUPPORTED_PARAMETER_ERRORenum value to the//response property for the response status - warning
added the new
UNSUPPORTED_PARAMETER_ERRORenum value to the//response property for the response status - warning
added the new
UNSUPPORTED_PARAMETER_ERRORenum value to the//response property for the response status - warning
added the new
US_BOTH_FIRST_LAST_NAME_REQUIREDenum value to the//response property for the response status - warning
added the new
US_BOTH_FIRST_LAST_NAME_REQUIREDenum value to the//response property for the response status - warning
added the new
US_BOTH_FIRST_LAST_NAME_REQUIREDenum value to the//response property for the response status - warning
added the new
US_UNSUPPORTED_PARAMETER_FOR_BUSINESSenum value to the//response property for the response status - warning
added the new
US_UNSUPPORTED_PARAMETER_FOR_BUSINESSenum value to the//response property for the response status - warning
added the new
US_UNSUPPORTED_PARAMETER_FOR_BUSINESSenum value to the//response property for the response status - warning
added the new
US_UNSUPPORTED_PARAMETER_FOR_INDIVIDUALenum value to the//response property for the response status - warning
added the new
US_UNSUPPORTED_PARAMETER_FOR_INDIVIDUALenum value to the//response property for the response status - warning
added the new
US_UNSUPPORTED_PARAMETER_FOR_INDIVIDUALenum value to the//response property for the response status - warning
added the new
VALIDATIONS_AMOUNT_EXCEEDEDenum value to the//response property for the response status - warning
added the new
VALIDATIONS_AMOUNT_EXCEEDEDenum value to the//response property for the response status - warning
added the new
VALIDATIONS_AMOUNT_EXCEEDEDenum value to the//response property for the response status - warning
added the new
VALIDATION_SOURCE_NOT_SUPPORTED_FOR_COUNTRYenum value to the//response property for the response status - warning
added the new
VALIDATION_SOURCE_NOT_SUPPORTED_FOR_COUNTRYenum value to the//response property for the response status - warning
added the new
VALIDATION_SOURCE_NOT_SUPPORTED_FOR_COUNTRYenum value to the//response property for the response status - info
added the new optional request property
- info
added the new
imenum value to the request property - info
added the new
lvenum value to the request property - info
added the new
maenum value to the request property - info
added the new
mcenum value to the request property - info
added the new
mdenum value to the request property - info
added the new
ncenum value to the request property - info
added the new
reenum value to the request property - info
added the media type
application/jsonfor the response with the status
- breaking