Calcul du prorata lors d’un changement de forfait
Ce calculateur de prorata présente l’incidence financière du passage d’un client à un autre forfait avant la fin du cycle de facturation en cours.
Lancer gratuitement
Saisissez les prix des forfaits actuel et nouveau pour un cycle complet, le nombre de jours inutilisés et la durée totale du cycle. Le résultat distingue le crédit accordé pour la période non consommée des frais du nouveau forfait sur la même période, puis indique le montant net et précise s’il s’agit de frais, d’un crédit ou d’aucun ajustement.
Saisissez des prix et des durées de cycle comparables
Utilisez le prix de chaque forfait pour un cycle de facturation complet. Les deux prix doivent être exprimés dans la même devise et correspondre à la même périodicité : comparez un tarif mensuel avec un tarif mensuel, ou un tarif annuel avec un tarif annuel. Indiquez le nombre total de jours entiers du cycle actif, puis les jours entiers restants à la date d’effet du changement. Si le changement intervient à la fin du cycle, le nombre de jours restants peut être nul et tous les ajustements seront nuls. Le calculateur refuse un nombre de jours restants supérieur à la durée totale du cycle, car ces données sont incohérentes. Il refuse également les prix négatifs, les fractions de jour, les valeurs non finies et les cycles inférieurs à un jour. Les taxes, remises, soldes de compte, frais d’usage et frais de paiement sont exclus. Le cas échéant, calculez d’abord ici l’ajustement de base, puis appliquez votre politique de facturation dans une étape distincte et vérifiable. Cette séparation facilite l’explication au client et le rapprochement avec la facture.
Interprétez le crédit, les frais et le montant net
La fraction inutilisée correspond au nombre de jours restants divisé par le nombre total de jours du cycle. Le crédit au prorata multiplie le prix du forfait actuel par cette fraction et représente la valeur du service payé mais non consommé. Les frais au prorata multiplient le prix du nouveau forfait par la même fraction et représentent le coût du forfait de remplacement pendant ces mêmes jours. Chaque composante monétaire est arrondie à deux décimales avant le calcul du montant net, conformément à une pratique courante pour des lignes de facture séparées. Le montant net correspond aux frais au prorata moins le crédit au prorata. Un montant positif est qualifié de frais : le client doit régler la différence liée à une montée en gamme. Un montant négatif est qualifié de crédit : le compte doit recevoir la valeur absolue lors d’une baisse de gamme. Un montant nul signifie qu’aucun ajustement n’est requis. Le crédit et les frais restent des lignes positives, tandis que le montant net signé exprime clairement le solde final.
Appliquez le résultat de façon cohérente à la facturation
Utilisez la sortie comme une trace transparente du calcul plutôt que de conserver uniquement un montant net dépourvu de contexte. Enregistrez les quatre données d’origine avec la fraction inutilisée, le crédit au prorata, les frais au prorata, le montant net et son sens. Les équipes financières et d’assistance pourront ainsi reproduire le calcul sans reconstituer ultérieurement les dates. Avant d’inscrire les lignes sur la facture, vérifiez si votre organisation considère la date d’effet comme consommée ou non consommée, car cette règle détermine le nombre de jours restants. Vérifiez aussi si votre système applique le prorata en secondes calendaires plutôt qu’en jours entiers ; cette capacité utilise volontairement des jours entiers et ne doit pas être associée à une règle fondée sur les secondes. Pour des prix taxes comprises, déterminez si la réglementation locale impose un crédit fiscal distinct. En cas de remise, saisissez les prix réellement applicables au cycle complet si celle-ci doit entrer dans le prorata. L’API coûte $0.002 par calcul et n’utilise ni réseau, ni date courante, ni état enregistré ; les mêmes entrées valides produisent donc toujours le même résultat.
Cas d’usage
Chiffrer une montée en gamme en cours de cycle
Présentez au client le crédit du forfait inutilisé, les frais du forfait de remplacement et le complément dû avant confirmation.
Traiter une baisse de gamme
Calculez le crédit porté au compte lorsqu’un forfait moins cher remplace le forfait actuel pendant les jours restants.
Rapprocher les ajustements de facturation
Reproduisez le prorata d’une facture à partir des prix et durées enregistrés lors d’un contrôle financier ou d’assistance.
Questions fréquentes
Combien coûte le calcul ?
Chaque calcul par API coûte $0.002. La version pour navigateur peut s’exécuter localement sur cette page.
Comment le crédit au prorata est-il calculé ?
Le prix du forfait actuel pour un cycle complet est multiplié par les jours restants divisés par la durée totale du cycle, puis arrondi à deux décimales.
Comment les frais au prorata sont-ils calculés ?
Le prix du nouveau forfait pour un cycle complet est multiplié par la même fraction inutilisée, puis arrondi à deux décimales.
Que signifie un montant net négatif ?
Le crédit au prorata dépasse les frais. Le sens indiqué est crédit et la valeur absolue du montant net correspond au crédit à appliquer.
Les jours restants peuvent-ils dépasser la durée du cycle ?
Non. Cette donnée incohérente provoque une erreur de saisie. Les taxes et remises ne sont pas ajoutées automatiquement ; saisissez les prix applicables et traitez les taxes selon votre politique.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre 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)Exemple de requête
{
"current_plan_price": 30,
"new_plan_price": 60,
"days_remaining": 10,
"billing_cycle_days": 30
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "ecom.subscription_proration_calc",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |