Calculateur de gaspillage d'abonnements
Un forfait mensuel de 15,99 resté inutilisé 4 mois représente 63,96 de gaspillage par an, et ce calculateur refait ce calcul pour chaque abonnement de votre liste. Les prélèvements hebdomadaires, trimestriels et annuels sont d'abord ramenés au mois. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Une salle de sport que vous avez cessé de fréquenter, un essai de streaming devenu forfait payant et un siège SaaS où personne ne se connecte laissent encore le même prélèvement sur chaque relevé. Ce calculateur de gaspillage d'abonnements transforme le coût, le cycle de facturation et les mois inutilisés de chaque abonnement en argent perdu par an, afin qu'un foyer ou une équipe voie la fuite annuelle plutôt qu'un total de dépenses brut. Les forfaits hebdomadaires, mensuels et annuels sont d'abord convertis en équivalent mensuel avec des facteurs de période fixes, puis multipliés par les mois inactifs dans une fenêtre de douze mois. Le résultat est un chiffre déterministe de gaspillage annuel que vous pouvez figer dans un bot budgétaire ou une réunion d'annuler ou conserver. Les coûts négatifs sont rejetés comme entrée invalide, car un grand livre de gaspillage n'est pas un calculateur de remboursement.
Cas d’usage
Audit familial du streaming inactif
Listez chaque forfait streaming, salle de sport et actualités avec le nombre de mois sans usage et voyez aussitôt la fuite annuelle du foyer plus le gaspillage de chaque service inactif.
Gaspillage des sièges SaaS d'équipe
Convertissez renouvellements logiciels annuels et sièges mensuels en gaspillage par mois inactifs afin que les achats résilient les licences inactives avant la prochaine facture.
Questions fréquentes
Comment le gaspillage d'abonnements par an est-il calculé ?
Chaque cost est mis à l'échelle en équivalent mensuel selon son cycle de facturation, puis multiplié par les mois inutilisés dans une fenêtre de douze mois (plafond à 12).
Que se passe-t-il si le coût d'un abonnement est négatif ?
Les coûts d'abonnement doivent être non négatifs ; les valeurs négatives sont rejetées et non facturées.
Comment les cycles de facturation annuels et hebdomadaires sont-ils convertis ?
Weekly utilise cinquante-deux périodes, biweekly vingt-six, quarterly quatre et semiannual deux ; les mois inactifs s'appliquent ensuite à ce chiffre mensuel.
Et si un abonnement est resté inutilisé plus de 12 mois ?
Le gaspillage annuel plafonne les mois inutilisés à 12, donc la ligne signale une année complète de coût comme fuite.
Le calculateur de gaspillage d'abonnements est-il gratuit ?
L'outil du navigateur s'exécute gratuitement sur votre appareil.
Outils associés
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/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)Exemple de requête
{
"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
}
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fin.subscription_waste",
"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. |
Notes techniques
Quoi envoyer : coût, cycle de facturation et mois inutilisés
Le cycle de facturation accepte weekly, biweekly ou fortnightly, monthly, quarterly, semiannual ou half-yearly, et yearly ou annual, avec espaces et tirets normalisés avant la recherche. Le name, label, title ou service facultatif fournit une ligne lisible pour les tableaux de bord ; si vous omettez le nom, le moteur attribue Subscription one, Subscription two, et ainsi de suite dans l'ordre de la liste. Au moins un abonnement est requis ; un tableau vide échoue à la validation avant tout calcul de gaspillage. Les mois inutilisés négatifs échouent aussi, car le temps d'inactivité ne peut pas reculer. Les chaînes de cycle inconnues échouent avec une liste de valeurs acceptées afin que les fautes de frappe apparaissent tôt. Envoyez un corps JSON avec un tableau subscriptions obligatoire ; les alias items, list, services et plans sont acceptés lorsque votre client utilise déjà un autre nom de champ. Chaque entrée est un objet avec trois faits obligatoires : cost, le montant facturé à chaque cycle ; billing_cycle, la cadence de cette charge ; et months_unused, combien de mois d'une fenêtre de douze mois le service est resté inactif. Cost peut arriver comme nombre ou chaîne numérique ; les alias amount, price, fee et charge correspondent à la même valeur afin que les exports bancaires et les constructeurs de formulaires conservent des clés familières. Les coûts négatifs déclenchent invalid_input avec un message indiquant que le coût ne peut pas être négatif : la promesse produit est l'argent perdu sur des abonnements inactifs, pas un grand livre de remboursements. Les coûts extrêmement élevés, les décomptes de mois inactifs et les listes très longues sont plafonnés pour que l'arithmétique de l'isolate Worker reste bornée. Toute la validation s'exécute avant la mise à l'échelle, de sorte qu'une mauvaise liste ne renvoie jamais un gaspillage annuel à moitié rempli qui semble réussi à un client qui ne vérifie que le succès HTTP.
Comment le gaspillage annuel est calculé à partir des mois inactifs
Pour chaque abonnement, le moteur multiplie le coût facturé par le nombre de fois que ce cycle survient en une année, puis divise par douze pour produire un équivalent mensuel : weekly utilise cinquante-deux périodes, biweekly vingt-six, monthly douze, quarterly quatre, semiannual deux et yearly une. Cela signifie qu'un forfait yearly de cent dix-neuf virgule quatre-vingt-huit devient neuf virgule quatre-vingt-dix-neuf par mois, tandis qu'un frais monthly de quinze virgule quatre-vingt-dix-neuf reste quinze virgule quatre-vingt-dix-neuf. Six mois inactifs sur ce forfait yearly cloud gaspillent donc cinquante-neuf virgule quatre-vingt-quatorze en une année ; douze mois inactifs gaspillent le coût annuel complet ; dix-huit mois inactifs signalent encore une fuite d'une année entière, car le produit répond l'argent perdu par an, non un cumul pluriannuel. Les produits intermédiaires utilisent l'arithmétique en virgule flottante ordinaire ; chaque champ monétaire de la réponse est ensuite arrondi half-up à deux décimales pour que les résultats ressemblent à une devise sur un relevé plutôt qu'à de longues fractions binaires. Les mois inutilisés sont ensuite appliqués dans une fenêtre de douze mois : waste_per_year égale l'équivalent mensuel multiplié par le plus petit de months_unused et douze. Chaque ligne de résultat inclut son index basé sur zéro, le nom d'affichage, le cost renvoyé, le billing_cycle canonique, months_unused, monthly_cost, annual_cost, unused_months_in_year après le plafond, et waste_per_year. Le total_waste_per_year de premier niveau somme les contributions de gaspillage avant arrondi afin que le grand total reste cohérent avec le calcul des lignes avant l'arrondi half-up final. total_annual_cost est la somme des coûts annualisés complets, et unused_pct vaut cent fois le gaspillage sur ce total annuel (zéro lorsque tous les coûts sont nuls). Le champ count égale le nombre de lignes d'entrée, currency_decimals vaut toujours deux, et method est toujours subscription_waste pour que le code aval puisse brancher sans inspecter les formes. Abonnements manquants, listes vides, cost manquant, cycle manquant, months_unused manquant, valeurs non numériques, cycles inconnus et coûts négatifs échouent tous avec invalid_input et ne sont pas facturés après le rejet.
Où une API de gaspillage d'abonnements justifie sa place
Appelez le calculateur gratuit de gaspillage d'abonnements dans le navigateur lorsque vous chassez des piles de streaming oubliées, des salles de sport inutilisées ou des sièges logiciels qui se renouvellent encore alors que personne ne se connecte. Gardez les listes dans des tailles ordinaires de foyer ou d'équipe ; le plafond publié d'abonnements protège le runtime de l'isolate tout en couvrant des piles médias et logicielles complètes. La promesse produit est le gaspillage transparent des mois inutilisés, non le scraping marchand en direct ni la classification de flux bancaires : ces intentions appartiennent à d'autres outils avec d'autres termes de recherche et d'autres moteurs. Utilisez l'API prépayée lorsqu'une application de finance personnelle, un coach de dépenses, un assistant d'achats SaaS, un bot de coûts partagés familiaux ou un flux d'intégration annuler-ou-conserver a besoin d'un contrat stable à $0.002 par élément réussi ; les échecs de validation ne consomment jamais de solde après le rejet du moteur. Associez cet endpoint à un calculateur de dépense totale uniquement lorsque vous avez aussi besoin de la part utilisée de la pile : cette capacité répond l'argent inactif par an, pas la facture récurrente complète. Les auteurs qui livrent des SDK peuvent mapper le tableau lines en un tableau annuler d'abord, afficher total_waste_per_year dans une bannière de synthèse et utiliser unused_pct pour montrer quelle part de la pile annuelle est inactive. Des entrées identiques produisent toujours le même JSON car le chemin est une arithmétique pure sans graine aléatoire et sans horloge murale, ce dont les bots budgétaires et les démonstrations scolaires ont besoin lorsqu'ils figent une fuite annuelle de référence.
Cas d'intégration
Coaching budgétaire annuler ou conserver
Les coaches financiers et les chatbots appellent un endpoint prépayé stable au lieu de réimplémenter facteurs de cycle, plafonds de douze mois et gardes de coût négatif dans chaque langage client.