Skip to main content

¿Cuándo emitir un CFDI de nómina?

Emite un CFDI de nómina por cada pago que hagas a un trabajador por concepto de sueldos, salarios o ingresos asimilados. El comprobante usa CfdiType: "N" y lleva el complemento de nómina 1.2 dentro del nodo Complemento.Payroll.
El complemento de nómina vigente es la versión 1.2 (revisión C). Aplica tanto para trabajadores subordinados (régimen 02 Sueldos) como para asimilados a salarios (regímenes 05 a 11).

Diferencias con una factura de ingreso

El nodo Items no se envía en un CFDI de nómina. Facturama construye el concepto a partir de los totales del complemento. Enviar conceptos provoca un error de validación.

Endpoint

Consulta las referencias API

Estructura del CFDI de nómina

Ejemplo completo

Recibo quincenal de un trabajador subordinado con sueldo y vales de despensa:
Consideraciones del nodo general en un CFDI de nómina:
  • CfdiType debe ser "N".
  • No incluyas Items.
  • No incluyas PaymentForm: conforme al Anexo 20, este atributo no se registra cuando el tipo de comprobante es N.
  • Currency debe ser "MXN".
  • En el nodo Receiver, el atributo CfdiUse debe ser "CN01".
  • En el nodo Receiver, el atributo FiscalRegime normalmente es 605 (Sueldos y Salarios e Ingresos Asimilados a Salarios).

Elementos del complemento de nómina

Nodo Payroll

string
requerido
Tipo de nómina. Usa O para nómina ordinaria y E para nómina extraordinaria.
string
requerido
Fecha efectiva de erogación del pago, en formato YYYY-MM-DD.
string
requerido
Fecha inicial del periodo de pago.
string
requerido
Fecha final del periodo de pago. Debe ser igual o posterior a InitialPaymentDate.
number
requerido
Número de días o fracción que cubre el pago. Acepta hasta tres decimales.
object
Datos del patrón. Ver Nodo Issuer.
object
requerido
Datos del trabajador. Ver Nodo Employee.
object
Percepciones del periodo. Ver Nodo Perceptions.
object
Deducciones aplicadas al trabajador. Ver Nodo Deductions.
array
Pagos que no se consideran ingreso por sueldos, como el subsidio para el empleo o los viáticos entregados.
array
Incapacidades que aplican en el periodo.

Nodo Issuer

string
Registro patronal ante el IMSS. Requerido cuando el trabajador está sujeto al régimen obligatorio de seguridad social.
string
RFC del patrón origen. Se registra en casos de subcontratación laboral o cuando pagas por cuenta de otro patrón.
string
CURP del patrón cuando es persona física. Debe tener 18 caracteres.
object
Nodo para entidades y dependencias que aplican el Sistema Nacional de Coordinación Fiscal. Contiene OriginSource (IP, IM o IF) y AmountOriginSource.

Nodo Employee

string
requerido
CURP del trabajador. Exactamente 18 caracteres.
string
requerido
Clave del tipo de contrato conforme al catálogo c_TipoContrato.
string
requerido
Clave del régimen de contratación conforme al catálogo c_TipoRegimen.
string
requerido
Número interno del trabajador. Hasta 15 caracteres, sin el carácter |.
string
requerido
Periodicidad de pago conforme al catálogo c_PeriodicidadPago.
string
requerido
Clave de la entidad federativa donde el trabajador prestó sus servicios, conforme al catálogo c_Estado.
string
Número de seguridad social del trabajador. Requerido cuando el régimen es 02 Sueldos.
string
Fecha de inicio de la relación laboral, en formato YYYY-MM-DD.
boolean
Indica si el trabajador está sindicalizado.
string
Tipo de jornada conforme al catálogo c_TipoJornada.
string
Departamento o área del trabajador. Hasta 100 caracteres.
string
Puesto asignado al trabajador. Hasta 100 caracteres.
string
Clase de riesgo de puesto conforme al catálogo c_RiesgoPuesto.
string
Clave del banco donde depositas la nómina, conforme al catálogo de bancos.
string
Número de cuenta o CLABE. Entre 10 y 18 dígitos.
number
Salario base de cotización.
number
Salario diario integrado.
array
Nodo para subcontratación laboral. Cada elemento contiene RfcContractor y PercentageTime (entre 0.001 y 100).

Nodo Perceptions

