Calculadora de préstamo y tabla de amortización: pago, intereses, IVA y CAT

Escribe el monto, la tasa de interés anual y el plazo de tu préstamo y la calculadora te dice cuánto vas a pagar cada mes, quincena o semana, cuánto se va en intereses, IVA, comisión y seguro, el CAT y la tabla de amortización completa, que puedes descargar en CSV. También calcula cuánto te ahorras con pagos anticipados. Todo se calcula en tu navegador: no se envía nada.

Pagos anticipados

Con 0 en «repetir cada», es un solo pago. Con 12 en pagos mensuales, se repite una vez al año.

IVA sobre el interés real

En los créditos de bancos y otras entidades del sistema financiero, la ley cobra el IVA sobre el interés menos la inflación (artículo 18-A de la Ley del IVA). Déjalo vacío para calcularlo sobre todo el interés, como hacen muchos simuladores.

Es una estimación para comparar y hacer cuentas, no una oferta ni asesoría financiera. Supone una tasa fija, que pagas a tiempo y que cada periodo dura lo mismo (la tasa anual se reparte entre 12 meses, 24 quincenas o 52 semanas). Tu banco puede calcular los intereses por días exactos, redondear distinto o cobrar otras comisiones; la tabla de amortización de tu contrato y tu estado de cuenta traen las cifras que cuentan. El CAT oficial de una oferta lo calcula la entidad con la metodología de Banxico y debe aparecer en la publicidad y en la carátula del contrato.

Cómo se calcula el pago de un préstamo

  • Interés de cada periodo = saldo × tasa anual ÷ pagos por año. Con $100,000 al 24 % anual en pagos mensuales, el primer mes generan $100,000 × 0.24 ÷ 12 = $2,000.00 de interés.
  • Sistema francés (pago fijo): el pago de capital más interés es el mismo todos los periodos: pago = saldo × r ÷ (1 − (1 + r)−n), con r la tasa del periodo y n el número de pagos. Con el ejemplo, 24 pagos de $5,287.11. Al principio casi todo se va en intereses ($2,000 del primer pago) y al final casi todo a capital. Es el que usan casi todos los créditos personales, de nómina, automotrices e hipotecarios.
  • Sistema alemán (abono fijo a capital): cada periodo abonas lo mismo a capital ($100,000 ÷ 24 = $4,166.67) más el interés del saldo, así que el pago empieza alto ($6,166.67) y baja hasta $4,249.92. Pagas menos intereses en total ($25,000 contra $26,890.63 del francés), a cambio de pagos más altos al principio.
  • Pagos quincenales o semanales: la tasa anual se divide entre 24 o 52. Con los mismos 24 meses en 48 quincenas, el pago queda en $2,633.38 y los intereses en $26,402.50, un poco menos que en pagos mensuales, porque el saldo baja antes.
  • El último pago se ajusta por los centavos de redondeo para que el saldo quede exactamente en cero.

Cuándo se paga IVA por los intereses de un préstamo

Las tasas de interés se anuncian sin IVA, pero en muchos créditos el IVA del 16 % se cobra aparte sobre los intereses y las comisiones, y eso sube lo que pagas. En el ejemplo, son $4,302.50 de IVA de los intereses más $320 de IVA de la comisión.

  • Créditos personales, de nómina, automotrices y tarjetas de crédito: sí llevan IVA. Los intereses que cobran los bancos están exentos en general (artículo 15, fracción X, inciso b de la Ley del IVA), pero la misma fracción quita la exención en los créditos a personas físicas que no tienen actividad empresarial, ni prestan servicios profesionales independientes, ni rentan inmuebles, y en los de tarjeta de crédito.
  • Créditos hipotecarios para casa habitación: no llevan IVA. No se paga por los intereses de créditos hipotecarios o con garantía fiduciaria para comprar, ampliar, construir o reparar una casa habitación (artículo 15, fracción X, inciso d), ni por las comisiones de su otorgamiento (fracción I). Quita la casilla del IVA para calcular uno.
  • Personas con actividad empresarial: tampoco pagan IVA por los intereses de un crédito del sistema financiero si es para comprar bienes de inversión de su actividad o es refaccionario o de habilitación o avío, y están inscritas en el RFC.
  • Sobre el interés real: en los créditos de bancos y demás entidades del sistema financiero, la base del IVA es el interés menos la inflación del periodo, medida con las UDI (artículo 18-A). Si escribes una inflación estimada en «IVA sobre el interés real», la calculadora la usa: con 4 % anual, el IVA del ejemplo baja de $4,302.50 a $3,585.38. Si no, calcula el 16 % de todo el interés, que es el máximo.
  • Seguros: los de vida y los de crédito a la vivienda no llevan IVA (artículo 15, fracción IX). Los de daños, como el de un auto, sí; escribe el seguro con lo que de verdad pagas al mes.

