TL;DR — Quick Summary

Fix CONTPAQi Nominas ISR calculation errors: update tax tables, configure pay periods, apply employment subsidy correctly, and validate CFDI payroll XML.

ISR Calculation Errors in CONTPAQi Nominas

CONTPAQi Nominas is one of the most widely used payroll systems in Mexico, but the calculation of ISR (Impuesto Sobre la Renta — income tax) withholding for employees is one of the most frequent sources of errors. Common messages include “Error en el cálculo del ISR,” “Error al aplicar tabla de ISR Art. 96 LIF,” or simply incorrect withholding amounts that cause the PAC to reject the CFDI payroll at stamping time.

This article covers all known causes and the exact steps to resolve them, from outdated tax tables to CFDI payroll with invalid ISR amounts.

The Error

ISR errors in CONTPAQi Nominas appear in several forms:

  • Explicit message: “Error en el cálculo del ISR” when processing payroll.
  • Table message: “Error al aplicar tabla de ISR Art. 96 LIF” — indicates the table is corrupted or missing.
  • ISR = zero: The payslip calculates ISR = $0.00 for employees who should have withholding.
  • Negative ISR: The system produces a negative ISR in periods that are not year-end adjustments.
  • Stamping rejection: The PAC rejects the CFDI payroll because the <Impuesto> node has an ISR value inconsistent with the declared salary.
  • Incorrect employment subsidy: The subsidy is applied to employees who already exceed the income ceiling.

Root Cause

The underlying causes vary by symptom:

SymptomRoot Cause
”Error en el cálculo del ISR”ISR tables not loaded or corrupted for the fiscal year
ISR = zero or negative outside adjustmentPay period setting does not match actual payment frequency
Incorrect employment subsidySubsidy table outdated or income limits misconfigured
Large annual ISR discrepancyExempt income (aguinaldo, PTU, vacation premium) calculated without UMA limits
CFDI rejected for ISRCorrupted table or payslip not recalculated before stamping
Annual adjustment errorAdjustment produces negative amounts that CONTPAQi cannot withhold

Step-by-Step Solution

Step 1. Update the ISR Tax Tables (Art. 96 LISR)

ISR tables must be updated each fiscal year. If CONTPAQi Nominas has the previous year’s tables, all withholding calculations will be incorrect.

  1. Go to Configuration → ISR Tables.
  2. Verify that a table for the current year appears (e.g., “2025” or “2026”).
  3. If the table does not exist or is empty, update CONTPAQi Nominas to the latest Service Pack — the update includes the current tables.
  4. Alternatively, download Annex 8 of the Miscellaneous Tax Resolution from the SAT portal and import it manually via Configuration → Import ISR Tables.
  5. After importing, close and reopen the company in CONTPAQi Nominas.

Step 2. Verify the Employee Pay Period

ISR is calculated using the monthly, bi-weekly, or weekly table depending on the pay frequency. If the period configured in CONTPAQi does not match the actual payroll, the ISR will be incorrect.

  1. Go to Employee Catalog and open the affected employee’s record.
  2. Check the “Pay Period” field: it must exactly match the payslip frequency (Weekly, Bi-weekly, Semi-monthly, Monthly).
  3. If incorrect, fix the field, save, and recalculate the payslips for the current period.
  4. Remember: the ISR table CONTPAQi applies depends on the period — a bi-weekly payroll uses the “Quincenal Art. 96 LISR” table, not the monthly one.

Step 3. Verify the Employment Subsidy

The employment subsidy (subsidio al empleo) is a tax credit that reduces ISR for low-income workers. Incorrect application produces ISR that is lower than required or payslips with subsidy paid to ineligible employees.

  1. Go to Configuration → ISR Tables → Employment Subsidy.
  2. Confirm the subsidy table for the current year is loaded.
  3. Open a low-salary employee’s payslip and verify:
    • The “Employment Subsidy” field shows a positive amount (credit).
    • The ISR to withhold = Calculated ISR − Employment Subsidy (may result in $0 if subsidy covers ISR).
  4. If the subsidy is applied to an employee with a monthly salary above the ceiling (check the current table), fix the employee’s income configuration.

Step 4. Calculate Exempt Income Correctly (UMA Limits)

The following perceptions have an exempt portion that must not be included in the ISR taxable base. If CONTPAQi treats them as 100% taxable, the ISR will be inflated.

PerceptionExempt LimitExcess
Aguinaldo (Christmas bonus)30 UMA days/year100% taxable
Prima Vacacional (vacation premium)15 UMA days/year100% taxable
PTU (profit sharing)15 UMA days/year100% taxable
Double overtimeUp to 3 minimum wages/weekExcess taxable