array
Lista de percepciones del periodo.
string
Clave del tipo de percepción conforme al catálogo c_TipoPercepcion.
string
Clave de control interno de la percepción. Entre 3 y 15 caracteres.
string
Concepto de la percepción. Hasta 100 caracteres.
number
requerido
Importe gravado de la percepción.
number
requerido
Importe exento de la percepción.
array
Detalle de horas extra. Cada elemento contiene Days, HoursType, ExtraHours y PaidAmount.
object
Nodo para ingresos en acciones o títulos valor. Contiene MarketValue y PriceWhenGranting.
object
Nodo para jubilaciones, pensiones o haberes de retiro. Contiene TotalASinglePayment, TotalParciality, DailyAmount, AccumulatedIncome y NonAccumulatedIncome.
object
Nodo para pagos por separación. Contiene TotalPaid, YearsOfService, LastMonthlySalaryOrd, AccumulatedIncome y NonAccumulatedIncome.

Nodo Deductions

string
requerido
Clave del tipo de deducción conforme al catálogo c_TipoDeduccion.
string
requerido
Clave de control interno de la deducción. Entre 3 y 15 caracteres.
string
requerido
Concepto de la deducción. Hasta 100 caracteres.
number
requerido
Importe de la deducción. El valor mínimo es 0.01.

Nodo OtherPayments

string
requerido
Clave del tipo de otro pago conforme al catálogo c_TipoOtroPago.
string
requerido
Clave de control interno del pago. Entre 3 y 15 caracteres.
string
requerido
Concepto del pago. Hasta 100 caracteres.
number
requerido
Importe del pago.
object
Nodo requerido cuando OtherPaymentType es 002. Contiene Amount con el subsidio causado.
object
Nodo requerido cuando OtherPaymentType es 004. Contiene PositiveBalance, Year y RemainingPositiveBalance.

Nodo Incapacities

integer
requerido
Días de incapacidad en el periodo.
string
requerido
Clave del tipo de incapacidad conforme al catálogo c_TipoIncapacidad.
number
Importe del descuento por la incapacidad.

Casos especiales

Horas extra

Registra las horas extra como una percepción de tipo 019 con el detalle de días, tipo de horas e importe pagado:
HoursType usa 01 para horas dobles, 02 para triples y 03 para simples.

Incapacidades

Cuando el trabajador tiene días de incapacidad, agrega el nodo Incapacities y la deducción 006 correspondiente:

Subsidio para el empleo

El subsidio se registra en OtherPayments con la clave 002 y el nodo EmploymentSubsidy:
El importe en Amount es el subsidio efectivamente entregado al trabajador, mientras que EmploymentSubsidy.Amount es el subsidio causado conforme a la disposición vigente. Calcula ambos valores con tu sistema de nómina; la API no los deriva por ti.

Saldo a favor por compensación anual

Usa la clave 004 en OtherPayments junto con el nodo Compensation:

Pagos por separación

Un finiquito o liquidación es nómina extraordinaria (Type: "E"). Agrega la percepción 025 y el nodo Indemnification:

Jubilaciones y pensiones

Para jubilaciones, pensiones o haberes de retiro, usa la percepción 039 (pago único) o 044 (parcialidades) junto con el nodo Retirement:

Subcontratación laboral

Cuando el trabajador presta servicios a través de subcontratación, registra los contratantes en Employee.Outsourcing:
La suma de PercentageTime de todos los contratantes debe ser 100.

Catálogos de nómina

Estos catálogos los define el SAT y pueden cambiar. Verifica los valores vigentes en el catálogo oficial catCFDI publicado por el SAT antes de liberar a Producción.
El catálogo c_TipoPercepcion completo incluye más de 40 claves.
El catálogo c_TipoDeduccion completo incluye más de 100 claves.
El catálogo c_TipoOtroPago completo incluye 10 claves.

Consultar el catálogo de bancos

El catálogo c_Banco completo incluye más de 100 claves.

Consultar y descargar el recibo

Los CFDI de nómina usan el tipo payroll en lugar de issued:
Si consultas con type=issued no verás los recibos de nómina. Revisa Consultar CFDI y Descargar documentos.

Errores comunes

Siguientes pasos

Cancelar CFDI

Cancela un recibo de nómina timbrado por error.

Descargar documentos

Obtén el PDF y el XML del recibo para entregarlo al trabajador.

Catálogos SAT

Consulta las claves vigentes directamente desde la API.

Tipos de comprobantes

Entiende cuándo aplica cada tipo de CFDI.