¿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 usaCfdiType: "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
Endpoint
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:
CfdiTypedebe ser"N".- No incluyas
Items. - No incluyas
PaymentForm: conforme al Anexo 20, este atributo no se registra cuando el tipo de comprobante esN. Currencydebe ser"MXN".- En el nodo
Receiver, el atributoCfdiUsedebe ser"CN01". - En el nodo
Receiver, el atributoFiscalRegimenormalmente es605(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 tipo019 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 nodoIncapacities y la deducción 006 correspondiente:
Subsidio para el empleo
El subsidio se registra enOtherPayments con la clave 002 y el nodo EmploymentSubsidy:
Saldo a favor por compensación anual
Usa la clave004 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ón039 (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 enEmployee.Outsourcing:
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.Tipo de nómina (Type)
Tipo de nómina (Type)
Tipo de contrato (ContractType)
Tipo de contrato (ContractType)
Tipo de régimen (RegimeType)
Tipo de régimen (RegimeType)
Periodicidad de pago (FrequencyPayment)
Periodicidad de pago (FrequencyPayment)
Tipo de jornada (TypeOfJourney)
Tipo de jornada (TypeOfJourney)
Riesgo de puesto (PositionRisk)
Riesgo de puesto (PositionRisk)
Tipos de percepción más usados (PerceptionType)
Tipos de percepción más usados (PerceptionType)
El catálogo
c_TipoPercepcion completo incluye más de 40 claves.Tipos de deducción más usados (DeduccionType)
Tipos de deducción más usados (DeduccionType)
El catálogo
c_TipoDeduccion completo incluye más de 100 claves.Tipos de otros pagos (OtherPaymentType)
Tipos de otros pagos (OtherPaymentType)
El catálogo
c_TipoOtroPago completo incluye 10 claves.Tipo de incapacidad (Incapacities.Type)
Tipo de incapacidad (Incapacities.Type)
Consultar el catálogo de bancos
c_Banco completo incluye más de 100 claves.
Consultar y descargar el recibo
Los CFDI de nómina usan el tipopayroll 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.