I

I Hate Money

Shared expense manager for groups

Budgeting & Finance ★ 1.4k stars Easy setup BSD-3-Clause

I Hate Money is a free, open-source web application for managing shared expenses among groups, such as roommates or trips. It tracks who paid what and computes who owes whom.

Key features

  • Split expenses among a group
  • Automatic balance calculation
  • Email reminders
  • Simple REST API

Pros & cons

Strengths

  • Lightweight and easy
  • Great for trips and shared homes

Trade-offs

  • Narrow feature scope
  • Basic UI

I Hate Money replaces

Last reviewed Sep 13, 2026 · 774 words

I Hate Money replaces the one Splitwise feature people care about, "who owes whom after the trip", and has done so since 2011, which makes it older than Splitwise's paywall by a decade. It runs in 128 MB, stores everything in a single SQLite file by default, and asks nothing of your housemates except a URL and a shared password. Splitwise's free tier now rate-limits how many expenses you can add per day, at last check, so the reason to self-host is not principle; it is that the free product got worse.

There are no user accounts, and that is the design

A "project" is the unit: a name, a shared password, and a contact email. Everyone who has the link and the password is in. Inside the project you list members (people, not logins), add bills with a payer and a set of beneficiaries with optional weights, and the balance page tells you the shortest set of transfers that settles everything.

This model is why a trip with six people works in 3 minutes of setup and why it would be a terrible fit for a company. Anyone with the password can edit anyone's bills; there is no audit trail per person, and "delete project" is one click behind the same password. For flatmates and holidays it is exactly right. If you need per-person logins, look elsewhere.

The container and the four settings you must set

services:
  ihatemoney:
    image: ihatemoney/ihatemoney:latest
    ports:
      - "8000:8000"
    environment:
      - SECRET_KEY=change-me-to-64-random-characters
      - ACTIVATE_DEMO_PROJECT=False
      - ALLOW_PUBLIC_PROJECT_CREATION=False
      - [email protected]
    volumes:
      - ./data:/database
    restart: unless-stopped

SECRET_KEY signs sessions and password-reset links; a default value means anyone who reads the docs can forge a login. ACTIVATE_DEMO_PROJECT=False removes the public demo project that otherwise ships enabled. ALLOW_PUBLIC_PROJECT_CREATION=False stops strangers on the internet from creating projects on your instance; you then create them with the admin password set via ADMIN_PASSWORD (a hashed value, generated by the ihatemoney generate_password_hash command). Email needs MAIL_SERVER and friends configured for reminders and invitations to work; without it the app still functions, just silently. The SQLite database lives in the mounted volume and is the only thing to back up.

Postgres and MySQL work through SQLALCHEMY_DATABASE_URI and are pointless below a few hundred projects.

Fifteen years bought a few things a new app lacks

The Python and Flask codebase is small and readable, has a stable REST API that several community Android clients use, exports bills and balances as CSV and JSON, supports weighted shares (one member counts for two when a couple joins a trip), handles multiple currencies with conversion, and sends email reminders on a schedule. Translations cover more than 20 languages, because the project came out of a French community and grew from there. None of this is flashy; all of it is the kind of feature you discover you need on day 40 of a shared flat.

The UI is honest about being from a different era. It is Bootstrap, it is mobile-responsive, and it is not going to win a design award. There is no native app, no receipt scanning, and no bank import.

Spliit is the modern rival, and the split is clear

Spliit is the newer entry in the same category: a Next.js app with a nicer interface, expense categories, receipt scanning that requires an external AI API key, and a similar link-sharing model. It needs Postgres and roughly 4× the memory. For a one-off trip with friends who expect something that looks like 2026, Spliit wins on first impression. For a long-running house or a club that wants an API, email reminders, and a database that fits on a floppy, I Hate Money wins on durability. The broader Splitwise alternatives question comes down to those two; everything else in the finance category is personal budgeting, which is a different job. If what you want is your own ledger rather than shared bills, that job belongs to Actual Budget.

What I'd do

Run I Hate Money behind a reverse proxy with TLS, public project creation off, demo project off, a real SECRET_KEY, and SMTP configured so the monthly reminder email goes out. Back up the SQLite file nightly. Create one project per shared context, share the link over the group chat, and stop arguing about who paid for the ferry. Choose Spliit instead only if your group will judge the tool by its looks before they judge it by whether it is still running in 3 years.

Compare I Hate Money

2 head-to-head comparisons.

Similar budgeting & finance apps