tax_residence_country, not on the customer’s address or nationality. Match the format below and the TIN passes on the first attempt.
The check runs on two endpoints:
POST /api/customers/{id}/identifications/v2with aPersonsubmission. See Create Customer Identification.PATCH /api/customers/{id}/identification-data, used to backfill a TIN on an existing customer. See Update Customer Identification Data.
Beneficiary TINs on a
Business submission aren’t checked against this table.Tax residence country
Sendtax_residence_country as an ISO 3166-1 alpha-2 code (DE, US) whenever you send tax_identification_number.
- On a
Personsubmission, you can omit it only whenidentity.identity_country_codeisUS. The TIN is then checked against the US format. - On
PATCH /api/customers/{id}/identification-data, it’s always required with a TIN.
Formatting rules
- Whitespace is ignored. Spaces anywhere in the value, including between groups of digits, are removed before the check.
- Separators are accepted. Dashes (
-), periods (.), and slashes (/) used between groups pass, so a US SSN like123-45-6789is accepted the same as123456789. - Finland is the exception. The century marker is part of the format, so
010101-123Apasses and0101011234fails. See the table below. - Letters are case-insensitive. Wherever a format allows a letter, upper and lower case both pass.
Country formats
Other countries
For atax_residence_country not in the table, the TIN must:
- Contain only letters, digits,
+, and-(plus the whitespace and separators from Formatting rules) - Include 4-20 digits. Letters and punctuation don’t count toward that total.
Errors
A TIN that doesn’t match the format returns400. The message names the country and an example of the expected format.
On a Person submission under X-API-Version: 2026-08-01 or later, the error code is invalid_request:
PATCH /api/customers/{id}/identification-data, return the same message as a plain string:
tax_residence_country returns tin_required on a Person submission, and this plain string on PATCH /api/customers/{id}/identification-data:
Run the same format check in your own UI before you submit. Your customer fixes a typo on the spot instead of your integration handling a
400.