El CAT y la tasa efectiva estimada

  • CAT (costo anual total): es la tasa que Banxico obliga a informar para comparar créditos. Según la Circular 21/2009, es la tasa anual i que iguala el dinero que recibes con todos tus pagos de capital, intereses, comisiones y seguros obligatorios, sin IVA, suponiendo que pagas a tiempo, sin pagos anticipados, y con periodos iguales: 12 meses, 24 quincenas o 52 semanas por año. Se informa con un decimal y la leyenda «sin IVA». La calculadora lo calcula así: en el ejemplo, 33.4 % sin IVA, contra un 24 % de tasa de interés. Sin comisión ni seguro sería 26.8 %, que es el 24 % capitalizado cada mes.
  • Por qué el CAT de tu banco puede ser distinto: la entidad conoce datos que aquí no están, como las fechas exactas de los pagos, las comisiones que cobra durante el crédito o el seguro que exige. Para comparar ofertas, usa el CAT que viene en la publicidad («CAT promedio») o en la carátula del contrato, y esta calculadora para ver de dónde sale.
  • Tasa efectiva estimada: es la misma cuenta, pero con lo que de verdad sale de tu bolsillo: el IVA de los intereses y de la comisión, el seguro aunque sea opcional y los pagos anticipados. En el ejemplo, 39.0 %. No es una cifra oficial, pero dice mejor cuánto te cuesta el dinero.

Pagos anticipados: reducir el plazo o el pago

  • Van completos a capital: la Circular 16/2007 de Banxico obliga a bancos, sofoles y sofomes reguladas a aplicar los pagos anticipados al saldo insoluto, y a aceptarlos en créditos de menos de 900,000 UDI y en todos los hipotecarios, si estás al corriente y el pago es igual o mayor que el del periodo.
  • Reducir el pago: es lo que marca la regla si no pactas otra cosa. Se conserva el plazo y el pago se recalcula con el saldo nuevo. En el ejemplo, $10,000 extra con el pago 6 bajan el pago de $5,287.11 a $4,620.09, y te ahorras $2,327.43 entre intereses e IVA.
  • Reducir el plazo: si lo pactas con tu banco, sigues pagando lo mismo y terminas antes. Con los mismos $10,000 terminas en 22 pagos y te ahorras $4,982.69 entre intereses, IVA y seguro: el doble que reduciendo el pago, porque el saldo baja más rápido.
  • Pagos repetidos: con «repetir cada» puedes simular, por ejemplo, abonar tu aguinaldo cada diciembre: un pago extra cada 12 pagos mensuales.

Preguntas frecuentes

  • ¿Por qué la tasa efectiva sube con un pago anticipado si pago menos intereses? Porque la comisión por apertura ya la pagaste al principio, y al terminar antes queda repartida en menos tiempo. Lo que cuenta para tu bolsillo es el costo total del crédito, que sí baja.
  • ¿La tabla incluye la comisión? Sí: aparece como «Firma», el pago cero, porque se cobra al contratar o se descuenta del dinero que recibes. En el CSV va en la primera fila.
  • ¿Cómo abro el CSV? En Excel, LibreOffice o Google Sheets. Usa coma para separar columnas y punto para los decimales, sin separador de miles, para que las cifras se lean como números.
  • ¿Sirve para tarjetas de crédito? No: una tarjeta no tiene pagos fijos y su interés depende de cuánto uses y pagues cada mes. Sí sirve para compras a meses con intereses, que se amortizan como un crédito de pago fijo.

La tabla de amortización en Python

Con Decimal, para que cada centavo cuadre, y el CAT con una búsqueda por bisección:

from decimal import Decimal as D, ROUND_HALF_UP, getcontext

getcontext().prec = 60
IVA = D("0.16")                                  # LIVA, art. 1 (no aplica a hipotecarios de casa habitación)
PAGOS_POR_ANIO = {"mensual": 12, "quincenal": 24, "semanal": 52}


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


def pago_fijo(saldo, r, n):
    """Pago de capital más interés del sistema francés: saldo · r / (1 − (1 + r)^−n)."""
    if r == 0:
        return al_centavo(saldo / n)
    q = (1 + r) ** n
    return al_centavo(saldo * r * q / (q - 1))


