TL;DR — Quick Summary

Aspel NOI overtime error: fix incorrect double and triple pay rates, wrong CFDI codes P019/P020, and bad ISR withholding. Step-by-step solution.

Aspel NOI shows the message “Error al calcular percepciones” when you try to register overtime, or the CFDI payroll receipt is stamped with perception codes P019 and P020 showing zero or incorrect amounts. Overtime calculation in Mexico has specific rules that the system must follow to comply with the Ley Federal del Trabajo (LFT) and the SAT requirements for payroll CFDI version 1.2. This article explains why overtime calculation fails in NOI and how to fix it before it disrupts your stamping process.

Overtime in Mexico is regulated by Articles 67 and 68 of the LFT: the first 9 weekly overtime hours are paid at double rate, and hours exceeding that limit are paid at triple rate. Additionally, for ISR purposes, there is a partial exemption defined in the LISR. When NOI is not correctly configured to apply these rules, the result is an incorrect calculation that can lead to an invalid CFDI or an incorrect tax withholding.

The Error

When attempting to calculate or stamp payroll with overtime, Aspel NOI may display the following messages:

  • “Error al calcular percepciones” — appears when calculating payroll if the overtime formula is misconfigured
  • “Código de percepción no válido para CFDI de nómina” — the SAT code assigned to the perception does not match the current SAT catalog
  • “El importe exento supera el límite permitido” — the ISR exemption is calculated incorrectly, exceeding the 5 weekly UMA cap
  • “Error de validación: la clave de percepción 019 no puede tener importe en cero” — the CFDI is generated with overtime but without an amount in the corresponding perception
  • “Desbordamiento aritmético en cálculo de percepciones” — out-of-range result, usually from an incorrect formula that multiplies salary by more than expected

The most common scenarios where this error appears:

  1. First-time overtime configuration in a company that rarely uses it and where P019/P020 perceptions were never set up
  2. Payroll period change from weekly to biweekly or monthly, where the “9 weekly hours” rule must be recalculated proportionally
  3. Employees with shift differentials whose base salary differs from the ordinary salary for overtime calculation purposes
  4. UMA value update without updating the ISR exemption cap in the overtime perceptions
  5. Formula conflict when the perception was copied from a Sunday premium or other concept and only partially modified

Root Cause

P019 and P020 Perceptions Not Configured or Misconfigured

The NOI perception catalog must have two separate entries for overtime: one for the first 9 weekly hours (double, SAT code 019) and one for hours exceeding that limit (triple, SAT code 020). Many NOI installations only have a generic “horas extra” perception without distinguishing between double and triple time, which generates an error when the CFDI tries to validate codes against the SAT catalog.

Incorrect Calculation Formula

The formula for double-time overtime should calculate: (daily salary ÷ working hours per shift) × overtime hours × 2. For triple-time: (daily salary ÷ working hours per shift) × overtime hours × 3. If the formula is not correctly parameterized in NOI, the result may be double the expected value (the factor 2 or 3 is applied to a quantity that already includes the base salary) or produce an overflow error.

Misconfigured ISR Exemption

The LISR establishes that the first 9 weekly overtime hours are exempt from ISR up to the equivalent of 5 times the weekly UMA value. If the exemption cap in NOI is not updated with the current year’s UMA value, the system may calculate an exemption larger than permitted (causing a CFDI validation error) or smaller than correct (resulting in excess ISR withholding that penalizes the worker).

Payroll Period Conflict

The 9-hour-per-week rule applies regardless of the pay period. If the company pays biweekly, the equivalent limit would be 18 double-time overtime hours per biweekly period (9 × 2 weeks). NOI does not always perform this conversion automatically, and some configurations apply the 9-hour limit to the entire biweekly period, incorrectly calculating the double/triple proportion.

Outdated CFDI Code

The SAT periodically updates its payroll CFDI perception key catalog. If NOI has an old code configured for the overtime perception, the PAC (Authorized Certification Provider) will reject the stamping due to an unrecognized code.

Shift Differential and Heterogeneous Salary

When an employee has a shift differential that modifies their hourly rate, the base salary for overtime calculation may differ from the ordinary salary recorded in NOI. If the formula uses the ordinary salary instead of the effective shift salary, the calculation is incorrect.

Step-by-Step Solution

1. Back Up the NOI Database

Before modifying the perception catalog:

  1. Open Aspel NOI
  2. Go to Utilerías > Respaldo
  3. Select Respaldo completo and save it outside the installation folder
  4. Wait for completion and verify the backup file was created

2. Verify and Create Overtime Perceptions

  1. Go to Configuración > Catálogo de percepciones
  2. Search for perceptions with SAT code 019 and 020
  3. If they do not exist, create two new perceptions:
    • Double-Time Overtime (P019): Type = Percepción, Subtype = Horas Extra, SAT Code = 019
    • Triple-Time Overtime (P020): Type = Percepción, Subtype = Horas Extra, SAT Code = 020
  4. Configure the formula for each one (see step 3)
  5. Activate both perceptions and save changes

3. Configure the Correct Calculation Formula

For Double-Time Overtime (P019):

  • Suggested formula: (SDIARIO / HORAS_JORNADA) * HORAS_EXTRA_DOBLE * 2
  • Where SDIARIO is the ordinary daily salary, HORAS_JORNADA is the legal workday duration, and HORAS_EXTRA_DOBLE are the captured hours

