Valor presente de una anualidad ordinaria: calculadora y API
Veinticuatro pagos mensuales de 500, descontados al 1 % mensual, valen hoy 10 621,69. Úselo para convertir un arrendamiento, la cuota de un préstamo o los cheques de una pensión en un único importe comparable. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Pago
- 500
- Tasa por período
- 0,01
- Períodos
- 24
- Valor presente
- 10 621,69
Aplica la fórmula cerrada de descuento y devuelve un solo número, el valor presente, en la misma unidad monetaria de su pago. Úsela para calcular el principal de un préstamo a partir de su cuota, valorar un arrendamiento, comparar los pagos mensuales de una pensión con una oferta de compra única, o verificar el capital detrás de una cotización de financiamiento: una llamada determinista, sin hoja de cálculo ni registro.
Qué es realmente el valor presente de una anualidad
Una anualidad es una corriente de pagos iguales a intervalos regulares, y su valor presente es lo que vale esa corriente hoy, una vez que cada pago se ha descontado con la tasa de interés por período. Si recibe 500 dentro de un mes al 1% mensual, ese primer pago vale hoy 500 dividido entre 1.01; el segundo se descuenta por 1.01 al cuadrado, y así hasta el último, descontado por 1.01 elevado al número de períodos.
La fórmula cerrada, valor presente = pago x ((1 - (1 + r)^-n) / r), es exactamente esa suma de pagos descontados condensada en una sola expresión, y es la misma fórmula que está detrás de la valoración de hipotecas, arrendamientos y el capítulo de valor del dinero en el tiempo de todo libro de finanzas. Como la tasa se expresa por período, el cálculo funciona con cualquier frecuencia: una tasa mensual con pagos mensuales, una tasa anual con pagos anuales, o cualquier otra pareja coherente.
Lo importante es la coherencia: la tasa y el número de períodos deben describir el mismo intervalo. Si envía una tasa anual con un conteo de pagos mensuales, la valoración será errónea por construcción, y ninguna calculadora puede rescatar unidades incompatibles. Mantenga ambas alineadas y el resultado es exacto, determinista y reproducible en cualquier máquina, razón por la cual el mismo cálculo se ejecuta de forma idéntica en su navegador y en nuestro edge.
Cómo aprovecharla bien y qué no hace
Los usos típicos caen en tres patrones. Los equipos de finanzas y compras valoran con ella arrendamientos y contratos de suscripción: una cuota periódica fija durante un plazo fijo se convierte en una sola suma comparable. Y los equipos de producto la integran detrás de sus propias calculadoras de precios para que las matemáticas de descuento se mantengan en un solo lugar, en vez de reimplementarse —a menudo mal— en cada frontend.
Devuelve solo el valor presente; no produce la tabla de amortización período a período con la separación entre capital e intereses. Asume una anualidad ordinaria, es decir, pagos al final de cada período; una anualidad anticipada, con pagos al inicio, vale un factor adicional de (1 + r) más. Y modela una tasa constante sin comisiones, impuestos, inflación ni cambios en los pagos.
Cuando su caso encaja en el modelo simple de descuento, esta es la herramienta correcta; cuando no, calcule aquí la base y añada los extras en su propio código.
Qué puede hacer con ella
Calcular el principal de un préstamo a partir de su cuota
Derive el capital que una cuota mensual fija soporta a una tasa periódica dada, antes de que el prestatario firme el financiamiento.
Valorar un arrendamiento o una suscripción
Convierta una corriente de cuotas periódicas iguales en un plazo fijo en un valor único comparable con un precio de contado.
Comparar una pensión con una oferta de compra
Descuente una serie de cheques mensuales iguales a su valor de hoy y compárelo con una oferta de pago único en igualdad de condiciones.
Preguntas frecuentes
¿Cuánto cuesta?
También es gratis ejecutarlo en su navegador en esta página.
¿La tasa es un porcentaje o un decimal?
Un decimal por período: 0.01 significa 1% por período. Divida un porcentaje anual entre 100 y luego entre el número de períodos por año.
¿Qué pasa con una tasa del 0%?
Está soportada: el valor presente es simplemente el pago multiplicado por el número de períodos, que es el límite exacto de la fórmula con interés cero.
¿Devuelve la tabla de amortización período a período?
No. Devuelve únicamente la suma única descontada; el desglose por período es una capacidad aparte.
¿Es una anualidad anticipada u ordinaria?
Una anualidad ordinaria: se asume que los pagos caen al final de cada período. Para una anualidad anticipada, multiplique el resultado por (1 + tasa) de su lado.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/fin/annuity-present-value \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"payment":500,"rate_per_period":0.01,"periods":24}'const res = await fetch("https://api.kit.forhosting.com/fin/annuity-present-value", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"payment": 500,
"rate_per_period": 0.01,
"periods": 24
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/fin/annuity-present-value",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"payment": 500,
"rate_per_period": 0.01,
"periods": 24
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/fin/annuity-present-value", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"payment":500,"rate_per_period":0.01,"periods":24}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"payment":500,"rate_per_period":0.01,"periods":24}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/fin/annuity-present-value", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"payment": 500,
"rate_per_period": 0.01,
"periods": 24
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fin.annuity_present_value",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_periods | 1200 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
La API de valor presente de una anualidad responde a la pregunta clásica del descuento financiero: si usted recibe la misma cantidad al final de cada período y el dinero gana una tasa de interés fija por período, ¿qué suma única de hoy equivale a esa corriente de pagos?
Entradas, unidades y casos límite
El pago es la cantidad recibida al final de cada período —la cuota de un préstamo, el pago de un arrendamiento, el cheque de una pensión— y debe ser positivo. Dos casos límite se tratan de forma deliberada. Además, el valor presente devuelto se redondea a dos decimales —centavos—, de modo que la respuesta es estable byte a byte entre ejecuciones y entre máquinas. El endpoint recibe tres números. La tasa por período es un decimal, de modo que el 1% mensual es 0.01, ni 1 ni 0.01%, y debe ser no negativa; una tasa negativa se rechaza con un error invalid_input y nunca se cobra. El campo de períodos es el número de pagos y debe ser un entero positivo de hasta 1200, que cubre con holgura cien años de pagos mensuales; cero, un conteo negativo o un valor no entero carecen de sentido aquí y se rechazan con invalid_input. Una tasa cero es válida y significa que no hay descuento alguno: el valor presente es exactamente el pago multiplicado por el número de períodos, que es el límite matemático correcto de la fórmula cuando la tasa tiende a cero, así que el endpoint lo devuelve directamente en lugar de fallar por una división entre cero.
Cómo aprovecharla bien y qué no hace
Conviene ser claro sobre lo que el endpoint deja fuera deliberadamente. Esas omisiones son lo que la mantiene rápida, barata a $0.002 por solicitud y exactamente predecible.
Preguntas técnicas
¿Qué ocurre si el número de períodos es cero o negativo?
La solicitud falla con un error invalid_input y no se cobra: un número de períodos no positivo no tiene sentido en este modelo.