What "simplify debts" actually does, with a worked example

The switch says "simplify debts". What it does is turn a tangle of who-paid-for-whom into the shortest list of payments that leaves everyone at zero. The tangle is real; the list is just a better way of paying the same money.

Start with net balances, not pairs

After a trip, every pair of people has a running total between them: you owe me for the taxi, I owe you for dinner. Four people make six pairs, and the raw ledger can show a debt on all six. But each person also has one net figure: what they paid in total minus what they owed in total. Net balances always sum to zero across the group, and they are all you need.

PersonPaidOwedNet
Olivia₹30,990₹14,772+₹13,717 (is owed)
Daniel₹19,300₹14,772+₹4,527 (is owed)
Noah₹3,200₹14,772−₹9,072 (owes)
Amelia₹5,600₹14,772−₹9,172 (owes)

Match the biggest debtor with the biggest creditor

Splitzy sorts the people who owe and the people who are owed, then repeatedly matches the largest debtor with the largest creditor for whatever the smaller of the two amounts is, and updates both. It stops when everyone is at zero.

  1. Amelia owes the most (₹9,172); Olivia is owed the most (₹13,717). Amelia pays Olivia ₹9,172. Olivia is now owed ₹4,545.
  2. Noah owes ₹9,072; Olivia is owed ₹4,545. Noah pays Olivia ₹4,545. Noah still owes ₹4,527.
  3. Noah owes ₹4,527; Daniel is owed ₹4,527. Noah pays Daniel ₹4,527. Everyone is at zero.
The simplified result: three payments listed in the Balances tab
The same three payments as the app shows them.

Why it can look wrong and is not

In the example, Noah pays Daniel ₹4,527 even though, looking at individual bills, Noah might never have borrowed from Daniel directly. That is the simplification working: Noah owed Olivia, Olivia owed Daniel, and routing the money straight from Noah to Daniel removes a payment. Every person still pays or receives exactly their net amount. Switch the toggle off and you see the raw pairwise debts instead, which are longer but map to specific bills.

Is it the absolute minimum number of payments?

Almost always, and never worse than the raw list. Finding the guaranteed minimum for every possible group is a hard problem in the mathematical sense, so Splitzy uses the greedy method above, which produces the minimum in practice for groups of the sizes people actually have and is instant. For a group of n people it needs at most n − 1 payments.

Currencies and simplification

Net balances are computed in the group currency, with each expense converted at the rate for its date, so a dollar hotel and a rupee taxi end up in the same list. The payments the app suggests are in the group currency too.

Try it on your next bill

Splitzy is free, has no ads, and works without signal. Create a group, add the first expense, and let it keep score.