Payroll (Nómina / Type N)

Issue a CFDI type N with Complemento de Nómina 1.2 to document a payroll disbursement. Use the same single endpoint as all other invoice types.

POST /v1/issued-invoices

Example

{
  "entity_id": "9b1c0e2a-4d3f-4a1b-8c2d-1e2f3a4b5c6d",
  "type":      "N",
  "series":    "N",
  "folio":     "42",
  "issuer": {
    "fiscal_regime":  "601",
    "place_of_issue": "06600"
  },
  "employee": {
    "rfc":                     "GOHJ800101AA1",
    "name":                    "JUAN GOMEZ HERNANDEZ",
    "postal_code":             "06600",
    "curp":                    "GOHJ800101HDFMRN02",
    "social_security_number":  "12345678901",
    "start_date":              "2020-01-15",
    "seniority":               "P6Y5M",
    "contract_type":           "01",
    "regime_type":             "02",
    "employee_number":         "EMP-001",
    "department":              "Engineering",
    "position":                "Software Engineer",
    "risk":                    "1",
    "payment_periodicity":     "04",
    "base_salary":             600.00,
    "integrated_daily_salary": 720.00,
    "state":                   "DF"
  },
  "payroll": {
    "type":         "O",
    "paid_at":      "2026-07-01",
    "period_start": "2026-06-16",
    "period_end":   "2026-06-30",
    "days_paid":    15
  },
  "employer": {
    "registration_number": "B071234560",
    "rfc_origin":          "AAA010101AAA"
  },
  "perceptions": [
    {
      "perception_type": "001",
      "key":             "TIME",
      "concept":         "Regular salary",
      "taxed_amount":    9000.00,
      "exempt_amount":   0.00
    }
  ],
  "deductions": [
    {
      "deduction_type": "002",
      "key":            "ISR-W",
      "concept":        "ISR withholding",
      "amount":         1260.00
    }
  ],
  "other_payments": [
    {
      "other_payment_type": "002",
      "key":                "SUB",
      "concept":            "Employment subsidy",
      "amount":             0.00,
      "employee_subsidy":   0.00
    }
  ]
}

Response: 201 Created with the same shape as other types. type will be N; payment_form and payment_method will be null.


Fields for type N

Employee (employee)

Field Type Required Description
employee.rfc string yes Employee RFC.
employee.name string yes Employee full legal name.
employee.postal_code string yes Employee tax domicile postal code.
employee.curp string yes Employee CURP, exactly 18 characters.
employee.social_security_number string no IMSS social security number (NumSeguridadSocial).
employee.start_date date yes Employment start date (FechaInicioRelLaboral), YYYY-MM-DD.
employee.seniority string yes Seniority as ISO 8601 duration (e.g. P6Y5M for 6 years 5 months).
employee.contract_type string yes SAT c_TipoContrato code (e.g. 01 indefinite).
employee.regime_type string yes SAT c_TipoRegimen code.
employee.employee_number string yes Internal employee identifier (NumEmpleado).
employee.department string no Department or cost-centre.
employee.position string no Job position / role.
employee.risk string yes IMSS occupational risk class, SAT c_RiesgoTrabajo code.
employee.payment_periodicity string yes SAT c_PeriodicidadPago code (e.g. 04 monthly).
employee.base_salary number yes Daily base salary. Must be ≥ 0.
employee.integrated_daily_salary number yes Integrated daily wage including fringe benefits. Must be ≥ 0.
employee.state string yes SAT c_Estado code for the state where the employee works.

Payroll (payroll)

Field Type Required Description
payroll.type string yes O (ordinary) or E (extraordinary).
payroll.paid_at date yes Payment date (FechaPago), YYYY-MM-DD.
payroll.period_start date yes Start of pay period (FechaInicialPago), YYYY-MM-DD.
payroll.period_end date yes End of pay period (FechaFinalPago), YYYY-MM-DD.
payroll.days_paid number yes Days covered by this receipt (NumDiasPagados). Must be ≥ 0.

Employer (employer) — optional

Field Type Required Description
employer.registration_number string no IMSS registration number (RegistroPatronal).
employer.rfc_origin string no RFC of the original employer when employment was transferred (RfcPatronOrigen).

Perceptions (perceptions[]) — at least one required

Field Type Required Description
perceptions[].perception_type string yes SAT c_TipoPercepcion code (e.g. 001 salary).
perceptions[].key string yes Internal employer key for this perception concept.
perceptions[].concept string yes Human-readable description.
perceptions[].taxed_amount number yes Taxed portion (ImporteGravado). Must be ≥ 0.
perceptions[].exempt_amount number yes Exempt portion (ImporteExento). Must be ≥ 0.

Deductions (deductions[]) — optional

Field Type Required Description
deductions[].deduction_type string yes SAT c_TipoDeduccion code (e.g. 002 ISR).
deductions[].key string yes Internal employer key.
deductions[].concept string yes Human-readable description.
deductions[].amount number yes Deduction amount. Must be ≥ 0.

Other payments (other_payments[]) — optional

Field Type Required Description
other_payments[].other_payment_type string yes SAT c_TipoOtroPago code (e.g. 002 employment subsidy).
other_payments[].key string yes Internal employer key.
other_payments[].concept string yes Human-readable description.
other_payments[].amount number yes Amount. Must be ≥ 0.
other_payments[].employee_subsidy number no Employment subsidy amount (SubsidioEmpleo). Applicable when other_payment_type is 002. Must be ≥ 0.

Related pages