curl --request GET \
--url https://api.cadanapay.com/v1/statutory/jurisdictions/{country_code}/required-fields \
--header 'Authorization: Bearer <token>'{
"country_code": "MX",
"worker_type": "employee",
"version": 3,
"fields": [
{
"key": "marital_status",
"name": "Marital Status",
"description": "Used for tax deduction eligibility under LISR",
"path": "taxProfile.maritalStatus",
"type": "string",
"enum": [
"single",
"married",
"divorced",
"widowed"
],
"required": true,
"scope": [
"calculation"
]
},
{
"key": "tax_id",
"name": "RFC (Registro Federal de Contribuyentes)",
"description": "SAT-issued RFC, required on all ISR withholding returns",
"path": "taxId",
"type": "string",
"pattern": "^[A-Z&Ñ]{4}\\d{6}[A-Z0-9]{3}$",
"required": true,
"scope": [
"calculation",
"filing"
]
},
{
"key": "national_id",
"name": "CURP (Clave Única de Registro de Población)",
"description": "National population registry 18-character ID",
"path": "nationalId",
"type": "string",
"pattern": "^[A-Z]{4}\\d{6}[HM][A-Z]{5}[A-Z0-9]{2}$",
"required": true,
"scope": [
"filing"
]
},
{
"key": "imss_number",
"name": "IMSS Social Security Number (NSS)",
"description": "NSS from IMSS for social security contributions",
"path": "socialSecurityId",
"type": "string",
"required": false,
"scope": [
"filing"
],
"condition": {
"field": "is_imss_eligible",
"equals": true
}
}
]
}Returns the person fields required for tax calculation and/or statutory
filing in this jurisdiction. This is a discovery endpoint — it tells
you what data the Persons Service (/v1/persons) needs to have populated.
Each field includes:
scope — Whether the field is needed for calculation (tax engine input),
filing (statutory return), or bothpath — The dot-path on the Person aggregate where this data lives
(e.g. taxId, taxProfile.maritalStatus)condition — When present, the field only applies if another field
matches a specific value (e.g. pension PIN only when is_pensionable is true)This response shape aligns with the existing Tax Calculator fields API
(GET /v1/tax/fields), making it easy to build a single onboarding form
that covers both calculation and filing needs.
Use this to:
worker_data requirements will surface if fields are missingThe actual data is stored on the Person — update it via
PUT /v1/persons/{id}/personalInfo or the taxProfile field.
curl --request GET \
--url https://api.cadanapay.com/v1/statutory/jurisdictions/{country_code}/required-fields \
--header 'Authorization: Bearer <token>'{
"country_code": "MX",
"worker_type": "employee",
"version": 3,
"fields": [
{
"key": "marital_status",
"name": "Marital Status",
"description": "Used for tax deduction eligibility under LISR",
"path": "taxProfile.maritalStatus",
"type": "string",
"enum": [
"single",
"married",
"divorced",
"widowed"
],
"required": true,
"scope": [
"calculation"
]
},
{
"key": "tax_id",
"name": "RFC (Registro Federal de Contribuyentes)",
"description": "SAT-issued RFC, required on all ISR withholding returns",
"path": "taxId",
"type": "string",
"pattern": "^[A-Z&Ñ]{4}\\d{6}[A-Z0-9]{3}$",
"required": true,
"scope": [
"calculation",
"filing"
]
},
{
"key": "national_id",
"name": "CURP (Clave Única de Registro de Población)",
"description": "National population registry 18-character ID",
"path": "nationalId",
"type": "string",
"pattern": "^[A-Z]{4}\\d{6}[HM][A-Z]{5}[A-Z0-9]{2}$",
"required": true,
"scope": [
"filing"
]
},
{
"key": "imss_number",
"name": "IMSS Social Security Number (NSS)",
"description": "NSS from IMSS for social security contributions",
"path": "socialSecurityId",
"type": "string",
"required": false,
"scope": [
"filing"
],
"condition": {
"field": "is_imss_eligible",
"equals": true
}
}
]
}Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
ISO 3166-1 alpha-2 country code
^[A-Z]{2}$Filter fields by worker type
employee, contractor Filter fields by scope — "calculation" for tax engine inputs, "filing" for statutory return fields. Omit to return all fields.
calculation, filing Required fields with scope, type, and person aggregate path
Flat list of fields required for tax calculation and/or statutory filing in a jurisdiction. Each field includes its scope (calculation, filing, or both), its path on the Person aggregate, and validation rules.
The response shape aligns with the Tax Calculator fields API
(GET /v1/tax/fields). Clients can use both interchangeably or merge
them into a single onboarding form.
"MX"
employee, contractor "employee"
Schema version number, per jurisdiction. Increments when fields are added, removed, or changed for this country. Use this to detect when your cached field list is stale.
3
Show child attributes