Timbrado del CFDI de Nómina 1.2
Una vez calculado el periodo, los recibos deben timbrarse para convertirse en Comprobantes Fiscales Digitales por Internet (CFDI) válidos ante el SAT. ALTUM ERP integra Finkok como único PAC autorizado para el timbrado de nómina.
Requisitos previos
Sección titulada «Requisitos previos»Antes de timbrar, verifique en /nomina/configuracion que estén configurados:
- RFC del emisor (tenant) — válido según la regex SAT (12 chars moral / 13 chars física).
- Certificados CSD — archivo
.cer(certificado público) y archivo.key(llave privada) cargados en la configuración del tenant. - Contraseña del SAT — clave de la llave privada.
- Régimen fiscal y código postal del tenant (necesarios para el nodo
cfdi:EmisoryLugarExpedicion).
Si alguno falta, el timbrado falla con un error de configuración antes de contactar a Finkok.
Ejecutar el timbrado
Sección titulada «Ejecutar el timbrado»Desde /nomina/periodos/:id, con el periodo en estado CALCULADO, haga clic en el botón “Timbrar”.
El sistema procesa los recibos en lotes de 10 en paralelo:
- Valida que el periodo esté en
CALCULADO. - Carga los certificados CSD del tenant y descifra la llave privada.
- Determina el código postal de expedición (
LugarExpedicion): primero buscatenant.lugarExpedicion; si no existe, usa el CP de la primera sucursal activa; si tampoco hay sucursal, usa06600(CDMX) como fallback. - Para cada recibo en estado
PENDIENTE_TIMBRADOoTIMBRADO_FALLIDO: a. Construye el XML del CFDI Nómina 1.2. b. Firma el XML con el CSD del tenant. c. Envía el XML firmado a Finkok. d. Persiste el UUID, sellos y rutas de los archivos (XML y PDF). - Al terminar el lote, actualiza el estado del periodo a TIMBRADO si no quedan recibos pendientes ni fallidos.
- Emite el evento
nomina.periodo.timbradopara la generación automática de la póliza contable (si está habilitada).
Estructura del CFDI de Nómina
Sección titulada «Estructura del CFDI de Nómina»El XML que se genera y firma tiene la siguiente estructura general (CFDI 4.0 + complemento Nómina 1.2):
| Elemento / Atributo | Valor |
|---|---|
Version |
4.0 |
TipoDeComprobante |
N (Nómina) |
Moneda |
MXN |
SubTotal |
Total de percepciones del recibo |
Descuento |
Total de deducciones (cuando > $0.00) |
Total |
percepciones − deducciones + otrosPagos |
MetodoPago |
PUE |
Exportacion |
01 |
Serie |
NOM |
Folio |
Número secuencial de 6 dígitos dentro del periodo |
LugarExpedicion |
Código postal del tenant (ver arriba) |
cfdi:Concepto ClaveProdServ |
84111505 |
cfdi:Concepto ClaveUnidad |
ACT |
cfdi:Concepto Descripcion |
Pago de nómina |
cfdi:Receptor RegimenFiscalReceptor |
605 (fijo para asalariados) |
cfdi:Receptor UsoCFDI |
CN01 (Nómina) |
Complemento Nómina 1.2
Sección titulada «Complemento Nómina 1.2»El complemento contiene, entre otros datos:
| Dato | Origen |
|---|---|
TipoNomina |
O (Ordinaria) — fijo en la implementación actual |
FechaPago |
periodo.fechaPago |
FechaInicialPago |
periodo.fechaInicio |
FechaFinalPago |
periodo.fechaFin |
NumDiasPagados |
recibo.diasTrabajados (3 decimales) |
CURP |
empleado.curp |
NumSeguridadSocial |
empleado.nss |
FechaInicioRelLaboral |
empleado.fechaInicio |
Antiguedad |
Semanas completas en formato ISO PnW (calculado a partir de empleado.fechaInicio) |
TipoContrato |
empleado.tipoContrato (catálogo SAT) |
TipoJornada |
empleado.tipoJornada (catálogo SAT) |
TipoRegimen |
empleado.tipoRegimen (catálogo SAT) |
SalarioBaseCotApor |
empleado.sbc |
SalarioDiarioIntegrado |
empleado.sbc |
PeriodicidadPago |
Mapeado de TipoPeriodoNomina a clave SAT: SEMANAL=01, CATORCENAL=02, QUINCENAL=04, MENSUAL=05 |
RegistroPatronal |
tenant.nominaConfig.registroPatronal (cuando existe) |
Percepciones, deducciones y otros pagos en el CFDI
Sección titulada «Percepciones, deducciones y otros pagos en el CFDI»| Tipo | Clave SAT | Concepto | Notas |
|---|---|---|---|
| Percepción | 001 |
Sueldos, Salarios Rayas y Jornales | Importe gravado = sueldo bruto del periodo |
| Deducción | 001 |
ISR | Solo si isrNeto > $0.00 |
| Deducción | 002 |
Cuotas IMSS | Cuotas obrero: CESANTIA_VEJEZ + EYM_FIJA + IV |
| Deducción | 006 |
Descuento Infonavit | Solo si el empleado tiene crédito activo |
| Otro pago | 002 |
Subsidio para el empleo | Siempre presente; importe diferencial subsidioPeriodo − isrPeriodo (puede ser $0.00) |
Estados del timbrado por recibo
Sección titulada «Estados del timbrado por recibo»| Estado | Significado |
|---|---|
PENDIENTE_TIMBRADO |
Aún no enviado a Finkok |
TIMBRADO |
Timbrado exitosamente; UUID disponible |
TIMBRADO_FALLIDO |
Error en el intento; se puede reintentar |
CANCELADO |
CFDI cancelado ante el SAT |
Reintento de timbrado
Sección titulada «Reintento de timbrado»Si uno o más recibos quedan en TIMBRADO_FALLIDO, puede reintentarse hasta un máximo de 3 intentos. El campo intentosTimbrado del recibo registra cuántos se han realizado y ultimoError guarda el mensaje del último fallo. Al volver a ejecutar el timbrado del periodo, el sistema incluye automáticamente los recibos en TIMBRADO_FALLIDO junto con los PENDIENTE_TIMBRADO.
Cancelación de un recibo timbrado
Sección titulada «Cancelación de un recibo timbrado»Para cancelar un CFDI de nómina ya timbrado:
- El recibo debe estar en estado
TIMBRADO. - Se requiere el permiso
nomina.timbrar. - Se selecciona el motivo de cancelación SAT:
01— Comprobante emitido con errores con relación (requiere indicar el UUID sustituto).02— Comprobante emitido con errores sin relación.03— No se llevó a cabo la operación.04— Operación nominativa relacionada en la factura global.
- El sistema envía la solicitud de cancelación a Finkok vía
FinkokCancellationService. - El recibo pasa a estado
CANCELADOcon fecha y motivo registrados. - Si todos los recibos del periodo quedan en
CANCELADO, el periodo también pasa aCANCELADOautomáticamente.
Descarga de XML y PDF
Sección titulada «Descarga de XML y PDF»Los paths de los archivos generados durante el timbrado se almacenan en xmlPath y pdfPath del recibo. El formato de ruta es:
{tenantId}/{año}/{periodoId}/{reciboId}.xml{tenantId}/{año}/{periodoId}/{reciboId}.pdfLa descarga de archivos individuales no está expuesta directamente desde la tabla de recibos en la interfaz actual. La consulta se realiza a través de la API del recibo.
Casos frecuentes
Sección titulada «Casos frecuentes»El timbrado falla con “Configuracion fiscal incompleta”. Verifique en la configuración del tenant que estén capturados: RFC, Razón Social, Régimen Fiscal y los certificados CSD con su contraseña.
Un recibo queda en TIMBRADO_FALLIDO y ya se agotaron los 3 intentos. Se requiere intervención manual. Contacte al soporte para resetear el contador de intentos o para generar un reintento excepcional vía la API.
¿Puedo timbrar un recibo individual? No desde la interfaz. El timbrado se ejecuta siempre a nivel de periodo y procesa todos los recibos pendientes del mismo en lotes.
¿El PDF del recibo se genera automáticamente? El path del PDF se almacena al timbrar, pero la generación del PDF como representación impresa del CFDI depende del servicio de Finkok. Consulte la documentación de su cuenta PAC para confirmar si está habilitada.