Debt Simplification, Explained
Why a group's tangle of crossed debts can collapse into a few payments without anyone paying a cent more or less — with the algorithm and a worked example.
Debt simplification is the trick that turns a group's tangle of crossed debts — 12 “you owe me, I owe her” pairs — into the fewest possible payments, without changing what anyone ends up paying or receiving overall. It works because only each person's net balance matters: everything they paid minus everything that was their share. Reroute the payments along different pairs and the tangle collapses, but every net balance stays exactly the same. Here is the algorithm, a worked four-person example, and the cases where you might not want it.
What is a net balance?
Take everything a person paid for the group, subtract everything that was their share of the group's expenses. Positive means the group owes them; negative means they owe the group. Two properties make everything else work: the net balances of a group always sum to zero (every dollar owed is a dollar someone is owed), and settling up means nothing more than driving every net balance to zero.
The individual debts — “Dan owes Ana $30 from dinner” — are just the raw material. Nobody actually cares which specific dinner a transfer repays; they care that they end up square.
A worked example: from 9 debts to 2 payments
Four friends on a weekend trip. Ana paid the $120 dinner, Ben paid $80 of taxis, Carla paid the $40 museum tickets, Dan paid nothing. Everything splits equally — $60 per person of total spend.
| Person | Paid | Their share | Net balance |
|---|---|---|---|
| Ana | $120 | $60 | +$60 (is owed) |
| Ben | $80 | $60 | +$20 (is owed) |
| Carla | $40 | $60 | −$20 (owes) |
| Dan | $0 | $60 | −$60 (owes) |
Expense by expense, this produces nine crossed debts: each of the three expenses leaves the other three people owing the payer their share. Repaying them literally means nine transfers, some in both directions between the same two people. Simplification replaces them with two:
| Person | Before: expense-by-expense debts | After simplification |
|---|---|---|
| Dan | Owes $30 to Ana, $20 to Ben, $10 to Carla | Pays $60 to Ana |
| Carla | Owes $30 to Ana and $20 to Ben; is owed $30 | Pays $20 to Ben |
| Ben | Owes $30 to Ana and $10 to Carla; is owed $60 | Receives $20 |
| Ana | Owes $20 to Ben and $10 to Carla; is owed $90 | Receives $60 |
Check any row: Dan's before-column nets to −$60, and after simplification he pays exactly $60. Carla's nets to −$20; she pays exactly $20. Nobody's total moved a cent — only the routes changed.
How does the algorithm work?
The classic method is greedy and short enough to run on a napkin:
- Compute every person's net balance and set the raw pairwise debts aside — they've done their job.
- Take the largest debtor and the largest creditor. Here: Dan (−$60) and Ana (+$60).
- The debtor pays the creditor the smaller of the two amounts. Dan pays Ana $60 — both hit zero and drop out.
- Repeat with whoever remains. Carla (−$20) pays Ben (+$20). Everyone is at zero: done, in 2 payments.
Each step zeroes out at least one person, so a group of n people always settles in at most n−1 payments — that's why 12 crossed debts in a group of four or five collapse to 3. When a debtor and creditor match exactly (as happened twice here), a step zeroes two people at once and the count drops further.
Why do net balances never change?
Because the algorithm never invents or forgives an amount — it only chooses who hands money to whom. Every simplified payment is subtracted from one net balance and added to another, and the plan stops exactly when all balances reach zero. The sum-to-zero property guarantees such a plan always exists. Simplification is bookkeeping-neutral by construction; there is nothing to double-check beyond the net balances themselves.
Why is it done per currency?
Mixing currencies into one simplification would force a conversion at some invented exchange rate — and the moment a made-up rate enters the math, “nobody pays more or less” stops being true. So the honest approach is one simplification per currency: euro debts collapse among themselves, dollar debts among themselves. Deudin tracks balances per currency and simplifies each currency independently, which is also why a trip that mixed € and $ ends with (say) one € payment and one $ payment rather than a blended number nobody can verify.
When should you not simplify?
Simplification optimizes for fewest transfers, not for social intuition. Sometimes the rerouting feels wrong: Dan ends up paying Ana even though the debt he *remembers* is the taxi he owes Ben. Reasonable cases for turning it off:
- People prefer paying the person they actually owe — repaying a friend directly matters more than saving a transfer.
- Pairs settle at different speeds — two flatmates square up weekly while the rest of the group drifts.
- The group is two people. There is nothing to simplify.
In Deudin, Simplified debts is a per-group setting, on by default; switch it off and suggestions follow the direct debts instead. Either way, recorded Payments — including partial ones — land in the group history and move the balances.
Want to see it on your own numbers? Paste a few expenses into the free debt calculator — no signup — and watch the crossed debts collapse. If the group is one you'll keep using, create it as a group and Deudin keeps the suggestions current as expenses land.
Questions, answered
Can I end up paying someone I never shared an expense with?+
Yes — that's the point. Simplification routes money along the shortest path, not along the original expenses. Your total is identical either way; only the recipient changes.
Does simplification round anything or lose cents?+
No. It only reroutes exact amounts between people. The payments in the plan sum to precisely each person's net balance.
Is the greedy result always the absolute minimum number of payments?+
It's guaranteed to need at most n−1 payments for n people, which in practice is the minimum or within one of it. Finding the true optimum in every case is a much harder problem — and the extra transfer it might save is rarely worth anyone's time.
What happens if someone pays only part of what they owe?+
Partial payments count. Record the payment, the balances update, and the next simplification suggestion works from what remains.
Try the thing the guides describe.
A group takes ten seconds. Your friends can join later, or never.