Répartiteur de dépenses partagées
Des tickets de 45,5, 30 et 24,5 partagés entre trois personnes, dont une comptée double, donnent 25, 25 et 50. Notez chaque dépense et attribuez un poids à chacun pour voir ce que chaque personne doit. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Tout se passe dans votre navigateur : gratuit, sans envoi de vos données.
Dîners partagés, locations de groupe, charges de colocation et week-ends se terminent de la même façon : quelqu’un a une liste de reçus et un fil de discussion plein de personnes qui n’ont pas consommé la même chose. Un répartiteur de dépenses partagées prend chaque montant détaillé, multiplie le grand total par le poids de chaque personne sur la somme des poids, et renvoie une dette claire pour chaque participant. Des colocataires égaux utilisent le poids un pour tous ; un couple qui reçoit des amis peut donner le poids deux au couple et le poids un aux célibataires ; des parents qui partagent avec des enfants peuvent mettre à zéro le poids d’un enfant pour que seuls les adultes paient. Quand tous les poids sont nuls, la requête échoue avec une erreur de validation car la division par une somme de poids nulle est indéfinie.
Comment fonctionne le partage pondéré des dépenses partagées
Commencez par la liste de l’argent déjà dépensé pour le groupe. Chaque entrée est un montant de ligne dans une devise convenue, comme courses, note de restaurant, course VTC ou facture d’énergie. Vous pouvez passer des nombres simples ou de petits objets avec amount et une description optionnelle ; seuls les montants entrent dans le calcul.
Additionnez ces montants pour obtenir le total de dépense à récupérer. Ensuite listez un poids de part par personne. Un poids est un nombre fini non négatif qui encode la responsabilité relative, pas une unité monétaire.
Un partage égal entre trois personnes est poids un, un et un. Un couple plus un invité qui doit payer la moitié pourrait utiliser deux, deux et un. Quelqu’un qui ne paie pas ce tour peut garder le poids zéro tandis que d’autres ont des poids positifs.
Quand cette somme est exactement zéro, ou numériquement indiscernable de zéro, la requête échoue en entrée invalide : la part de chaque personne est total fois poids divisé par la somme des poids, et ce quotient est indéfini quand personne n’a de part positive. Quand la somme est positive, la personne i doit le total de dépense multiplié par le poids i divisé par la somme des poids. Les ratios de part sont rapportés à côté des montants pour auditer la proportion indépendamment de l’échelle monétaire.
Les montants de dépense négatifs et les poids négatifs sont rejetés car ce modèle décrit de l’argent dépensé et des parts relatives non négatives, pas des remboursements ni des responsabilités inversées. Les listes de dépenses vides et de poids vides échouent tôt. Les symboles monétaires sont omis pour que le même moteur fonctionne pour USD, EUR ou toute unité déjà choisie hors ligne par le groupe.
Cas d’usage
Règlement mensuel de colocation
Détaillez loyer, charges et courses, assignez des poids selon les nuits présentes, et publiez la dette de chacun sans tableur partagé.
Note inégale de restaurant ou bar
Partagez une addition multi-plats par poids pour que gros buveurs ou couples paient une part juste pendant que le groupe voit des ratios clairs.
Bots de dépenses de voyage et d’événements
Alimentez totaux de reçus et poids de participants dans un bot backend pour que les demandes de paiement suivent la même maths que l’outil navigateur gratuit.
Questions fréquentes
Comment calcule-t-on la part de chaque personne ?
Additionnez tous les montants de dépense détaillés pour obtenir le total. Chaque personne doit total × (son poids ÷ somme de tous les poids). Des poids égaux signifient un partage égal.
Que se passe-t-il si tous les poids sont nuls ?
Une somme de poids nulle diviserait par zéro, donc le calculateur refuse d’inventer des parts.
Certaines personnes peuvent-elles avoir un poids zéro ?
Oui, tant qu’au moins un poids est positif. Les personnes à poids zéro doivent zéro pour ce règlement pendant que les autres couvrent le total.
Combien cela coûte-t-il ?
L’outil navigateur est gratuit et s’exécute en local.
Quel poids donner à un couple par rapport à une personne seule ?
Donnez un poids de 2 au couple et de 1 à chaque personne seule. Avec un total de 100 et des poids de 1, 1 et 2, les parts sont de 25, 25 et 50.
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/life/expense-split \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"expenses":[45.5,30,24.5],"weights":[1,1,2]}'const res = await fetch("https://api.kit.forhosting.com/life/expense-split", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"expenses": [
45.5,
30,
24.5
],
"weights": [
1,
1,
2
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/life/expense-split",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"expenses": [
45.5,
30,
24.5
],
"weights": [
1,
1,
2
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/life/expense-split", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"expenses":[45.5,30,24.5],"weights":[1,1,2]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"expenses":[45.5,30,24.5],"weights":[1,1,2]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/life/expense-split", 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
{
"expenses": [
45.5,
30,
24.5
],
"weights": [
1,
1,
2
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "life.expense_split",
"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
Comment fonctionne le partage pondéré des dépenses partagées
Le calculateur forme weight_sum comme la somme de tous les poids. Tout est de l’arithmétique flottante déterministe sans appels réseau, sans graines aléatoires et sans horodatages, de sorte que des entrées identiques produisent toujours le même JSON.
Ce que vous envoyez et ce que vous recevez
Envoyez deux champs obligatoires et un champ optionnel. Les contrôles classiques incluent un total cent avec poids un et un pour cinquante chacun, ou quatre-vingt-dix avec poids un, un et deux pour que la troisième personne paie quarante-cinq. Branchez le formulaire gratuit du navigateur pour les chats de colocation et les tables de dîner, puis appelez le contrat identique depuis des scripts quand un bot ou un backend a besoin des mêmes nombres. Le champ expenses est un tableau non vide de montants finis non négatifs, ou d’objets avec un champ amount fini non négatif, ou une chaîne JSON de ce tableau. Le champ weights est un tableau non vide de nombres finis non négatifs, une entrée par personne, ou une chaîne JSON de ce tableau. Le champ optionnel names est un tableau de chaînes d’affichage de même longueur que weights ; lorsqu’il est omis, les personnes sont étiquetées Personne 1, Personne 2, et ainsi de suite. Champs obligatoires manquants, chaînes non numériques, NaN, Infinity, tableaux vides, montants négatifs, poids négatifs, une longueur de names qui ne correspond pas à weights, et une somme de poids nulle échouent avec invalid_input et ne sont pas facturés. En cas de succès la réponse renvoie expense_count, la liste nettoyée d’expenses avec index, amount et description optionnelle, expense_total, person_count, les weights nettoyés et weight_sum, les names résolus, un tableau people d’objets avec name, weight, share_ratio et owes, plus un tableau parallèle owes pour les scripts. La chaîne method weighted_expense_split et la chaîne formula qui réaffirme owes equals total times weight over sum of weights documentent le contrat. Le tarif des appels API réussis est la base publiée de $0.002 par item ; les échecs de validation ne consomment pas le solde prépayé.
Où les répartiteurs de dépenses partagées apparaissent dans le travail réel
Des colocataires qui règlent loyer mensuel, charges et courses ont besoin d’une réponse de confiance sur ce que chacun doit après avoir détaillé chaque reçu, surtout quand un coloc était absent la moitié du mois et doit porter un poids plus bas. Des groupes d’amis qui partagent une longue note de restaurant avec des parts inégales pour le vin ou les menus enfants utilisent des poids plutôt que des calculettes manuelles pour que personne ne redérive l’arithmétique dans le chat. Des couples qui reçoivent des invités peuvent assigner un poids double à une place partagée et un poids simple à chaque invité, puis publier le tableau people directement dans une demande de paiement. Le slug SEO cible ceux qui cherchent un répartiteur de dépenses partagées avec coûts détaillés et poids personnalisés, une intention différente des calculateurs égaux carburant-et-péages de voyage, des répartiteurs de pourboire, ou des outils LLM qui ne font que catégoriser des transactions. Les pipelines d’automatisation des dépenses stockent expense_total, weight_sum, ratios de part et owes par personne pour audit après chaque événement partagé. Comme cette capacité est un moteur parse pur, le tarif API est la base publiée de $0.002 par item réussi et la validation échouée ne consomme pas le solde. Gardez la page centrée sur la récupération pondérée d’un total détaillé pour qu’elle se classe sur cette expression et que le contrat JSON reste assez petit pour widgets et bots SMS.
Questions techniques
Comment formater expenses et weights ?
Envoyez expenses comme tableau de nombres (ex. [45.5, 30, 24.5]) ou d’objets avec amount, et weights comme tableau numérique du même style (ex. [1, 1, 2]). Les names optionnels étiquettent chaque personne.