The problem
Group maths that never ends
A week away leaves a trail of who-paid-whats across currencies. TabUp keeps the ledger and computes the minimal settlement, so the trip ends when the trip ends.
kaicorplabs.com / projects / tabup
project open source · self-hosted
Who paid what, in which currency, and the shortest set of payments that makes everyone even. Built for trips and flatmates, not for selling you a card.

The problem
A week away leaves a trail of who-paid-whats across currencies. TabUp keeps the ledger and computes the minimal settlement, so the trip ends when the trip ends.
Who it is for
Anyone splitting real costs with real people. Receipts can be photographed at the table; an optional local model reads the amounts for you.
Your data
Receipt photos are re-encoded on upload, which removes EXIF and GPS before anything touches disk. Accounts are its own (passwords hashed with scrypt) or any OIDC provider you point it at. Nothing is profiled, nothing is resold.
Honest limits
SQLite and in-process state mean a single instance — plenty for its job, not a SaaS fleet. Receipt OCR needs an Ollama you run yourself. Our instance is by invitation.
Local accounts work out of the box — clone, compose up, and the first account created becomes the admin (create it before exposing the instance).
docker pull ghcr.io/ulzuhan/tabup:latest # or: clone the repo and `docker compose up -d --build` # DEPLOYMENT.md in the repository covers the rest.
The image is built from a tagged commit by CI, scanned for known vulnerabilities before release, and published with provenance and an SBOM. Or use ours: open tabup.kaicorplabs.com and ask for an account — a person approves it.