Skip to content
osmods
Firefly III

Roommate splits

Split any transaction across roommates and always know who owes what.

View upstream
AuthorElske de Vries
PublishedMay 2026
LicenseAGPL-3.0
Installs118

Why it exists

Four people, one supermarket receipt, three different ideas of what fair means: the household spreadsheet dies every semester. This one graduated from the requests board.

This mod splits any transaction by equal parts, percentages or fixed amounts, keeps a running balance per person, and settles up with one generated transfer each month.

What it does

  • Split by equal parts, percentages or fixed amounts
  • Running balance per roommate
  • One-click monthly settle-up transfer
  • Splits survive edits to the original transaction

The spec

These acceptance criteria were written with the person who requested the mod, then locked in as its tests. The mod has to pass them on every new release train before it rides along.

  • Split amounts always sum to the original transaction, to the cent
  • Editing a split transaction recalculates balances without orphaned remainders

mods/flat-splits/tests/SplitInvariantTest.php

public function test_splits_always_sum_to_the_original(): void
{
    $tx = $this->transaction("87.43 EUR");
    $tx->splitBetween(["ana" => 0.5, "leo" => 0.3, "mar" => 0.2]);
assertEquals($tx->amount, $tx->splits()->sum());
}