Régler dépenses de groupe
Saisissez le solde net de chaque personne et obtenez une courte liste de qui paie qui : si l'on doit 50 à Alice, que Bob doit 30 et Carol 20, deux virements vers Alice soldent tout le groupe. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Après un voyage, une colocation ou un dîner d’équipe, tout le monde sait à peu près qui a payé quoi — mais convertir ces soldes nets en virements bancaires réels reste laborieux. Cet outil de règlement des dépenses de groupe prend le solde net de chaque personne (montant payé moins montant dû) et renvoie une liste compacte de qui doit payer qui et combien, afin que le groupe soit entièrement soldé sans dettes circulaires. Les soldes positifs indiquent que quelqu’un doit recevoir de l’argent ; les négatifs, qu’il doit encore. Les sommes doivent se fermer à zéro ; sinon le calculateur rejette l’entrée au lieu d’inventer un résidu silencieux.
Ce que signifient les soldes nets et pourquoi ils doivent totaliser zéro
Un solde net est le résumé le plus simple des dépenses partagées : pour chaque personne, soustrayez ce qu’elle devait couvrir de ce qu’elle a réellement payé. Si Alice a payé soixante d’une note partagée et que sa juste part était quarante, son net est plus vingt — elle doit récupérer vingt. Si Bob n’a rien payé d’un total dont il doit encore trente, son net est moins trente.
Lorsque toutes les personnes d’un groupe fermé sont listées, les nets positifs et négatifs s’annulent : l’argent sorti des poches du groupe doit réapparaître comme un trop-perçu d’autrui. C’est pourquoi ce calculateur de règlement exige que les soldes totalisent zéro dans une tolérance numérique minime. Si la somme n’est pas nulle, la feuille est incomplète — quelqu’un manque, une part a été mal saisie ou des devises ont été mélangées — et inventer des virements masquerait l’erreur.
Au moins deux personnes sont requises ; un seul nom ne peut se régler avec lui-même. Chaque nom doit être unique pour que la liste des virements n’ait aucune ambiguïté sur qui paie qui. Les soldes nuls sont autorisés : les personnes déjà à l’équilibre n’apparaissent simplement pas comme expéditeurs ni destinataires dans le résultat.
Comment la liste minimale de virements est construite
L’algorithme est le flux de trésorerie minimal glouton classique des applications de règlement : diviser le groupe en débiteurs (solde négatif, ils doivent encore) et créanciers (solde positif, ils doivent recevoir). Des copies de travail suivent combien chaque débiteur doit encore payer et combien chaque créancier doit encore encaisser. À chaque étape, le plus grand débiteur restant paie le maximum possible au plus grand créancier restant, produisant un virement de ce montant ; puis les deux obligations diminuent.
Lorsque le montant restant d’une personne atteint zéro, elle quitte la file ; le processus continue jusqu’à solde de tout net non nul. Le nombre de virements est au plus un de moins que le nombre de personnes au solde non nul — bien moins que de faire transiter chaque dette par un trésorier unique lorsque de nombreux paiements bilatéraux peuvent s’annuler localement. Les champs optionnels sont omis plutôt que null.
Quand ce mode de règlement est utile
Les organisateurs de voyage collent les nets d’un tableur et envoient aux amis une courte liste de paiements au lieu de collecter des captures de trois applications différentes. Les colocations et groupes de co-living qui réconcilient les charges mensuelles veulent un plan reproductible qui fonctionne encore lorsque le net d’un colocataire est nul. Les hôtes de hackathon et de meetup qui avancent le lieu ou la nourriture ont besoin d’un règlement équitable sans reconstruire Splitwise.
Les équipes produit qui intègrent la finance de groupe dans des bots de chat appellent le même module pur que l’outil web gratuit, afin que démos et production ne divergent pas sur des cas limites comme les groupes déjà soldés ou les échanges à deux. Une validation échouée — personnes manquantes, noms en double, soldes non finis ou somme non nulle — ne consomme pas de solde.
Gardez les requêtes compactes, figez la liste des virements dans les tests, et vous obtenez un plan fiable de qui doit qui pour les événements, les foyers et l’automatisation sans monter un grand livre de dépenses complet.
Cas d’usage
Règlement de voyage et de week-end
Convertissez le net payé-moins-dû de chaque voyageur en une courte liste de virements bancaires afin que personne ne reste avec une reconnaissance de dette après les vacances.
Charges mensuelles entre colocataires
Après le loyer, l’électricité et les courses, réglez les nets résiduels avec le moins de paiements chambre à chambre possible pour le mois.
Questions fréquentes
Comment calculer les virements de règlement à partir des soldes du groupe ?
Envoyez people comme un tableau de {name, balance} où balance est payé moins dû. Positif signifie qu’ils doivent recevoir de l’argent ; négatif, qu’ils doivent.
Pourquoi les soldes doivent-ils totaliser zéro ?
Dans un groupe fermé, trop-perçus et sous-paiements s’annulent.
Que signifie un solde positif ou négatif ?
Solde positif : la personne a trop payé et doit recevoir de l’argent. Solde négatif : elle a sous-payé et doit payer. Zéro signifie déjà soldé et n’apparaît pas dans les virements.
Est-ce la même chose que partager une note par poids ?
Non. Un répartiteur de dépenses partagées transforme montants d’articles et poids en part de chaque personne. Cet outil de règlement part de nets déjà existants et ne planifie que qui paie qui.
Combien de virements faut-il pour solder un groupe ?
Au plus un de moins que le nombre de personnes dont le solde n'est pas nul. Avec trois personnes qui doivent ou à qui l'on doit, deux virements suffisent, et celles déjà à zéro n'apparaissent pas.
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/math/who-owes-who-settle-up \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"people":[{"name":"Alice","balance":50},{"name":"Bob","balance":-30},{"name":"Carol","balance":-20}]}'const res = await fetch("https://api.kit.forhosting.com/math/who-owes-who-settle-up", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"people": [
{
"name": "Alice",
"balance": 50
},
{
"name": "Bob",
"balance": -30
},
{
"name": "Carol",
"balance": -20
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/who-owes-who-settle-up",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"people": [
{
"name": "Alice",
"balance": 50
},
{
"name": "Bob",
"balance": -30
},
{
"name": "Carol",
"balance": -20
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/who-owes-who-settle-up", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"people":[{"name":"Alice","balance":50},{"name":"Bob","balance":-30},{"name":"Carol","balance":-20}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"people":[{"name":"Alice","balance":50},{"name":"Bob","balance":-30},{"name":"Carol","balance":-20}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/who-owes-who-settle-up", 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
{
"people": [
{
"name": "Alice",
"balance": 50
},
{
"name": "Bob",
"balance": -30
},
{
"name": "Carol",
"balance": -20
}
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.who_owes_who_settle_up",
"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
Ce que signifient les soldes nets et pourquoi ils doivent totaliser zéro
Le endpoint échoue alors avec invalid_input et un message clair indiquant que les soldes doivent totaliser zéro, afin que vous corrigiez les entrées avant tout envoi d’argent.
Comment la liste minimale de virements est construite
Les champs de sortie incluent person_count, balance_sum (toujours zéro en succès), transfer_count, total_transferred (somme des montants), transfers comme tableau de from, to et amount, et une courte chaîne de résumé. Les montants sont arrondis pour un JSON stable. Associez ce endpoint à votre propre interface de grand livre si vous avez besoin de reçus ou de conversion multi-devises ; la capacité ne planifie que des virements purement numériques dans une seule unité de compte.
Quand une API de règlement vaut le coup
Comme l’implémentation est parse pure de niveau A, chaque appel réussi coûte le prix de base publié $0.002, sans jetons de modèle ni réseau sortant.
Cas d'intégration
Automatisation bot de chat et tableur
Envoyez des lignes de soldes fermés depuis une feuille ou un bot vers l’API et republiez le plan de virements dans le canal du groupe.
Questions techniques
Combien coûte le calculateur de règlement des dépenses de groupe ?
L’outil navigateur est gratuit. Les requêtes API utilisent le solde KIT prépayé à $0.002 par appel réussi ; une entrée invalide n’est pas facturée.