Calculadora de desperdicio de suscripciones
Un plan mensual de 15,99 que nadie usó durante 4 meses supone 63,96 de desperdicio al año, y esta calculadora hace esa cuenta para cada suscripción de su lista. Los cobros semanales, trimestrales y anuales se pasan antes a un importe mensual. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Un gimnasio que usted dejó de visitar, una prueba de streaming que pasó a un plan de pago y un puesto SaaS en el que nadie inicia sesión siguen dejando el mismo cargo en cada extracto. Esta calculadora de desperdicio de suscripciones convierte el coste, el ciclo de facturación y los meses sin uso de cada suscripción en dinero perdido por año, de modo que un hogar o un equipo vea la fuga anual en lugar de un total de gasto bruto. Los planes semanales, mensuales y anuales se convierten primero a un equivalente mensual con factores de periodo fijos y luego se multiplican por los meses ociosos en una ventana de doce meses. El resultado es una cifra determinista de desperdicio anual que usted puede fijar en un bot de presupuesto o en una reunión de cancelar o conservar. Los costes negativos se rechazan como entrada inválida porque un libro de desperdicio no es una calculadora de reembolsos.
Qué puede hacer con ella
Auditoría doméstica de streaming ocioso
Liste cada plan de streaming, gimnasio y noticias con cuántos meses nadie lo usó y vea al instante la fuga anual del hogar más el desperdicio de cada servicio inactivo.
Desperdicio de puestos SaaS del equipo
Convierta renovaciones anuales de software y asientos mensuales en desperdicio por meses ociosos para que compras cancele licencias inactivas antes de la siguiente factura.
Preguntas frecuentes
¿Cómo se calcula el desperdicio de suscripciones por año?
Cada cost se escala a un equivalente mensual según su ciclo de facturación y luego se multiplica por los meses sin uso en una ventana de doce meses (tope en 12).
¿Qué ocurre si el coste de una suscripción es negativo?
Los costes de suscripción deben ser no negativos; los valores negativos se rechazan y no se cobran.
¿Cómo se convierten los ciclos de facturación anuales y semanales?
Weekly usa cincuenta y dos periodos, biweekly veintiséis, quarterly cuatro y semiannual dos; después los meses ociosos se aplican a esa cifra mensual.
¿Qué pasa si una suscripción estuvo sin uso más de 12 meses?
El desperdicio anual limita los meses ociosos a 12, de modo que la línea informa un año completo de coste como fuga.
¿Es gratuita la calculadora de desperdicio de suscripciones?
La herramienta del navegador se ejecuta gratis en su dispositivo.
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/subscription-waste \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"subscriptions":[{"name":"Streaming","cost":15.99,"billing_cycle":"monthly","months_unused":4},{"name":"Cloud storage","cost":119.88,"billing_cycle":"yearly","months_unused":6},{"name":"News","cost":12,"billing_cycle":"monthly","months_unused":0}]}'const res = await fetch("https://api.kit.forhosting.com/fin/subscription-waste", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"subscriptions": [
{
"name": "Streaming",
"cost": 15.99,
"billing_cycle": "monthly",
"months_unused": 4
},
{
"name": "Cloud storage",
"cost": 119.88,
"billing_cycle": "yearly",
"months_unused": 6
},
{
"name": "News",
"cost": 12,
"billing_cycle": "monthly",
"months_unused": 0
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/fin/subscription-waste",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"subscriptions": [
{
"name": "Streaming",
"cost": 15.99,
"billing_cycle": "monthly",
"months_unused": 4
},
{
"name": "Cloud storage",
"cost": 119.88,
"billing_cycle": "yearly",
"months_unused": 6
},
{
"name": "News",
"cost": 12,
"billing_cycle": "monthly",
"months_unused": 0
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/fin/subscription-waste", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"subscriptions":[{"name":"Streaming","cost":15.99,"billing_cycle":"monthly","months_unused":4},{"name":"Cloud storage","cost":119.88,"billing_cycle":"yearly","months_unused":6},{"name":"News","cost":12,"billing_cycle":"monthly","months_unused":0}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"subscriptions":[{"name":"Streaming","cost":15.99,"billing_cycle":"monthly","months_unused":4},{"name":"Cloud storage","cost":119.88,"billing_cycle":"yearly","months_unused":6},{"name":"News","cost":12,"billing_cycle":"monthly","months_unused":0}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/fin/subscription-waste", 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
{
"subscriptions": [
{
"name": "Streaming",
"cost": 15.99,
"billing_cycle": "monthly",
"months_unused": 4
},
{
"name": "Cloud storage",
"cost": 119.88,
"billing_cycle": "yearly",
"months_unused": 6
},
{
"name": "News",
"cost": 12,
"billing_cycle": "monthly",
"months_unused": 0
}
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fin.subscription_waste",
"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.
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
Qué enviar: coste, ciclo de facturación y meses sin uso
El ciclo de facturación acepta weekly, biweekly o fortnightly, monthly, quarterly, semiannual o half-yearly, y yearly o annual, con espacios y guiones normalizados antes de la búsqueda. El name, label, title o service opcional aporta una fila legible para paneles; si omite el nombre, el motor asigna Subscription one, Subscription two y así sucesivamente en el orden de la lista. Se exige al menos una suscripción; un array vacío falla la validación antes de calcular ningún desperdicio. Los meses sin uso negativos también fallan, porque el tiempo ocioso no puede ir hacia atrás. Las cadenas de ciclo desconocidas fallan con una lista de valores aceptados para que los errores tipográficos se detecten pronto. Envíe un cuerpo JSON con un array subscriptions obligatorio; se aceptan los alias items, list, services y plans cuando su cliente ya usa otro nombre de campo. Cada entrada es un objeto con tres hechos obligatorios: cost, el importe facturado en cada ciclo; billing_cycle, la cadencia de ese cargo; y months_unused, cuántos meses de una ventana de doce meses el servicio permaneció ocioso. Cost puede llegar como número o cadena numérica; los alias amount, price, fee y charge se asignan al mismo valor para que las exportaciones bancarias y los constructores de formularios conserven claves familiares. Los costes negativos provocan invalid_input con un mensaje de que el coste no puede ser negativo: la promesa de producto es dinero perdido en suscripciones ociosas, no un libro de reembolsos. Los costes extremadamente grandes, los recuentos de meses ociosos y las listas muy largas están limitados para que la matemática del isolate del Worker permanezca acotada. Toda la validación se ejecuta antes del escalado, de modo que una lista incorrecta nunca devuelve desperdicio anual a medias que parezca correcto a un cliente que solo comprueba el éxito HTTP.
Cómo se calcula el desperdicio anual a partir de los meses ociosos
Para cada suscripción el motor multiplica el coste facturado por cuántas veces ocurre ese ciclo en un año y luego divide entre doce para producir un equivalente mensual: weekly usa cincuenta y dos periodos, biweekly usa veintiséis, monthly usa doce, quarterly usa cuatro, semiannual usa dos y yearly usa uno. Eso significa que un plan yearly de ciento diecinueve punto ochenta y ocho se convierte en nueve punto noventa y nueve al mes, mientras que una cuota monthly de quince punto noventa y nueve permanece en quince punto noventa y nueve. Seis meses ociosos en ese plan yearly de nube desperdician por tanto cincuenta y nueve punto noventa y cuatro en un año; doce meses ociosos desperdician el coste anual completo; dieciocho meses ociosos siguen informando una fuga de un año entero porque el producto responde dinero perdido por año, no un acumulado de varios años. Los productos intermedios usan aritmética de coma flotante ordinaria; cada campo monetario de la respuesta se redondea después half-up a dos decimales para que los resultados se vean como moneda en un extracto y no como fracciones binarias largas. Los meses sin uso se aplican después dentro de una ventana de doce meses: waste_per_year es igual al equivalente mensual por el menor entre months_unused y doce. Cada línea de resultado incluye su índice basado en cero, el nombre mostrado, el cost ecoado, el billing_cycle canónico, months_unused, monthly_cost, annual_cost, unused_months_in_year tras el tope, y waste_per_year. El total_waste_per_year de nivel superior suma las contribuciones de desperdicio previas al redondeo para que el gran total se mantenga coherente con la matemática de línea antes del redondeo half-up final. total_annual_cost es la suma de los costes anualizados completos, y unused_pct es cien veces el desperdicio sobre ese total anual (cero cuando todos los costes son cero). El campo count es igual al número de filas de entrada, currency_decimals es siempre dos y method es siempre subscription_waste para que el código descendente pueda ramificarse sin husmear formas. Suscripciones ausentes, listas vacías, cost ausente, ciclo ausente, months_unused ausente, valores no numéricos, ciclos desconocidos y costes negativos fallan todos con invalid_input y no se cobran tras el rechazo.
Dónde una API de desperdicio de suscripciones justifica su sitio
Llame a la calculadora gratuita de desperdicio de suscripciones en el navegador cuando busque pilas de streaming olvidadas, membresías de gimnasio sin usar o puestos de software que siguen renovándose mientras nadie inicia sesión. Mantenga las listas dentro de tamaños ordinarios de hogar o equipo; el tope publicado de suscripciones protege el tiempo de ejecución del isolate y sigue cubriendo pilas completas de medios y software. La promesa de producto es el desperdicio transparente de meses sin uso, no el raspado en vivo de comercios ni la clasificación de feeds bancarios: esas intenciones pertenecen a herramientas distintas con términos de búsqueda y motores distintos. Use la API prepago cuando una app de finanzas personales, un coach de gastos, un ayudante de compras SaaS, un bot de costes compartidos familiares o un flujo de incorporación de cancelar o conservar necesite un contrato estable a $0.002 por ítem exitoso; los fallos de validación nunca consumen saldo tras el rechazo del motor. Empareje este endpoint con una calculadora de gasto total solo cuando también necesite la porción usada de la pila: esta capacidad responde el dinero ocioso por año, no la factura recurrente completa. Los autores que publican SDK pueden mapear el array lines a una tabla de cancelar primero, mostrar total_waste_per_year en un banner de resumen y usar unused_pct para mostrar cuánto de la pila anual está ocioso. Entradas idénticas producen siempre el mismo JSON porque la ruta es aritmética pura sin semilla aleatoria y sin reloj de pared, que es lo que bots de presupuesto y demos escolares necesitan cuando congelan una fuga anual de referencia.
Casos de integración
Coaching de presupuesto cancelar o conservar
Los coaches financieros y los chatbots llaman a un endpoint prepago estable en lugar de reimplementar factores de ciclo, topes de doce meses y protecciones de coste negativo en cada lenguaje cliente.