Escribe tu sueldo, la fecha en que entraste y la de tu salida, y elige cómo termina la relación de trabajo. La calculadora te dice cuánto te corresponde de finiquito (lo que se paga siempre) y de liquidación (lo que se añade si te despiden), cuánto está exento de impuestos y cuánto ISR te pueden retener. Todo se calcula en tu navegador: no se envía nada.
Más opciones
Es una ayuda para hacer cuentas, no asesoría legal ni fiscal. Lo que te toca depende de tu contrato y de cómo terminó la relación de trabajo. Antes de firmar un finiquito o una renuncia, puedes pedir asesoría gratuita en la Procuraduría Federal de la Defensa del Trabajo (PROFEDET). El ISR es una estimación: no incluye el subsidio para el empleo ni otros ingresos del mes.
Finiquito y liquidación: la diferencia
- Finiquito: lo que el patrón te debe en cualquier separación, también si renuncias. Es el sueldo que aún no has cobrado, las vacaciones que no tomaste, su prima vacacional y la parte proporcional del aguinaldo.
- Liquidación: lo que se añade al finiquito cuando el patrón te despide sin causa justificada, o cuando tú te separas por una falta del patrón. Son las indemnizaciones y la prima de antigüedad.
Qué te toca según cómo termina
- Renuncia voluntaria: solo el finiquito. La prima de antigüedad se suma si tienes 15 años de servicio o más.
- Despido injustificado: finiquito, prima de antigüedad e indemnización de tres meses de salario (artículo 48). Los 20 días por año del artículo 50 corresponden cuando el patrón no te reinstala porque se acoge al artículo 49: por ejemplo, si llevabas menos de un año, si eras de confianza o eventual, o en el trabajo del hogar. Por eso son una opción de la calculadora. En los acuerdos de salida también se negocian con frecuencia.
- Despido justificado: si el patrón tiene una causa del artículo 47, como tener más de tres faltas en 30 días sin permiso ni causa justificada, te corresponden el finiquito y la prima de antigüedad, pero no la indemnización.
- Te separas por culpa del patrón: por ejemplo, si te reduce el sueldo o no te paga a tiempo (artículo 51). Tienes 30 días para hacerlo y te corresponde lo mismo que en el despido injustificado, con los 20 días por año incluidos (artículo 52).
Cómo se calcula cada concepto
El ejemplo es el de la calculadora: un sueldo de $18,000 al mes ($600 diarios), con ingreso el 15 de marzo de 2021 y salida el 31 de octubre de 2026, por despido injustificado.
- Salario diario: el sueldo mensual entre 30, el quincenal entre 15 y el semanal entre 7.
- Salario diario integrado: el diario más la parte diaria del aguinaldo y de la prima vacacional. $600 × (1 + 15/365 + 22 × 25 %/365) = $633.70. Se usa para las indemnizaciones. Si recibes bonos, vales u otras prestaciones fijas, tu salario integrado es mayor.
- Vacaciones proporcionales: desde la reforma de 2023 son 12 días el primer año, 14 el segundo, 16, 18 y 20 el quinto. Del sexto al décimo año son 22, y suben dos días cada cinco años. Se pagan los días del año de servicio en curso: el sexto año empezó el 15 de marzo de 2026, y hasta el 31 de octubre van 231 días. $600 × 22 × 231/365 = $8,353.97.
- Prima vacacional: al menos el 25 % de las vacaciones que se pagan: $2,088.49.
- Aguinaldo proporcional: 15 días de salario por los días trabajados en el año. Del 1 de enero al 31 de octubre son 304 días: $600 × 15 × 304/365 = $7,495.89. Lo explica a fondo la calculadora de aguinaldo.
- Prima de antigüedad: 12 días de salario por año de servicio, contando la fracción del último año. El salario no puede ser menor que el mínimo ni mayor que el doble del mínimo de tu zona: en 2026, $630.08 diarios en el resto del país y $881.74 en la frontera norte. Con 2,057 días de servicio: $630.08 × 12 × 2,057/365 = $42,610.67.
- Indemnización de tres meses: 90 días de salario integrado: $633.70 × 90 = $57,033.00.
- 20 días por año: 20 días de salario integrado por año de servicio, también con la fracción del último año.
- Salarios vencidos: no se incluyen. Solo se pagan si un tribunal resuelve que el despido fue injustificado, y como máximo por 12 meses.
La parte exenta y el ISR
- Aguinaldo: exento hasta 30 UMA ($3,519.30 en 2026).
- Prima vacacional: exenta hasta 15 UMA ($1,759.65).
- Prima de antigüedad e indemnizaciones: exentas hasta 90 UMA por año de servicio ($10,557.90 por año). Una fracción de más de seis meses cuenta como año completo: en el ejemplo, 5 años y siete meses y medio cuentan como 6 años, y el límite es $63,347.40.
- Sueldo y vacaciones: pagan ISR completos, con la tarifa mensual, como cualquier sueldo.
- Retención de los pagos por separación: a lo gravado de la liquidación se le aplica la tasa efectiva de tu último sueldo mensual, que es el ISR de ese sueldo entre el propio sueldo (artículo 96 de la LISR). Si lo gravado es menor que el sueldo mensual, se usa la tarifa normal. En la declaración anual se ajusta lo retenido.
Calcular el finiquito en Python
Con Decimal y datetime.date, para que los centavos y los días salgan exactos:
from datetime import date, timedelta
from decimal import Decimal as D, ROUND_HALF_UP
UMA = D("117.31") # 2026
MINIMO = {"general": D("315.04"), "frontera": D("440.87")}
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 sumar_meses(f, meses):
"""Como Date.UTC de JavaScript: el 29 de febrero de un año no bisiesto pasa al 1 de marzo."""
anio, mes = divmod(f.month - 1 + meses, 12)
return date(f.year + anio, mes + 1, 1) + timedelta(days=f.day - 1)
def dias_vacaciones(n):
"""Artículo 76 de la LFT: 12, 14, 16, 18, 20 y, desde el sexto año, dos más por cada cinco."""
return 10 + 2 * n if n <= 5 else 20 + 2 * -(-(n - 5) // 5)
def finiquito(sueldo, ingreso, salida, dividir_entre=30, tipo="renuncia", veinte_dias=False, dias_aguinaldo=15,
prima_vacacional=25, dias_pendientes=0, vacaciones_pendientes=0, zona="general"):
"""sueldo del periodo; dividir_entre: 1 diario, 7 semanal, 15 quincenal, 30 mensual.
tipo: "renuncia", "injustificado", "justificado" o "rescision" (te separas por culpa del patrón)."""
s, n = D(str(sueldo)), dividir_entre # salario diario = s / n
k = 0
while sumar_meses(ingreso, 12 * (k + 1)) <= salida:
k += 1
aniversario = sumar_meses(ingreso, 12 * k)
en_curso = min((salida - aniversario).days + 1, 365)
antiguedad = (salida - ingreso).days + 1
vac_anio = dias_vacaciones(k + 1)
sdi = al_centavo(s * (36500 + 100 * dias_aguinaldo + vac_anio * prima_vacacional) / (n * 36500))
c = {"salario": al_centavo(s * dias_pendientes / n),
"vacaciones": al_centavo(s * vac_anio * en_curso / (n * 365)),
"vacaciones_pendientes": al_centavo(s * vacaciones_pendientes / n)}
c["prima_vacacional"] = al_centavo((c["vacaciones"] + c["vacaciones_pendientes"]) * prima_vacacional / 100)
inicio_anio = date(salida.year, 1, 1)
dias_anio = (date(salida.year, 12, 31) - inicio_anio).days + 1
trabajados = (salida - max(ingreso, inicio_anio)).days + 1
c["aguinaldo"] = al_centavo(s * dias_aguinaldo * trabajados / (n * dias_anio))
minimo = MINIMO[zona]
base_prima = min(max(sdi, minimo), 2 * minimo) # artículos 485 y 486
paga_prima = tipo != "renuncia" or k >= 15
indemniza = tipo in ("injustificado", "rescision")
veinte = tipo == "rescision" or (tipo == "injustificado" and veinte_dias)
c["prima_antiguedad"] = al_centavo(base_prima * 12 * antiguedad / 365) if paga_prima else D(0)
c["tres_meses"] = sdi * 90 if indemniza else D(0)
c["veinte_dias"] = al_centavo(sdi * 20 * antiguedad / 365) if veinte else D(0)
separacion = c["prima_antiguedad"] + c["tres_meses"] + c["veinte_dias"]
total = sum(c.values())
# Exentos: aguinaldo 30 UMA, prima vacacional 15 UMA, separación 90 UMA por año (más de 6 meses = 1 año)
anios_isr = k + (1 if salida >= sumar_meses(ingreso, 12 * k + 6) else 0)
ex_ag, ex_pv = min(c["aguinaldo"], 30 * UMA), min(c["prima_vacacional"], 15 * UMA)
ex_sep = min(separacion, 90 * UMA * anios_isr)
mensual = al_centavo(s * D("30.4") / n)
base = isr_mensual(mensual)
extras = c["vacaciones"] + c["vacaciones_pendientes"] + c["prima_vacacional"] - ex_pv + c["aguinaldo"] - ex_ag
isr = al_centavo(base * dias_pendientes / D("30.4")) + isr_mensual(mensual + extras) - base
gravado_sep = separacion - ex_sep
if 0 < gravado_sep < mensual:
isr += isr_mensual(gravado_sep)
elif gravado_sep > 0:
isr += al_centavo(gravado_sep * base / mensual)
return {"anios": k, "sdi": sdi, **c, "total": total, "isr": isr, "neto": total - isr}
r = finiquito("18000", date(2021, 3, 15), date(2026, 10, 31), tipo="injustificado", dias_pendientes=10)
for clave, valor in r.items():
print(f"{clave:22} {valor:>12,}" if isinstance(valor, int) else f"{clave:22} {valor:>12,.2f}")
print()
print(finiquito("18000", date(2021, 3, 15), date(2026, 10, 31))["total"]) # la misma persona, si renuncia$ python3 finiquito.pyanios 5 sdi 633.70 salario 6,000.00 vacaciones 8,353.97 vacaciones_pendientes 0.00 prima_vacacional 2,088.49 aguinaldo 7,495.89 prima_antiguedad 42,610.67 tres_meses 57,033.00 veinte_dias 0.00 total 123,582.02 isr 7,359.69 neto 116,222.33 17938.35
Otras herramientas para México: la calculadora de aguinaldo, la calculadora de IVA, la cantidad con letra y los validadores de RFC, CURP, CLABE y NSS. Todas, en decodigo.com/herramientas.
Finiquito e indemnizaciones: Ley Federal del Trabajo, artículos 47 a 52 (el 49 y el 50, reformados en el DOF del 24 de diciembre de 2024), 76 (vacaciones, reformado en el DOF del 27 de diciembre de 2022), 79 y 80 (vacaciones proporcionales y prima vacacional), 84 (salario integrado), 87 (aguinaldo), 162 (prima de antigüedad), 485 y 486 (salario mínimo y máximo). Exenciones y retención: Ley del ISR, artículos 93 (fracciones XIII y XIV), 95 y 96. Tarifa mensual de 2026: Anexo 8 de la RMF 2026. UMA 2026: INEGI. Salarios mínimos de 2026 ($315.04 y $440.87 en la frontera norte): resolución de la Conasami. La herramienta y la función de Python se compararon en 20,000 cálculos al azar, con sueldos, fechas y motivos distintos: coinciden al centavo en todos.