Splitpro is a free, open source personal finance management project written in TypeScript and released under MIT. It has 1,446 GitHub stars, 193 forks and 55 open issues, and was last pushed 1 months ago. On this registry it ranks #10 of 12 tracked projects in Personal Finance Management, with 5 head-to-head comparisons available. It gained 11 stars over the last 6 tracked days.

What is Splitpro?

What it is

SplitPro is an open-source TypeScript personal finance and productivity application released under the MIT license. It is a self-hosted alternative to Splitwise, and it lives in the TypeScript web application ecosystem with NextAuth, TailwindCSS, and tRPC.

The project solves the problem of tracking shared expenses among friends and groups without depending on Splitwise. It lets users record expenses, divide them in several ways, view balances, attach receipts, and review activity, while keeping deployment and data control with the self-hoster.

Key capabilities

  • Users can add expenses with a friend or group, and split them using equal, percentage, share, exact, adjustments, and settlements.
  • Expenses can include categories, currencies, dates, and locally stored receipt attachments; negative expenses can represent refunds and corrections.
  • The application provides detailed balances per person and group, plus an activity feed that records edits and deletions.
  • Groups support email invitations, direct additions from the friends list, optional debt simplification, and detailed group balance views.
  • The PWA supports push notifications for new expenses and updates, although push delivery requires additional configuration.
  • Splitwise import brings in friends and groups partially, while data can be exported from the balances view and account settings.
  • NextAuth supports email magic links, Google OAuth, and OIDC providers such as Authentik and Keycloak, with signups and invites configurable.

Who uses it and how

  • Friends and group members use SplitPro to record shared costs, attach receipts, and review balances across people and groups.
  • Self-hosters deploy the application with Docker Compose, configure authentication, database, and uploads, then create the first account and restrict signups or invites.
  • People moving from Splitwise can import friends and groups partially, then export balances for backup or migration.
  • Users with PostgreSQL and pg_cron can create recurring expenses, while users with a configured rate provider can convert amounts and display balances in one currency.
  • Users with bank integration can load transactions from providers such as Plaid and convert them into expenses.

Getting started

Install SplitPro by using Docker Compose from docker/prod/compose.yml, copy .env.example to .env, configure auth, database, and uploads, then start the stack and log in to create the first account. For recurring transactions, use the prebuilt Postgres image with pg_cron, or enable the extension in another database.

When to use it — and when not to

SplitPro fits users who want a self-hosted alternative to Splitwise and can operate authentication, a database, local receipt storage, and optional services such as pg_cron or a currency rate provider. It is less suitable for people who need complete Splitwise expense import, hosted convenience, or complex pg_cron ranges; the metadata lists 55 open issues and 0 contributors.

project readme (upstream, from github) — read inline

SplitPro Logo

SplitPro

An open source alternative to Splitwise

About

SplitPro is a self-hosted, open source way to share expenses with friends. It is designed as a replacement for Splitwise.

Quick start

  1. Use Docker Compose from docker/prod/compose.yml.
  2. Copy .env.example to .env and configure auth, database, and uploads.
  3. Start the stack and log in to create your first account.

See docker/README.md and docs/CONFIGURATION.md for the full setup steps.

Core features

  • Add expenses with a friend or a group.
  • Split methods: equal, percentage, share, exact, adjustments, and settlements.
  • Categories, currencies, dates, and receipt attachments (stored locally).
  • Negative expenses are supported for refunds and corrections.
  • PWA support with push notifications.
  • Activity feed with edits and deletions.
  • Detailed balances per person and per group.

UI preview

SplitPro banner

Desktop balances view

Mobile balances view

Usage overview

1) Expenses, balances, and activity

Create expenses with categories, currencies, dates, and receipt attachments. SplitPro supports negative expenses for refunds and corrections. View per-person balances, detailed group balances, and an activity feed that includes edits and deletions.

2) Application info

SplitPro is a PWA and that is the recommended way to use the app. It supports push notifications for new expenses and updates, but push delivery requires additional configuration. See docs/CONFIGURATION.md.

3) Groups

