> Who paid, who owes, how to settle up. A self-hosted Tricount that installs on your phone like an app. One container, one SQLite file.
> Source: https://orochibraru.com/opencount/docs · Site index: https://orochibraru.com/llms.txt

# OpenCount documentation

Who paid, who owes, how to settle up. A self-hosted Tricount that installs on your phone like an app. One container, one SQLite file.

The Markdown in [the project repo](https://github.com/orochibraru/opencount/tree/main/docs) is the source of truth;
these pages are generated from it.

- [OpenCount](https://orochibraru.com/opencount/docs/readme.md): Split expenses with friends, see who owes whom, settle up. A self-hosted, open-source alternative to Tricount that installs on your phone like an app.
- [Contributing](https://orochibraru.com/opencount/docs/contributing.md): The long-form documentation lives in docs/ and is published at <https://orochibraru.com/opencount>. This file is the short version: what you need to get a…
- [Introduction](https://orochibraru.com/opencount/docs/introduction.md): OpenCount is a self-hosted, open-source alternative to Tricount. People make a group for a trip, a flat or a dinner, log who paid for what, and see who owes…
- [Showcase](https://orochibraru.com/opencount/docs/showcase.md): A tour of OpenCount, one screen at a time. Desktop screens are shown in the dark theme at 1440 by 900, phone screens in the light theme at 390 by 844. Every…
- [Install](https://orochibraru.com/opencount/docs/install.md): OpenCount is distributed as a multi-arch Docker image (orochibraru/opencount) for linux/amd64 and linux/arm64. It needs one volume, mounted on /data, which…
- [Configuration](https://orochibraru.com/opencount/docs/configuration.md): There is no configuration file. The container reads a few environment variables at boot, and everything else (sign-ups, sign-in methods, email, receipt reading)…
- [First run](https://orochibraru.com/opencount/docs/first-run.md): From a fresh container to a first settled bill.
- [Groups and members](https://orochibraru.com/opencount/docs/groups-and-members.md): A group is one shared pot: a trip, a flat, a dinner, a club. Everything else (expenses, balances, categories, merchants, repeating expenses) belongs to one…
- [Expenses](https://orochibraru.com/opencount/docs/expenses.md): An expense says who paid how much, when, for what, and who it was for. A group opens on its expenses, newest first, 50 at a time: Load more shows the next ones…
- [Balances and settling up](https://orochibraru.com/opencount/docs/balances-and-settling.md): A member's balance is what they paid minus their share of everything. Positive, they are owed money; negative, they owe; zero, they are square. Every balance in…
- [Repeating expenses](https://orochibraru.com/opencount/docs/recurring-expenses.md): Rent, a subscription, the weekly groceries run: an expense that comes back on a schedule. Set it once and the server adds each copy on its date.
- [Categories and merchants](https://orochibraru.com/opencount/docs/categories-and-merchants.md): Every expense has a category, and can have a merchant. Both feed Insights, and both are filled in for you most of the time.
- [Scanning receipts](https://orochibraru.com/opencount/docs/receipts.md): When an admin has turned receipt reading on, the expense sheet offers Scan a receipt while you add an expense. Pick a photo or a PDF and OpenCount fills in what…
- [Insights](https://orochibraru.com/opencount/docs/insights.md): Each group's Insights page shows where its money went.
- [Personal expenses and bank sync](https://orochibraru.com/opencount/docs/personal-and-banks.md): Personal is a private list of your own expenses. Nobody else sees it, not the other members of your groups and not the admin. It is in the bottom tab bar on a…
- [Archiving](https://orochibraru.com/opencount/docs/archiving.md): Done with a trip? Archive its group and it leaves your groups list.
- [Your account](https://orochibraru.com/opencount/docs/accounts-and-appearance.md): Account holds five sections: profile, security, appearance, notifications and bank sync. Signing out is at the bottom of it.
- [The admin area](https://orochibraru.com/opencount/docs/admin.md): Admin is where an instance is run from: who gets in, how they sign in, email, receipt reading and backups. It shows in the navigation for admins only; anyone…
- [Sign-in and single sign-on](https://orochibraru.com/opencount/docs/sign-in-and-sso.md): Admin, Sign-in methods decides how people get in: email and password, passkeys, and any number of OpenID Connect providers. Password and passkey sign-in are on…
- [Email](https://orochibraru.com/opencount/docs/email.md): OpenCount sends these emails: invites, sign-up verification codes, password reset links, the code that confirms a new address and the notice to the old one…
- [Receipt reading](https://orochibraru.com/opencount/docs/receipt-reading.md): Receipt reading turns a photo or a PDF of a receipt into a prefilled expense: amount, date and merchant. It is off by default, optional, and entirely local…
- [Backups and upgrades](https://orochibraru.com/opencount/docs/backups-and-upgrades.md): What to back up. Taking a backup. Restoring. Upgrading. Downgrading. Why migrations are append-only.
- [Logs, traces and errors](https://orochibraru.com/opencount/docs/observability.md): OpenCount writes logs to the container's output, and can send traces to an OpenTelemetry collector and errors to a Sentry-compatible service. Traces and error…
- [Troubleshooting](https://orochibraru.com/opencount/docs/troubleshooting.md): The container exits at boot. Every form fails: "Cross-site POST form submissions are forbidden". I lost the setup code. The setup screen sends me to sign-in…
- [Development](https://orochibraru.com/opencount/docs/development.md): Without mise: bun install, copy .env.example to .env, and replace AUTH_SECRET with the output of openssl rand -base64 32.
- [Architecture](https://orochibraru.com/opencount/docs/architecture.md): How OpenCount is put together, and why.
- [Testing](https://orochibraru.com/opencount/docs/testing.md): The suite runs on Bun's own test runner, with no Vitest and no Jest. It covers the domain logic (splits, balances, settle-up, recurrence, insights, receipt…
