Debt simplification: how splitting apps turn 12 debts into 3 payments

A plain-language explainer by the SuperSplit team. Every splitting app worth using implements this; ours is not special for it, and that is the point.

Debt simplification, how it works in practice: it is the algorithm that replaces a group's tangled web of pairwise debts with the smallest set of payments that settles everyone. Four friends who each front different costs can end up owing each other in up to twelve directions. Simplification computes each person's net position, then pairs the biggest creditor with the biggest debtor repeatedly until everyone sits at zero. The same four friends settle with at most three payments. Every serious splitting app, SuperSplit included, runs this math; here is how it actually works, with numbers.

The problem: pairwise debt explodes

Suppose four friends share a weekend. Ana pays 100 for the hotel, Ben pays 60 for food, Cara pays 40 for tickets, and Dara pays nothing, agreeing to split everything equally four ways. Without simplification, you could think of it as everyone owing everyone: Ana owes her share of Ben's food and Cara's tickets, Ben owes shares of hotel and tickets, and so on: twelve directed debts for four people. With a group of eight, that is 56 potential debts. Nobody will make 56 payments, so in practice people just... do not, and the weekend ends in a fog of "I think I got the tickets so we are even."

Step one: net balances

Instead of tracking who owes whom, track each person's net position: total paid minus total owed. Total spend was 100 + 60 + 40 = 200. Split four ways, everyone's fair share is 50.

  • Ana paid 100, owes 50. Net: +50 (is owed 50)
  • Ben paid 60, owes 50. Net: +10
  • Cara paid 40, owes 50. Net: -10
  • Dara paid 0, owes 50. Net: -50

The nets always sum to zero, which is a nice sanity check: money is conserved. Note that at this point the debt relationships are gone; only positions remain. Ana is not owed 50 "by Dara"; she is owed 50 by the group.

Step two: greedy matching

Now settle with as few transfers as possible by repeatedly matching the largest creditor against the largest debtor:

  1. Round 1: largest creditor Ana (+50), largest debtor Dara (-50). Dara pays Ana 50. Both hit zero in one stroke.
  2. Round 2: Ben (+10) and Cara (-10) remain. Cara pays Ben 10. Everyone is settled.

Twelve conceptual debts became two payments. The greedy rule, match extremes, is not just intuitive, it produces a minimal or near-minimal number of transfers for these group sizes, and a group of n people never needs more than n-1 payments, because each payment zeroes at least one person out.

Why it can feel unfair, and why it is not

The counterintuitive part: Dara paid Ana directly, though Dara never owed Ana anything specifically. Every simplified payment is a stranger's debt routed through the group. This is the algorithm's one social cost: individual transactions stop mapping to individual favors. Two habits defuse it. First, the balance page should make each person's net position visible, so everyone sees the basis, not just the verdict. Second, treat the final settlement as final; reopening "but I paid for the taxis" after simplification is re-litigating an already-settled ledger.

Where the edge cases live

  • Unequal splits change the shares, not the method. A 60/40 couple split just produces different nets before the same greedy matching.
  • Multi-currency adds conversion at log time. Convert first, then simplify in one currency, or the nets stop summing to zero.
  • Mid-group settlement, someone paying back early, is just a payment entry: it adjusts their net, and the next simplification run shrinks the remaining transfers.

How apps use it

Every time an expense is logged, the app recomputes nets and the suggested settlement. That is why the balance in SuperSplit updates instantly and why the settle-up screen shows so few payments: it is this exact computation, run after every entry. The feature is invisible when it works, which is the correct destiny for good math. If you want the group-workflow version of this, see splitting bills without everyone downloading an app or the trip settle-up guide.

Frequently asked questions

Does debt simplification ever change how much I owe?

No. It changes only who hands money to whom. Your net position, what you paid minus your share, is fixed by the expenses, and simplification preserves it exactly.

Why do I sometimes pay someone I never borrowed from?

Because simplified payments settle net positions, not pairwise favors. The person you pay was the group's largest net creditor; the routing exists to minimize the number of transfers.

What is the maximum number of payments a group needs?

n-1 for a group of n people, and often fewer when positions happen to cancel exactly, as in the worked example above, where four people needed two.

Do all splitting apps do this?

The major ones do. If a splitting app shows you a long list of pairwise paybacks instead, it is skipping simplification, and your group is doing the algorithm's job by hand.