Calculadora de prorrateo al cambiar de plan de suscripción
Esta calculadora de prorrateo por cambio de plan muestra el efecto económico de trasladar a un cliente de un plan a otro antes de que termine el ciclo de facturación vigente.
Ejecutar — gratis
Introduzca los precios de ciclo completo del plan actual y del nuevo, los días no utilizados y la duración total del ciclo. El resultado separa el crédito por el tiempo no consumido del cargo correspondiente al nuevo plan durante ese mismo periodo, y después indica el importe neto y si se trata de un cargo, un crédito o ningún ajuste.
Introduzca precios y días de ciclo comparables
Utilice el precio de cada plan para un ciclo de facturación completo. Ambos precios deben expresarse en la misma moneda y corresponder al mismo tipo de ciclo: compare mensual con mensual o anual con anual. Indique el número total de días enteros del ciclo activo y, después, los días enteros que quedan cuando entra en vigor el cambio. Si el cambio se realiza al final del ciclo, los días restantes pueden ser cero y todos los ajustes serán cero. La calculadora rechaza una cantidad de días restantes superior a la duración completa del ciclo porque esos datos son incompatibles. También rechaza precios negativos, días fraccionarios, valores no finitos y ciclos inferiores a un día. Los impuestos, descuentos, saldos de cuenta, cargos por uso y costes de procesamiento de pagos quedan fuera del cálculo. Si se aplican, calcule primero aquí el ajuste básico del plan y aplique después su política de facturación en un paso separado y auditable. Así podrá explicar el resultado al cliente y conciliarlo con la factura con mayor facilidad.
Interprete el crédito, el cargo y el importe neto
La fracción no utilizada se obtiene dividiendo los días restantes entre el total de días del ciclo. El crédito prorrateado multiplica el precio del plan actual por esa fracción y representa el valor del servicio pagado pero no consumido. El cargo prorrateado multiplica el precio del nuevo plan por la misma fracción y representa el coste de prestar el plan sustituto durante esos días. Cada componente monetario se redondea a dos decimales antes de calcular el importe neto, como ocurre habitualmente con líneas de factura separadas. El importe neto es el cargo prorrateado menos el crédito prorrateado. Un importe positivo se clasifica como cargo: el cliente debe abonar la diferencia de una mejora. Un importe negativo se clasifica como crédito: la cuenta debe recibir el valor absoluto por una reducción de plan. Un resultado cero indica que no hay ajuste. El crédito y el cargo se presentan como partidas no negativas, mientras que el importe neto conserva el signo para comunicar claramente el saldo final.
Aplique el resultado de forma coherente en la facturación
Utilice la salida como un registro transparente del cálculo, en lugar de guardar únicamente un importe neto sin contexto. Conserve las cuatro entradas originales junto con la fracción no utilizada, el crédito prorrateado, el cargo prorrateado, el importe neto y la dirección. De este modo, los equipos de soporte y finanzas podrán reproducir la operación sin reconstruir fechas posteriormente. Antes de contabilizar líneas de factura, confirme si su organización considera la fecha efectiva como usada o no utilizada, ya que esa política determina los días restantes. Compruebe también si su sistema prorratea por segundos naturales en vez de días enteros; esta capacidad trabaja expresamente con días enteros y no debe mezclarse con una política basada en segundos. Para precios con impuestos incluidos, determine si la normativa local exige desglosar el crédito fiscal. Si existen descuentos, introduzca los precios reales aplicables al ciclo completo cuando deban participar en el prorrateo. La API cuesta $0.002 por cálculo y no utiliza red, fecha actual ni estado almacenado, por lo que las mismas entradas válidas siempre producen el mismo resultado.
Qué puede hacer con ella
Cotizar una mejora a mitad de ciclo
Muestre al cliente el crédito del plan no utilizado, el cargo del plan sustituto y el importe adicional antes de confirmar la mejora.
Procesar una reducción de suscripción
Calcule el crédito de cuenta generado cuando un plan más económico sustituye al actual durante los días restantes.
Conciliar ajustes de facturación
Reproduzca el prorrateo de una factura a partir de los precios y los días de ciclo guardados durante una revisión financiera o de soporte.
Preguntas frecuentes
¿Cuánto cuesta el cálculo?
Cada cálculo mediante la API cuesta $0.002. La versión del navegador puede ejecutarse localmente en esta página.
¿Cómo se calcula el crédito prorrateado?
El precio del plan actual para un ciclo completo se multiplica por los días restantes divididos entre el total de días del ciclo y se redondea a dos decimales.
¿Cómo se calcula el cargo prorrateado?
El precio del nuevo plan para un ciclo completo se multiplica por la misma fracción no utilizada y se redondea a dos decimales.
¿Qué significa un importe neto negativo?
Significa que el crédito prorrateado supera al cargo. La dirección será crédito y el valor absoluto del importe neto será el crédito aplicable.
¿Pueden los días restantes superar la duración del ciclo?
No. Esa entrada es incoherente y devuelve un error de entrada no válida. Los impuestos y descuentos no se añaden automáticamente; introduzca los precios aplicables y gestione los impuestos según su política.
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/ecom/subscription-proration-calc \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"current_plan_price":30,"new_plan_price":60,"days_remaining":10,"billing_cycle_days":30}'const res = await fetch("https://api.kit.forhosting.com/ecom/subscription-proration-calc", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"current_plan_price": 30,
"new_plan_price": 60,
"days_remaining": 10,
"billing_cycle_days": 30
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/ecom/subscription-proration-calc",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"current_plan_price": 30,
"new_plan_price": 60,
"days_remaining": 10,
"billing_cycle_days": 30
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/ecom/subscription-proration-calc", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"current_plan_price":30,"new_plan_price":60,"days_remaining":10,"billing_cycle_days":30}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"current_plan_price":30,"new_plan_price":60,"days_remaining":10,"billing_cycle_days":30}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/ecom/subscription-proration-calc", 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
{
"current_plan_price": 30,
"new_plan_price": 60,
"days_remaining": 10,
"billing_cycle_days": 30
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "ecom.subscription_proration_calc",
"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. |