Tax Number Validation
Learn about required fields and additional requirements for tax number validation.
Business tax identification number validation requires Vertex Validator.
Request
To trigger a tax number validation, add a taxRegistrations object to the customer, either at the transaction level or at the transaction line items level.
| Field | Value | Notes |
|---|---|---|
customer.customerCode | The value can be an empty object {}. | This field is not required, but if present, it may affect the result. isBusinessIndicator is added only when present. The same applies to buyerRegistrationId in the response's taxes object. |
customer.customerName | The customer's name. | Some external services may reject the request or mark the tax number as invalid if the customer's name is not provided. |
customer.taxRegistrations[].isoCountryCode | The two-letter or three-letter ISO country code or name. | We recommend adding this field. If taxRegistrationNumber includes a country prefix, the country can be added and populated based on the tax number validation results. |
customer.taxRegistrations[].taxRegistrationAdditionalId | The additional identifier requested by some tax number validation services. | Currently, this field is used only to capture an additional identifier for validating Egyptian tax numbers. |
customer.taxRegistrations[].taxRegistrationNumber | The tax number to validate. | Tax registration numbers may include a country prefix. If a tax registration number does not include a country prefix, provide the isoCountryCode field as well. |
customer.taxRegistrations[].taxRegistrationType | See Calculate Tax as a Seller. | By default, the service validates only entries without this field or entries with tax registration. Vertex can change this behavior. |
customer.taxRegistrations[].validationResult.isValid | true or false | Use this field to manually mark the tax number as valid. When true, the tax number bypasses syntax and external validation. |
Response
If tax number validation is triggered, the following response fields are added or modified.
| Field | Notes |
|---|---|
data.customer.customerName | The value is overwritten with the name from validationResult.name when the tax number is valid and the validation result is used. This occurs when the registration's isoCountryCode matches customer.destination.country and the name is not blank or empty. |
data.customer.taxRegistrations[].isoCountryCode | The value may be added based on the country code determined from taxRegistrationNumber. If isoCountryCode does not match the country code determined from taxRegistrationNumber, the value is overwritten. |
data.customer.taxRegistrations[].mainDivision | The value may be added based on the country code determined from taxRegistrationNumber. If isoCountryCode does not match the country code determined from taxRegistrationNumber, the value is overwritten. |
data.customer.taxRegistrations[].validationResult | Contains details of the validation result. If this field is not present, tax number validation was not triggered. |
Here is the validationResult structure:
| Field | Notes |
|---|---|
cacheTimestamp | The timestamp of the most recent update to the tax registration number validation result from an external service, such as VIES in the European Union (EU). |
cached | When a tax registration number is validated by an external service, such as VIES in the European Union (EU), the validation result is cached and reused the next time the same registration number is submitted. This improves processing speed and reliability because external services typically respond much more slowly than the internal cache. |
isSyntaxValid | Indicates that the tax registration number passed syntax validation. |
isValid | Indicates that the tax registration number was successfully validated. |
name | The name associated with the tax registration number. Some providers do not return this information. |
taxNumberService | An identifier for the external service that validated the tax registration number. |
taxRegistrationNumberNormalized | The tax registration number in normalized form, using the expected syntax. |
validationInfo | A code that describes the outcome of tax registration number validation. |
Example
Example request:
{
"currency": {
"isoCurrencyCodeAlpha": "EUR"
},
"customer": {
"customerCode": {},
"destination": {
"country": "PL"
},
"taxRegistrations": [
{
"isoCountryCode": "PL",
"taxRegistrationNumber": "PL5272959653"
}
]
},
"deliveryTerm": "SUP",
"lineItems": [
{
"extendedPrice": 100
}
],
"saleMessageType": "QUOTATION",
"seller": {
"company": "test_seller",
"physicalOrigin": {
"country": "DE"
},
"taxRegistrations": [
{
"isoCountryCode": "PL"
}
]
},
"transactionType": "SALE"
}Example response (some parts omitted for clarity):
{
"data": {
...
"customer": {
"customerCode": {
// marked as business since there is a registration
"isBusinessIndicator": true
},
"customerName": "THG NUTRITION POLAND SPÓŁKA Z OGRANICZONĄ ODPOWIEDZIALNOŚCIĄ",
...
"taxRegistrations": [
// valid registration
{
"isoCountryCode": "PL",
"taxRegistrationNumber": "PL5272959653",
// validation details
"validationResult": {
"address": "MAGAZYNOWA 1\n55-040 MAGNICE",
"cacheTimestamp": "2026-02-20T10:39:50.1450Z",
"cached": true,
"isSyntaxValid": true,
"isValid": true,
"name": "THG NUTRITION POLAND SPÓŁKA Z OGRANICZONĄ ODPOWIEDZIALNOŚCIĄ",
"taxNumberService": "vies",
"taxRegistrationNumberNormalized": "5272959653",
"validationInfo": "TAX_NUMBER_VALID_ACCORDING_TO_EXTERNAL_SERVICE"
}
}
]
},
"deliveryTerm": "SUP",
"documentDate": "2026-02-23",
"lineItems": [
{
...
"taxes": [
...
{
// used number can be seen in the tax
// for the country
"buyerRegistrationId": "PL5272959653",
...
"jurisdiction": {
...
"jurisdictionType": "COUNTRY",
"value": "POLAND"
},
"situs": "DESTINATION",
}
],
...
}
],
...
"seller": {
...
// not validated
"taxRegistrations": [
{
"isoCountryCode": "PL",
"jurisdictionId": "0",
"taxRegistrationNumber": ""
}
]
},
...
},
...
}Updated 14 days ago
