SplitPro aims to provide an open-source way to share expenses with your friends.
It's meant to be a complete replacement for Splitwise.
It currently has most of the important features.
- Add expenses with an individual or groups
- Overall balances across the groups
- Multiple currency support
- Upload expense bills
- PWA support
- Split expense unequally (share, percentage, exact amounts, adjustments)
- Push notification
- Download your data
- Import from splitwise
- simplify group debts
- community translations, feel free to add your language!
- UNRELEASED currency conversion, quickly convert expenses and group balances
More features coming every day
Split Pro is aimed for self hosting mostly. To get the most recent features you can build an image from source. Stabilized changes are released as Docker images, while we also have a not so often updated cloud instance for you to try:
Splitwise is one of the best apps to add expenses and bills.
I understand that every app needs to make money, After all, lots of effort has been put into Splitwise. My main problem is how they implemented this.
Monetising on pro features or ads is fine, but asking money for adding expenses (core feature) is frustrating.
I was searching for other open-source alternatives (Let's be honest, any closed-source product might do the same and I don't have any reason to believe otherwise).
I managed to find a good app spliit.app by Sebastien Castiel but it's not a complete replacement and didn't suit my workflow sadly. Check it out to see if it fits you.
That's when I decided to work on this
All numbers are stored in the DB as BigInt
data, with no floats what so ever, safeguarding your expences from rounding errors or lack of precision. This holds true for currencies with large nominal values that might outgrow the safe range of JS number type.
In case of an expense that cannot be split evenly, the leftover amounts are distributed randomly across participants. The assignment is as equal as possible, in the context of a single expense (similar to Splitwise).
Currency rate APIs are usually paywalled or rate limited, except for banking institutions. We provide 3 providers, with a developer friendly interface for adding new ones, if you are in need of more capabilities. To save your rate limits, we cache each API call in the DB and try to get as much rates as possible in a single request.
- frankfurter - completely free, but has a limited set of currencies. Check by fetching https://api.frankfurter.dev/v1/currencies
- Open Exchange Rates - very capable with a generous 1000 requests/day. Requires an account and an API key. While the free version only allows USD as the base currency, we simply join the rates together. Fetching ALL rates for a single day means one API call, so unless you want to do hundreds of searches in the past, you should be fine.
- NBP - the central bank of Poland. Similiar case as OXR, but uses PLN as base currency and does not require an account/API key. The downside is that while table A has the most relevant (for Poland) currencies and is updated daily, table B with all the remaining ones is only published on Wednesdays. So if you need these currencies, the rates might be out of date. They also state that there is an API rate limit, but without a number, so it is to be reported.
- Node.js (Version: >=22.x)
- PostgreSQL
- pnpm (recommended)
We provide a Docker container for Splitpro, which is published on both DockerHub and GitHub Container Registry.
DockerHub: https://hub.docker.com/r/ossapps/splitpro
GitHub Container Registry: https://ghcr.io/oss-apps/splitpro
You can pull the Docker image from either of these registries and run it with your preferred container hosting provider.
Please note that you will need to provide environment variables for connecting to the database, redis, aws and so forth.
For detailed instructions on how to configure and run the Docker container, please refer to the Docker Docker README in the docker directory.
corepack enable
pnpm i
- Copy the env.example file into .env
- Setup google oauth required for auth https://next-auth.js.org/providers/google or Email provider by setting SMTP details
- Login to minio console using
splitpro
user and passwordpassword
and create access keys and the R2 related env variables
pnpm d
We are grateful for the support of our sponsors.

