Skip to main content
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

1

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.
2

Review and approve

Your finance team reviews the amounts and line items, then approves each filing for submission.
3

Cadana submits

Cadana submits the filing to the relevant government authority (SAT, IMSS, INFONAVIT, etc.).
4

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 submittedaccepted. 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)
StatusDescription
pendingCreated with amounts, ready for review
in_reviewValidated and ready for approval
approvedQueued for submission to government authority
submittedSent to the authority
acceptedAuthority acknowledged receipt
blockedMissing data prevents submission — returns to pending when data is updated
rejectedAuthority rejected the filing — returns to pending for correction

Next Steps