UMA 2026: $113.14 daily / $3,439.26 monthly (verify the current value at the INEGI portal).

To check the configuration in CONTPAQi Nominas:

  1. Go to Concept Catalog and open the Aguinaldo, Prima Vacacional, or PTU concept.
  2. Verify that “Apply UMA exemption” is checked and the number of UMA days is correct.
  3. Recalculate the payroll so the changes take effect.

Step 5. Run the Annual ISR Adjustment

At fiscal year-end (usually in the December or first January payroll), CONTPAQi Nominas must run the Annual ISR Adjustment to reconcile the ISR withheld during the year with the actual annual ISR.

  1. Go to Processes → Annual ISR Calculation.
  2. Select the fiscal year being closed.
  3. The system calculates the difference:
    • Positive difference (employee owes): Withheld in January/February payroll.
    • Negative difference (employee is owed): Returned or compensated.
  4. If the adjustment produces negative amounts exceeding the employee’s payroll, CONTPAQi will show an error. In that case, configure the refund as a special payroll payment under the correct concept.

Step 6. Validate ISR in the CFDI Payroll XML Before Stamping

Before sending the CFDI to the PAC for stamping, validate that the ISR in the XML is consistent:

  1. Generate the payslip but do not stamp yet.
  2. Export the payslip XML from Payroll → Export CFDI.
  3. Open the XML in a text editor and find the node:
    <cfdi:Impuesto TasaOCuota="..." TipoFactor="Tasa" Base="..." Impuesto="002" TipoImpuesto="Retencion" Importe="..."/>
  4. Verify that the Importe for ISR (Tax 002) matches the manually calculated amount.
  5. If there is a discrepancy, correct the tables or employee configuration and regenerate the payslip.
  6. Stamp only when the XML is correct.

Alternative Solution

If the ISR tables are corrupted and cannot be imported manually, use CONTPAQi’s repair tool:

  1. Close CONTPAQi Nominas completely.
  2. Open the CONTPAQi Nominas installer and select “Repair”.
  3. The repair reinstalls the default ISR tables for the installed version.
  4. Once repaired, update to the latest Service Pack to get the current fiscal year tables.
  5. Reopen the company and verify that the tables are available under Configuration → ISR Tables.

If the problem persists for a specific employee, create a test employee with the same characteristics and calculate a test payslip to isolate whether the error is in the data or in the global configuration.


Prevention

To avoid ISR errors in the future:

  • Apply CONTPAQi Nominas Service Packs at the start of each fiscal year — updates include ISR tables, employment subsidy, and current UMA values.
  • Review the concept catalog at least once a year to confirm exempt perceptions have the correct UMA limits.
  • Configure ISR difference alerts if your version of CONTPAQi Nominas supports it — a difference greater than 10% between consecutive periods for the same employee is a warning sign.
  • Validate the CFDI XML before stamping at least one sample payroll at the start of the fiscal year or after updating tables.
  • Document the current UMA value at the start of the year and communicate it to the payroll team to prevent manual exemption calculation errors.

”Error al aplicar tabla de ISR Art. 96 LIF”

This specific error indicates that the Art. 96 LISR table for the period is missing or corrupted. Unlike the generic calculation error, this message points directly at the table. Solution: repair the installation (see above) or import the table manually.

CFDI Payroll Complement Rejected by the PAC

If the PAC rejects the CFDI with an ISR-related error code (often error 404 or CFDI33130), the issue is usually a negative ISR or an ISR that does not match the declared social security salary (SBC). Verify that the employee’s SBC in their record is up to date.

Discrepancies Between Annual Cumulative ISR and Informative Declaration

When generating the Informative Declaration of Wages and Salaries in CONTPAQi Nominas, the cumulative annual ISR may not match the sum of periodic withholdings. This happens when some payslips were recalculated after stamping without canceling the prior CFDI. Verify that all active (non-canceled) stamped payslips are the ones that make up the cumulative total.


Summary

  • Update ISR Art. 96 LISR tables at the start of each fiscal year via the CONTPAQi Nominas Service Pack.
  • Confirm the pay period for each employee in CONTPAQi matches their actual payroll frequency.
  • Verify that the employment subsidy uses the current year’s table and is only applied to eligible employees.
  • Correctly calculate exempt income (aguinaldo, PTU, vacation premium) using the current year’s UMA limits.
  • Run the annual ISR adjustment at fiscal year-end and properly handle employee balances owed or due.
  • Validate the CFDI payroll XML before each stamping, especially at the start of the fiscal year or after updating tables.