Complemento-txt Nómina v1.2 (Payroll)
This new complement must be incorporated to Solución Factible®'s txt-connector (Conector-txt v6.0) in its identifier: "Complemento".
Check out the documentation for the new connector (v6.0) here.
Complement's definition
Same as the connector file (Conector-txt v6.0) the payroll complement is divided in lines, each line representing a group of data regarding the complement.
The complement contains identifiers at the beginning of each line indicating the type of business data included in every section, the sections' order is sequential downwards and is based in the order of data the SAT has specified in its XSD technical definition, nevertheless it can be adjusted according to your needs.
The fields belonging to each section (identifier) are separated by the character "pipe" (|, ASCII 124) and are extracted in that order, made to measure to your needs.
You can use any of the line break (EOL or newline), it can be any of the ones handled in most current systems: CR, LF or CR+LF.
EmisorNomina||B5510768108||
EmpleadoNomina|KAHO641101HNTLKS06|04078464789|01-01-2011|P10Y8M15D|01||01|02|0013|Sistemas|Programador|1|04|002|254136985458564558|490.22|146.47|JAL|
TotalPercepcionesNomina|5500|.......|
The complement contains the payroll's invoice data starting each line with its "identifier" marked in bold in the above example.
Identifiers and fields
Each identifier represents the start of a section that contains an specific number of fields. The different identifiers and their fields are shown next.
Some identifiers and their fields can repeat across lines within the file since business data might call for it. For instance multiple "PercepcionNomina" identifiers might exists to accommodate a complement that contains many payments.
- Complemento|nomina|Version|TipoNomina|FechaPago|FechaInicialPago|FechaFinalPago|NumDiasPagados|TotalPercepciones|
TotalDeducciones|TotalOtrosPagos| - EmisorNomina|CURP|Registropatronal|RfcPatronOrigen|
- EntidadSNCFNomina|OrigenRecurso|MontoRecursoPropio|
- EmpleadoNomina|CURP|NumSeguridadSocial|FechaInicioRelLaboral|Antiguedad|TipoContrato|Sindicalizado|TipoJornada|
TipoRegimen|NumEmpleado|Departamento|Puesto|RiesgoPuesto|PeriocidadPago|Banco|CuentaBancaria|
SalarioBaseCotApor|SalarioDiarioIntegrado|ClaveEntFed| - SubContratacionNomina|RfcLabora|PorcentajeTiempo|
- TotalPercepcionesNomina|TotalSueldos|TotalSeparacionIndemnizacion|TotalJubilacionPencionRetiro|TotalGravado|TotalExento|
- PercepcionNomina|TipoPercepcion|Clave|Concepto|ImporteGravado|ImporteExento|
- AccionesOTitulosNomina|ValorMercado|PrecioAlOtorgarse|
- HorasExtraNomina|Dias|TipoHoras|HorasExtra|ImportePagado|
- CamposDinamicosPercepcionNomina|CAMPO_1|....|
- JubilacionPensionRetiroNomina|TotalUnaExhibicion|TotalParcialidad|MontoDiario|IngresoAcumulable|IngresoNoAcumulable|
- SeparacionIndemnizacionNomina|TotalPagado|NumAñosServicio|UltimoSueldoMensOrd|IngresoAcumulable|IngresoNoAcumulable|
- TotalDeduccionesNomina|TotalOtrasDeducciones|TotalImpuestosRetenidos|
- DeduccionNomina|TipoDeduccion|Clave|Concepto|Importe|
- CamposDinamicosDeduccionNomina|CAMPO_1|....|
- OtroPagoNomina|TipoOtroPago|Clave|Concepto|Importe|
- SubsidioAlEmpleoNomina|SubsidioCausado|
- CompensacionSaldosAFavorNomina|SaldoAFavor|Año|RemanenteSalFav|
- IncapacidadNomina|DiasIncapacidad|TipoIncapacidad|ImporteMonetario|
External links
SAT's documentation link
Examples
Simple CFDI
Comprobante|1|A|true|||
Generales|10102024 16:30:00|Pago en una sola exhibicion||NA||Regimen general||notas|45070|
Divisa|Peso Mexicano|MXN|1|
Receptor|OSCAR KALA HAAK|KAHO641101B39|KAHO641101HNTLKS06|empresa@dominioempresa.com.mx||||
DireccionFiscal|Mexico|Nayarit|Tepic|Tepic|Hidalgo|238|1|Sauze|28750|
Concepto||Pago de nómina|ACT|1|6390||6390||||
Totales|6390|||890|5500|
Complemento|nomina|1.2|O|15-09-2024|01-09-2024|15-09-2024|15|5300|890|200|
EmisorNomina||B5510768108||
EmpleadoNomina|KAHO641101HNTLKS06|04078464789|01-01-2021|P10Y8M15D|01||01|02|0013|Sistemas|Programador|1|04|002||490.22|146.47||JAL|
TotalPercepcionesNomina|5300|||5100|200.00|
PercepcionNomina|001|123|Sueldos Salarios Rayas y Jornales|5100|200|
TotalDeduccionesNomina|290|600|
DeduccionNomina|001|676|Seguridad social|290|
DeduccionNomina|002|582|ISR|600|
OtroPagoNomina|008|584|Viaticos|200|
Data dictionary
Complemento Nómina 1.2 (Payroll)Complement to be incorporated to the CFDI for the payroll information. |
Type | Fields | Description |
"Complemento" fields | Mandatory id | |
R | Nombre | Name required for the complement. Fixed value:"nomina". |
R | Version | Version of this complement. |
R | TipoNomina | Type of payroll, can be: O= Nómina ordinaria or E= Nómina extraordinaria. |
R | FechaPago | Payment date with format: dd-MM-yyyy, in compliance with ISO 8601. |
R | FechaInicialPago | First payment date with format: dd-MM-yyyy, in compliance with ISO 8601. |
R | FechaFinalPago | Last payment date with format: dd-MM-yyyy, in compliance with ISO 8601. |
R | NumDiasPagados | Number of days paid. |
C | TotalPercepciones | Total earnings. |
C | TotalDeducciones | Conditional field to represent the sum of applicable payroll deductions. |
C | TotalOtrosPagos | Total of additional earning. |
"EmisorNomina" fields | Mandatory id | |
C | CURP | Payroll issuing entity's CURP if applies. |
C | RegistroPatronal | Employer registration number (max. number of characters: 20). |
O | RfcPatronOrigen | Employer RFC when payment was performed through a third party. |
"EntidadSNCFNomina" fields | Conditional id. Required for entities adhered to the "Sistema Nacional de Coordinación Fiscal". | |
R | OrigenRecurso | Required for identifying the resources of payment origin. |
C | MontoRecursoPropio | Payment for the resources for employee's payment. |
"EmpleadoNomina" fields | Mandatory id. | |
R | CURP | Payroll recipient's CURP. |
C | NumSeguridadSocial | Employee's Social security number. |
C | FechaInicioRelLaboral | Beginning of working relationship's date with format: dd-MM-yyyy, in compliance with ISO 8601. |
C | Antigüedad | Job seniority Ex. P10Y8M15D (10 years, 8 months, 15 days). |
R | TipoContrato | Type of contract. |
O | Sindicalizado | If employee is unionized (if omitted the employee is assumed to not being unionized). |
C | TipoJornada | Type of working hours. |
R | TipoRegimen | Employee's regime. |
R | NumEmpleado | Employee's number (max. number of digits: 15). |
O | Departamento | Employee's section or area. |
O | Puesto | Employee's position. |
O | RiesgoPuesto | Occupational risk (1,2,3,4 or 5). |
R | PeriodicidadPago | Payment frequency. |
C | Banco | Employee's bank id Ex. 110=JP Morgan, 044=Scotiabank. |
C | CuentaBancaria | Bank account or credit/debit card number, etc. |
O | SalarioBaseCotApor | Employee's remuneration if any. |
O | SalarioDiarioIntegrado | Employee's daily rate. |
R | ClaveEntFed | Mexico's state id where employee labors. |
"SubContratacionNomina" fields | Conditional id. | |
R | RfcLabora | RFC of entity who outsources or subcontracts employees. |
R | PorcentajeTiempo | Time in percentage that the employee worked in a company. Ex. If an employee worked at business A 40% of the time and business B 60% of the time, then: |
"TotalPercepcionesNomina" fields | Conditional id. Mandatory if identifier:"PercepcionNomina" exists. | |
C | TotalSueldos | Total of wages. |
C | TotalSeparacionIndemnizacion | Total compensation due to employee separation. |
C | TotalJubilacionPensionRetiro | Total income from retirements and pensions. |
R | TotalGravado | Total taxable earnings. |
R | TotalExento | Total of tax free earnings. |
"PercepcionNomina" fields | Conditional id. | |
R | TipoPercepcion | Type of earning's id Ex.001=wage, salary, etc, or 010=punctuality bonus. |
R | Clave | The id of the earnings recorded in the accounting records of the business (minimum number of digits: 3, max number of digits:15). |
R | Concepto | Earning description |
R | ImporteGravado | Taxed amount of the earning. |
R | ImporteExento | Tax free amount of the earning. |
"AccionesOTitulosNomina" fields | Conditional id. Required for earning derived from the acquisition of shares or titles | |
R | ValorMercado | Market value of the share or title. |
R | PrecioAlOtorgarse | Established price for the share or title. |
"HorasExtraNomina" fields | Optional id. | |
R | Dias | Number of days in which the employee labored extra hours. |
R | TipoHoras | Type of payment for the extra hours. (01=double, 02=triple or 03=simple payment) |
R | HorasExtra | Number of overtime hours worked. |
R | ImportePagado | Total earnings from overtime. |
"JubilacionPensionRetiroNomina" fields | Optional id. | |
C | TotalUnaExhibicion | Conditional field that indicates the total amount of the payment when made in a single payment. If specified the fields "MontoDiario" and "TotalParcialidad" should not be used. |
C | TotalParcialidad | Earning amount payed in installments. If specified the field "MontoDiario" must be specified and the field "TotalUnaExhibicion" must not. |
C | MontoDiario | Daily earning by pensions or retirement performed in installments. |
R | IngresoAcumulable | Taxable earning amount. |
R | IngresoNoAcumulable | Non-taxable earning amount. |
"SeparacionIndemnizacionNomina" fields | Optional id. | |
R | TotalPagado | Total earnings paid for separation compensation. |
R | NumAñosServicio | Number of years worked. If the employee works less than 6 months the value will be "0". If the employee worked more than 6 months regardless of the years, it is taken as a full year. For example (2 years and 7 months = 3 years). |
R | UltimoSueldoMensOrd | Last regular monthly salary. |
R | IngresoAcumulable | Taxable earning amount. |
R | IngresoNoAcumulable | Non-taxable earning amount. |
"TotalDeduccionesNomina" fields | Conditional id. | |
C | TotalOtrasDeducciones | Total of payroll deductions where the payroll deduction's id is different to "002", if any. |
C | TotalImpuestosRetenidos | Total of payroll deductions where the payroll deduction's id is "002", if present. |
"DeduccionNomina" fields | Optional id. | |
R | TipoDeduccion | Payroll deduction's id. Ex. 001 (social security), 019 (union fee), etc |
R | Clave | The id of the payroll deduction recorded in the accounting records of the business (min number of digits: 3, max number of digits:15). |
R | Concepto | Description of the payroll deduction. |
R | Importe | Amount of the payroll deduction. |
"OtroPagoNomina" fields | Optional id. | |
R | TipoOtroPago | "Other earning"'s id when different to (001, 002, 003, and 004). Value=999 |
R | Clave | The id of the "other earning" recorded in the accounting records of the business (min number of digits: 3, max number of digits:15). |
R | Concepto | "Other earning" description. |
R | Importe | Amount for the "other earning". |
"SubsidioAlEmpleoNomina" fields | Mandatory id. | |
R | SubsidioCausado | Employee's subsidy in compliance to the subsidy table published by the SAT here. |
"CompensacionSaldosAFavorNomina" fields | Optional id. | |
R | SaldoAFavor | Earning for credit balance for the current working period (year). |
R | Año | Past work period's year for entitled credit balance. |
R | RemanenteSalFav | Remaining balance amount from previous work periods. |
"IncapacidadNomina" fields | Optional id. | |
R | DiasIncapacidad | Number of days the employee was absent due to disability. |
R | TipoIncapacidad | Disability's id Ex. 03 (Maternity leave). |
R | ImporteMonetario | disability's earning amount. |
- R= Required
- C= Conditional
- O= Optional

