Calculadora de aguinaldo 2026: cuánto te toca, proporcional y con el ISR

Escribe tu sueldo y la calculadora te dice cuánto aguinaldo te toca en 2026: los 15 días de salario que marca la ley o los que dé tu empresa, la parte proporcional si entraste o saliste a mitad de año, cuánto está exento de impuestos y cuánto ISR te pueden retener. Todo se calcula en tu navegador: no se envía nada.

Es una ayuda para hacer cuentas, no asesoría laboral ni fiscal. Deja las fechas en blanco si trabajaste todo 2026 con el mismo patrón. El ISR es una estimación: no incluye el subsidio para el empleo ni otros ingresos del mes, como horas extra o comisiones. El cálculo exacto está en tu recibo de nómina (CFDI).

Cómo se calcula el aguinaldo

  • Salario diario: el sueldo mensual se divide entre 30, el quincenal entre 15 y el semanal entre 7. Con $18,000 al mes, el salario diario es de $600.
  • Aguinaldo completo: salario diario × 15 días. $600 × 15 = $9,000. Si tu contrato da más días, como 20 o 30, se multiplica por esos días.
  • Aguinaldo proporcional: si no trabajaste todo el año, se paga la parte que corresponde a los días trabajados: aguinaldo completo × días trabajados ÷ 365. Si entraste el 1 de julio, son 184 días: $9,000 × 184 ÷ 365 = $4,536.99. Te toca aunque ya no trabajes en la empresa cuando llegue diciembre: se incluye en el finiquito.
  • Cuándo se paga: antes del 20 de diciembre, es decir, a más tardar el 19.

La parte exenta y el ISR

  • Exento: no paga impuestos hasta 30 veces la UMA diaria. En 2026 la UMA vale $117.31, así que el límite es $3,519.30. La Ley del ISR todavía dice «30 salarios mínimos», pero desde la reforma constitucional de 2016 esas referencias se leen como UMA.
  • Gravado: lo que pasa de $3,519.30. Con $9,000 de aguinaldo, el gravado es de $5,480.70.
  • Método del artículo 96 de la LISR: se suma el gravado al sueldo del mes (salario diario × 30.4) y se calcula el ISR con la tarifa mensual. La retención es la diferencia con el ISR del mes sin aguinaldo. Con $18,000 al mes: el ISR de $23,720.70 es $3,178.39, el de $18,240 es $2,007.72, y la retención, $1,170.67.
  • Método del artículo 174 del Reglamento: es opcional para el patrón. El gravado se divide entre 365 y se multiplica por 30.4, y con esa parte se saca una tasa que se aplica a todo el gravado. Cuando el aguinaldo hace que el sueldo del mes cambie de renglón en la tarifa, este método suele retener menos.
  • Si te retienen de más: el ISR de la nómina es un pago a cuenta. En la declaración anual se calcula el impuesto del año completo, y lo retenido de más se puede pedir como saldo a favor.

Calcular el aguinaldo en Python

Con Decimal y datetime.date, para que los centavos y los días salgan exactos:

from datetime import date
from decimal import Decimal as D, ROUND_HALF_UP

UMA_2026 = D("117.31")
# Tarifa mensual del ISR de 2026 (Anexo 8 de la RMF): límite inferior, cuota fija, % sobre el excedente
TARIFA = [("0.01", "0.00", "1.92"), ("844.60", "16.22", "6.40"), ("7168.52", "420.95", "10.88"),
          ("12598.03", "1011.68", "16.00"), ("14644.65", "1339.14", "17.92"), ("17533.65", "1856.84", "21.36"),
          ("35362.84", "5665.16", "23.52"), ("55736.69", "10457.09", "30.00"), ("106410.51", "25659.23", "32.00"),
          ("141880.67", "37009.69", "34.00"), ("425642.00", "133488.54", "35.00")]
TARIFA = [tuple(map(D, fila)) for fila in TARIFA]


def al_centavo(x):
    return x.quantize(D("0.01"), ROUND_HALF_UP)


def isr_mensual(base):
    if base <= 0:
        return D(0)
    li, cuota, pct = [f for f in TARIFA if base >= f[0]][-1]
    return cuota + al_centavo((base - li) * pct / 100)


def aguinaldo(sueldo, dividir_entre=30, dias=15, ingreso=None, baja=None, anio=2026):
    """sueldo del periodo; dividir_entre: 1 diario, 7 semanal, 15 quincenal, 30 mensual."""
    sueldo = D(str(sueldo))
    inicio, fin = date(anio, 1, 1), date(anio, 12, 31)
    desde, hasta = max(ingreso or inicio, inicio), min(baja or fin, fin)
    trabajados = (hasta - desde).days + 1
    dias_anio = (fin - inicio).days + 1
    bruto = al_centavo(sueldo * dias * trabajados / (dividir_entre * dias_anio))
    exento = min(bruto, 30 * UMA_2026)
    gravado = bruto - exento
    mensual = al_centavo(sueldo * D("30.4") / dividir_entre)
    # Artículo 96 de la LISR: el ISR del mes con el aguinaldo menos el ISR del mes sin él
    isr_96 = isr_mensual(mensual + gravado) - isr_mensual(mensual)
    # Artículo 174 del Reglamento: la tasa de la parte mensualizada, aplicada a todo lo gravado
    parte = al_centavo(gravado * D("30.4") / 365)
    isr_174 = D(0)
    if parte > 0:
        isr_174 = al_centavo(gravado * (isr_mensual(mensual + parte) - isr_mensual(mensual)) / parte)
    return {"dias_trabajados": trabajados, "aguinaldo": bruto, "exento": exento, "gravado": gravado,
            "isr_art_96": isr_96, "isr_art_174": isr_174, "neto_art_174": bruto - isr_174}


for clave, valor in aguinaldo("18000").items():
    print(f"{clave:15} {valor:>10,}" if isinstance(valor, int) else f"{clave:15} {valor:>10,.2f}")
print()
print(aguinaldo("18000", ingreso=date(2026, 7, 1))["aguinaldo"])   # entró el 1 de julio: 184 días
print(aguinaldo("315.04", dividir_entre=1)["isr_art_174"])         # salario mínimo
$ python3 aguinaldo.pydias_trabajados        365
aguinaldo         9,000.00
exento            3,519.30
gravado           5,480.70
isr_art_96        1,170.67
isr_art_174       1,170.65
neto_art_174      7,829.35

4536.99
131.23

Si dejas tu trabajo, la calculadora de finiquito y liquidación suma el aguinaldo proporcional a las vacaciones, la prima de antigüedad y las indemnizaciones. Otras herramientas para México: la calculadora de IVA, la cantidad con letra y los validadores de RFC, CURP, CLABE y NSS. Todas, en decodigo.com/herramientas.

Aguinaldo: Ley Federal del Trabajo, artículo 87. Parte exenta: Ley del ISR, artículo 93, fracción XIV, y retención, artículo 96; método opcional: Reglamento de la Ley del ISR, artículo 174. Tarifa mensual de 2026: Anexo 8 de la RMF 2026 (DOF del 28 de diciembre de 2025). UMA 2026: INEGI, comunicado 1/26, en vigor desde el 1 de febrero de 2026. Salario mínimo de 2026 ($315.04 diarios): resolución de la Conasami. La herramienta y la función de Python se compararon en 20,000 cálculos al azar, con sueldos, periodos, días y fechas distintos: coinciden al centavo en todos.