def amortizar(monto, tasa_anual, pagos, periodo="mensual", aleman=False, con_iva=True,
              seguro_mes=D(0), anticipados=(), modo="pago", inflacion=None):
    """Tabla de amortización. anticipados: [(monto, desde_el_pago, cada_n_pagos o 0)]. Con inflación (anual, en %),
    el IVA se calcula sobre el interés real, como pide el artículo 18-A de la Ley del IVA."""
    monto, tasa = D(str(monto)), D(str(tasa_anual))
    n = PAGOS_POR_ANIO[periodo]
    r = tasa / 100 / n                             # tasa del periodo: la anual entre los pagos del año
    seguro = al_centavo(D(str(seguro_mes)) * 12 / n)
    saldo = monto
    pago = al_centavo(monto / pagos) if aleman else pago_fijo(monto, r, pagos)
    filas = []
    for p in range(1, pagos + 1):
        if saldo <= 0:
            break
        interes = al_centavo(saldo * tasa / (100 * n))   # una sola división: los empates de medio centavo, exactos
        capital = max(pago if aleman else pago - interes, D(0))
        if p == pagos or capital > saldo:
            capital = saldo
        base = interes if inflacion is None else al_centavo(saldo * max(tasa - D(str(inflacion)), D(0)) / 100 / n)
        iva = al_centavo(base * IVA) if con_iva else D(0)
        saldo -= capital
        extra = sum((D(str(m)) for m, desde, cada in anticipados
                     if p >= desde and ((p - desde) % cada == 0 if cada else p == desde)), D(0))
        extra = min(extra, saldo)
        saldo -= extra
        if extra and saldo and modo == "pago" and p < pagos:   # se reduce el pago y se conserva el plazo
            pago = al_centavo(saldo / (pagos - p)) if aleman else pago_fijo(saldo, r, pagos - p)
        filas.append(dict(pago=p, capital=capital, interes=interes, iva=iva, anticipado=extra,
                          seguro=seguro, total=capital + interes + iva + seguro + extra, saldo=saldo))
    return filas


def tasa_anual_efectiva(flujos, n):
    """La tasa por periodo que hace cero el valor presente (bisección), llevada a un año."""
    def vpn(r):
        return sum(f / (1 + r) ** k for k, f in enumerate(flujos))
    bajo, alto = 0.0, 1.0
    for _ in range(100):
        medio = (bajo + alto) / 2
        bajo, alto = (bajo, medio) if vpn(medio) > 0 else (medio, alto)
    return ((1 + (bajo + alto) / 2) ** n - 1) * 100


if __name__ == "__main__":
    # $100,000 al 24 % anual, 24 pagos mensuales, comisión del 2 % más IVA y seguro de $150 al mes
    monto, comision = D("100000"), D("2000")
    filas = amortizar(monto, "24", 24, seguro_mes="150")
    print("Pago  Capital     Interés    IVA      Seguro   Total      Saldo")
    for f in filas[:3] + filas[-1:]:
        print(f"{f['pago']:>4}  {f['capital']:>10,}  {f['interes']:>9,}  {f['iva']:>7,}  {f['seguro']:>7,}"
              f"  {f['total']:>9,}  {f['saldo']:>10,}")
    intereses = sum(f["interes"] for f in filas)
    iva = sum(f["iva"] for f in filas) + al_centavo(comision * IVA)
    print(f"Intereses: ${intereses:,}   IVA: ${iva:,}")
    print(f"Total pagado: ${sum(f['total'] for f in filas) + comision * (1 + IVA):,.2f}")
    # CAT de Banxico: sin IVA ni pagos anticipados, con la comisión y el seguro obligatorio
    cat = tasa_anual_efectiva([float(monto - comision)] +
                              [-float(f["capital"] + f["interes"] + f["seguro"]) for f in filas], 12)
    print(f"CAT: {cat:.1f} % sin IVA")
    # con $10,000 extra en el pago 6, para pagar menos meses
    otra = amortizar(monto, "24", 24, seguro_mes="150", anticipados=[(10000, 6, 0)], modo="plazo")
    ahorro = sum(f["total"] for f in filas) - sum(f["total"] for f in otra)
    print(f"Con $10,000 en el pago 6: {len(otra)} pagos y ${ahorro:,} menos en intereses, IVA y seguro")
$ python3 prestamo.pyPago  Capital     Interés    IVA      Seguro   Total      Saldo
   1    3,287.11   2,000.00   320.00   150.00   5,757.11   96,712.89
   2    3,352.85   1,934.26   309.48   150.00   5,746.59   93,360.04
   3    3,419.91   1,867.20   298.75   150.00   5,735.86   89,940.13
  24    5,183.43     103.67    16.59   150.00   5,453.69        0.00
Intereses: $26,890.63   IVA: $4,622.50
Total pagado: $137,113.13
CAT: 33.4 % sin IVA
Con $10,000 en el pago 6: 22 pagos y $4,982.69 menos en intereses, IVA y seguro

Otras herramientas para México: la calculadora de sueldo neto, la de aguinaldo, la calculadora de IVA y el validador de CLABE. Todas, en decodigo.com/herramientas.

IVA: Ley del Impuesto al Valor Agregado, artículos 1 (tasa del 16 %), 15, fracciones I, IX y X, y 18-A (texto vigente, última reforma del DOF del 12 de noviembre de 2021). CAT: Circular 21/2009 del Banco de México, DOF del 4 de septiembre de 2009, numerales 4 y 5, con sus reformas posteriores, entre ellas la Circular 9/2015 sobre seguros obligatorios. Pagos anticipados y contenido de la tabla de amortización: Circular 16/2007 del Banco de México, numerales 2.1 y 3. La herramienta y la función de Python se compararon en 20,000 préstamos al azar, con montos, tasas, plazos, periodicidades, sistemas, comisiones, seguros y pagos anticipados distintos: coinciden al centavo en todos los conceptos, y el pago fijo y el CAT coinciden con los de numpy-financial.