Groups are the primary way to use SplitPro. You can invite friends by email, or add them directly if they are already in your friends list. Group debt simplification is optional, and the group balance view provides a detailed breakdown.

4) Data utilities

Splitwise import supports friends and groups (partial import). Expenses themselves are not imported yet. You can export data from the balances view and account settings.

5) Translations

Translations are managed in Weblate. When a language reaches 100%, it is enabled in the next update.

6) Authentication

SplitPro uses NextAuth. At least one provider must be configured.

  • Email sign-in (magic link)
  • OAuth (Google)
  • OIDC (Authentik, Keycloak, or custom OIDC)

Username/password login is not supported. You can lock down an instance by disabling signups and invites. See docs/CONFIGURATION.md and docs/AUTHENTICATION.md for details.

7) Currency conversions

SplitPro can display balances in a single currency, convert expense amounts, and convert group balances. Provider availability and rate limits depend on the configured rate provider. See docs/CURRENCY_CONVERSIONS.md.

8) Recurring transactions

Recurring expenses require a PostgreSQL database with the pg_cron extension. We publish a prebuilt Postgres image with pg_cron; example usage is in docker/prod/compose.yml. If you use another database, you must enable the extension and adjust configuration. A non-superuser database role is supported when pg_cron is preinstalled; see docker/README.md. See docs/RECURRING_TRANSACTIONS.md.

9) Bank transaction integration

Bank integration allows you to load transactions from providers like Plaid and convert them into expenses. This feature was provided by @alexanderwassbjer, who is currently maintaining related issues. See docs/BANK_TRANSACTIONS.md.

Limitations and notes

  • SplitPro computes balances from expenses on the fly using database views. Expenses are the source of truth, which keeps balances consistent and trustworthy. For self hosted deployments the efficiency of database aggregations is entirely sufficient, but please do report any performance issues.
  • Recurring transactions require pg_cron, which does not support cron ranges or lists.
  • Currency conversion accuracy and coverage depend on the selected provider.
  • Receipts are stored on local disk; make sure your uploads volume is persistent.

Supporting docs

Versions

SplitPro is for self hosting. To get the most recent features, build an image from source. Stabilized changes (GitHub releases) are available as Docker images on DockerHub and GHCR. The old community instance at https://splitpro.app is no longer maintained and is stuck at version 1.3.4.

Why

Splitwise is one of the best apps to add expenses and bills.

We understand that every app needs to make money, after all, lots of effort has been put into Splitwise. The 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.

We were searching for other open-source alternatives (Let's be honest, any closed-source product might do the same and we don't have any reason to believe otherwise).

We 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.

Translations

The app translations are managed using a Weblate project. You can easily add missing translations, fix issues you find and a new language! Just be aware that a new language also needs to be added in the code and open an issue for that once you finish translating the files. Here is the current state of translation:

Translation status

FAQ

How numerically stable is the internal logic?

All numbers are stored in the DB as BigInt data, with no floats what so ever, safeguarding your expenses 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.

How are leftover pennies handled?

In case of an expense that cannot be split evenly, leftover amounts are distributed deterministically across participants, based on amount and date.

Currency rate providers

See docs/CURRENCY_CONVERSIONS.md for provider details and limits.

Getting started

Deployment with Docker

We provide Docker images on DockerHub and GHCR.

For setup instructions, see docker/README.md. For environment variables, see docs/CONFIGURATION.md.

Deployment as Proxmox LXC

Thanks to @johanngrobe there is now also a Proxmox Community Script available here.

Development and contributing

See the CONTRIBUTING.md document.

Sponsors

We are grateful for the support of our sponsors.

Our Sponsors

hekuta User avatar: mexicanhatman User avatar: FelixDz User avatar: pchampio User avatar: J4nsen readme truncated — read the full docs on github

Frequently asked questions

Is Splitpro free to use?

Splitpro is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Splitpro do?

Effortlessly split expenses with friends and groups

What is Splitpro written in?

Splitpro is primarily written in TypeScript. Its source is publicly available at https://github.com/oss-apps/split-pro, and it has 1,446 GitHub stars.