For Triple-Time Overtime (P020):

  • Suggested formula: (SDIARIO / HORAS_JORNADA) * HORAS_EXTRA_TRIPLE * 3

Important note: In NOI, the exact variable names depend on the installed version. Consult the NOI formula manual or contact Aspel support to confirm the correct variable names for your version.

4. Configure the ISR Exemption

  1. In the P019 (Double-Time Overtime) perception, configure:
    • Exemption: Yes, up to the 5 weekly UMA cap
    • The 2026 UMA value is $108.57 daily → Weekly UMA = $760.00 (7 days) → Exempt cap = $760.00 × 5 = $3,800.00 per week
    • Set the exemption cap with the current year’s updated value
  2. In the P020 (Triple-Time Overtime) perception, configure:
    • Exemption: No (0% exempt — fully taxable)

5. Enter Overtime Correctly in Payroll

When recording overtime in the payroll period:

  1. Open the employee payroll record
  2. In perceptions, add P019 and enter hours not exceeding 9 per week
  3. If the employee worked more than 9 overtime hours in the week, add P020 with the excess hours
  4. Verify the system calculates the correct amount before closing the record
  5. Generate a test CFDI and verify that both codes appear with their respective exempt and taxable amounts

6. Stamp and Validate the CFDI

  1. Once amounts are verified, proceed to stamping
  2. If the PAC rejects the CFDI, download the XML generated before rejection
  3. Review the <Percepcion> nodes with keys 019 and 020 and verify that ImporteExento and ImporteGravado correctly sum to TotalImporte
  4. Fix the perception configuration in NOI and re-stamp

Alternative Solution

If you need to stamp urgently and cannot fix the perception configuration immediately:

Manual Amount Entry

  1. Calculate overtime amounts manually:
    • Double-time overtime: (Daily salary ÷ shift hours) × double-time hours × 2
    • Triple-time overtime: (Daily salary ÷ shift hours) × triple-time hours × 3
  2. In NOI, directly edit the perception amount (if your version allows manual mode)
  3. Verify that the exempt amount does not exceed the 5 weekly UMA cap

Difference Adjustment Concept

If NOI does not allow direct amount editing:

  1. Calculate the difference between the correct amount and what NOI calculates automatically
  2. Create a temporary adjustment concept with the correct code
  3. Record the difference as a positive or negative adjustment as appropriate
  4. Clearly document the adjustment to correct the configuration before the next payroll run

Warning: This alternative solution is temporary. You must fix the perception catalog configuration before the next period to prevent the error from recurring and to ensure payroll reports are accurate.

Prevention

To avoid overtime calculation errors in Aspel NOI:

  • Configure P019 and P020 from the initial NOI installation, even if the company does not regularly use overtime — better to have them ready than to create them under pressure
  • Update the UMA value every January at the start of the fiscal year, adjusting the ISR exemption cap in P019
  • Document the weekly limit per payroll period: 9 hours/week = 18 hours/biweekly = 36 hours/month
  • Verify formulas every time you update Aspel NOI to a new version, as updates may reset default values in the perception catalog
  • Run a test calculation with a pilot employee before applying overtime to the entire payroll
  • Keep the SAT catalog updated: periodically download the perception key catalog from the SAT and compare it with what is configured in NOI
  • Train payroll staff on the distinction between double-time and triple-time hours so they correctly enter hours in each perception

Stamping Error: “The perception 019 amount cannot exceed the salary”

This PAC error appears when the calculated exemption exceeds the total perception amount. Review the exemption formula in perception P019 — the exempt amount can never exceed the total perception amount or the 5 weekly UMA cap.

Overtime Not Appearing in IMSS Calculation

Overtime forms part of the variable salary for IMSS purposes. If perceptions P019 and P020 are not marked as “integrable to SBC” in NOI, overtime will not be included in the Base Contribution Salary, generating an error in IMSS fee calculation and SUA/IDSE files.

Incorrect ISR Withholding Due to Overtime

If the calculated ISR does not match the expected withholding, verify that: (a) the P019 exempt amount is correct and does not exceed the 5 weekly UMA cap, and (b) the monthly ISR rate applied to the period’s cumulative amount is correct for the worker’s salary level.

Overtime on Mandatory Rest Days

Hours worked on mandatory rest days (Sundays, official holidays) are not classified as overtime — they have a different perception (Sunday premium or work on rest day). Confusing these hours with P019/P020 generates both a calculation error and an inconsistency in the CFDI.

Summary

  • Overtime calculation errors in Aspel NOI almost always stem from P019/P020 perceptions not configured, incorrect formulas, or an outdated ISR exemption
  • The first 9 weekly overtime hours are paid at double rate (P019); additional hours at triple rate (P020)
  • The ISR exemption for double-time overtime applies up to 5 weekly UMA — update this cap every January
  • Enter overtime in two separate perceptions (P019 and P020) — NOI does not automatically split the double and triple blocks
  • Verify that codes 019 and 020 are in the current SAT catalog and that the CFDI includes correctly calculated ImporteExento and ImporteGravado
  • Overtime integrates into the IMSS SBC — ensure perceptions are marked as integrable
  • Always back up before modifying the NOI perception catalog