I Hate Money
Shared expense manager for groups
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
Maybe
Budgeting & FinanceOpen-source personal finance and wealth app
Replaces Mint, Personal Capital
HyperSwitch
Budgeting & FinancePayment switch to make payments fast, reliable and affordable
Actual Budget
Budgeting & FinanceLocal-first envelope budgeting app
Replaces YNAB, Mint
Firefly III
Budgeting & FinanceSelf-hosted personal finance manager
Replaces Mint, YNAB
Lago
Budgeting & FinanceOpen-source billing and metering API
Replaces Stripe Billing, Chargebee
Akaunting
Budgeting & FinanceFree open-source accounting software online
Replaces QuickBooks, Xero