Cadana prepares and submits statutory returns to government authorities on your behalf. You create filings from payroll runs (or provide amounts directly), review and approve them, and Cadana handles submission and tracks acceptance.
How It Works
Create filings
After payroll closes, batch-create all required filings for the period. Cadana determines the applicable filing types based on country, business registrations, and employee profiles.
Review and approve
Your finance team reviews the amounts and line items, then approves each filing for submission.
Cadana submits
Cadana submits the filing to the relevant government authority (SAT, IMSS, INFONAVIT, etc.).
Authority accepts
The authority confirms receipt. Download the acknowledgement document for your records.
Step 1: Create Filings
From a Cadana Payroll Run
Create all required filings for a period in a single call by referencing a completed payroll run:
Response:
{
"data": [
{
"id": "fil_01JKL",
"filingTypeId": "ft_mx_isr_monthly",
"filingTypeName": "ISR Withholding",
"authorityName": "SAT",
"status": "pending",
"dueAt": "2026-03-17",
"amounts": { "currency": "MXN", "totalTax": 82345.00, "employerContributions": 0, "employeeDeductions": 82345.00 }
},
{
"id": "fil_02MNO",
"filingTypeId": "ft_mx_imss_bimonthly",
"filingTypeName": "IMSS Contributions",
"authorityName": "IMSS",
"status": "pending",
"dueAt": "2026-03-17",
"amounts": { "currency": "MXN", "totalTax": 45123.00, "employerContributions": 45123.00, "employeeDeductions": 0 }
}
]
}
From an External Payroll System
If you run payroll outside Cadana, provide the filing details explicitly:
Use payrollRunIds when Cadana runs your payroll, or filings when you calculate externally. Both follow the same approve-submit-accept cycle after creation.
Inspect Filing Detail
Each filing contains a full breakdown of amounts and line items:
Response:
{
"id": "fil_01JKL",
"businessId": "biz_01ABC",
"filingTypeId": "ft_mx_isr_monthly",
"filingTypeName": "ISR Withholding",
"authorityId": "auth_mx_sat",
"authorityName": "SAT",
"countryCode": "MX",
"period": { "start": "2026-02-01", "end": "2026-02-28", "label": "February 2026" },
"status": "pending",
"dueAt": "2026-03-17",
"amounts": { "currency": "MXN", "totalTax": 82345.00, "employerContributions": 0, "employeeDeductions": 82345.00 },
"lineItems": [
{
"description": "ISR withholding - monthly table",
"amount": 68902.00
},
{
"description": "ISR withholding - subsidy adjustment",
"amount": -6557.00
}
],
"payrollRunIds": ["pr_01MNO"],
"createdAt": "2026-03-01T08:00:00Z"
}
Step 2: Review and Approve
Before Cadana submits a filing, it must be approved. This gives your finance team a chance to review the amounts.
The endpoint returns 204 No Content on success. Fetch the filing to see the updated status:
Response:
{
"id": "fil_01JKL",
"filingTypeId": "ft_mx_isr_monthly",
"filingTypeName": "ISR Withholding",
"authorityName": "SAT",
"status": "approved",
"dueAt": "2026-03-17",
"amounts": { "currency": "MXN", "totalTax": 82345.00, "employerContributions": 0, "employeeDeductions": 82345.00 },
"statusHistory": [
{ "from": "in_review", "to": "approved", "timestamp": "2026-03-05T14:30:00Z" }
]
}
A filing must be in in_review status before it can be approved. Once approved, the filing is queued for submission. Review amounts carefully before approving — reversals require contacting the tax authority directly.
Step 3: Submission and Acceptance
After approval, Cadana submits the filing to the authority. The status transitions through submitted → accepted. Poll the filing or listen for the filing.accepted webhook event:
{
"id": "fil_01JKL",
"filingTypeId": "ft_mx_isr_monthly",
"filingTypeName": "ISR Withholding",
"authorityName": "SAT",
"status": "accepted",
"submittedAt": "2026-03-05T15:00:00Z",
"acceptedAt": "2026-03-05T15:02:30Z",
"document": {
"type": "acknowledgement",
"url": "https://api.cadanapay.com/v1/statutory/filings/fil_01JKL/document",
"description": "SAT electronic acknowledgement of receipt"
}
}
Filing Lifecycle
pending → in_review → approved → submitted → accepted
| | |
v v v
blocked blocked rejected
| | |
v v v
pending pending pending (retry)
| Status | Description |
|---|
pending | Created with amounts, ready for review |
in_review | Validated and ready for approval |
approved | Queued for submission to government authority |
submitted | Sent to the authority |
accepted | Authority acknowledged receipt |
blocked | Missing data prevents submission — returns to pending when data is updated |
rejected | Authority rejected the filing — returns to pending for correction |
Next Steps