A Telegram bill split bot that keeps one shared ledger in the group chat
The hard part of a shared trip is not the arithmetic, it is the record. Receipts end up in four different camera rolls, one person fronted the flat deposit, somebody else keeps buying the coffees, and a week later nobody can reconstruct the order things happened in.
SplitTabsBot keeps that record where the conversation already is. Each expense is logged with one line in the group chat as it happens, and at any point the group can ask for balances or for a settlement plan. Nothing is exported to a separate app and nobody has to create an account.
Balances versus settlement
Two different questions get two different commands, and the difference is the whole point of the bot. /balance answers who is up and who is down: one net number per person, summed over every expense logged so far.
/settle answers something harder. Given those balances, what is the smallest set of transfers that clears all of them? In a group of six, paying everyone back individually can mean fifteen separate transfers; the minimal plan is usually three or four. The bot computes that plan and posts it, so the settle-up conversation is a list rather than an argument.
The payer is always included in the split, which is the assumption that catches people out on other tools. /add 42.50 dinner @alice @bob divides the dinner three ways, not two, because whoever ran the command ate as well.
No money moves. The bot has no payment rail, holds no banking details, and never touches a card. /settle produces a list of transfers for humans to make by whatever means they already use.
?start=zovo so arrivals from this page are counted separately.Running a shared ledger
- Add the bot to the group. No admin rights needed. The ledger is scoped to that one chat.
- Set a currency. /currency EUR. It only changes how balances and settlements are displayed; amounts are stored as entered.
- Log as you go. /add 42.50 dinner @alice @bob. Amount, description, then who it is split between.
- Check in. /balance for net positions, /settle for the minimal transfer plan, /nudge to post the balances back to the group as a rate-limited reminder.
- Fix mistakes. /undo drops the most recent entry. /clear wipes the whole ledger and starts the group over.
Command reference
| Command | What it does |
|---|---|
| /add 42.50 dinner @alice @bob | Log an expense. The payer is always part of the split. |
| /balance | Each member's net position: who is owed and who owes. |
| /settle | The minimal set of transfers that clears every balance. |
| /undo | Remove the most recent expense. |
| /clear | Wipe this group's ledger and start over. |
| /currency EUR | Set the display currency for balances and settlements. |
| /nudge | Post the current balances back to the group. Rate limited. |
| /export | Pro: download the group's ledger as CSV. |
Free and Pro
Free
- 20 expenses per group
- Balances, settlement, undo, clear and currency
- An automatic balance summary posted every Sunday
Pro
- Unlimited expenses per group
- CSV export of the whole ledger with /export
Pro here is scoped to the group, for a one-time 150 Stars payment. Anyone in the chat can pay it and the whole ledger is unlocked for everyone.
What it stores
- A group row: chat title, currency, language, Pro flag, and the last time /nudge ran.
- A member row per handle the bot has seen in the chat, so balances can name people.
- One expense row per entry: payer, amount, description, and the split. No bank details, card numbers or payment identifiers exist anywhere in the schema.
Questions
- Does it move money?
- No. It calculates and displays. Every transfer in a /settle plan is made by the people involved, through whatever they normally use.
- Why is the payer counted in the split?
- Because they consumed part of what they paid for. /add 60 taxi @alice @bob means three people shared a 60 taxi, so each owes 20 and the payer is owed 40.
- Can I correct a typo?
- /undo removes the last entry so you can re-add it correctly. There is no per-entry edit; for a bad ledger, /clear is the reset.
- What does the CSV contain?
- The group's expense rows as logged: amount, description, payer and participants. It is a plain export for a spreadsheet, not a formatted report.
- Is the ledger shared between groups?
- No. Each chat has its own. The same people in two different groups keep two unrelated ledgers.
Other Telegram bots in this set
All of them are listed alongside the rest of Zovo's free online tools, and the browser-side half of the catalogue is under Chrome extensions.
Want the step-by-step walkthrough? Read Split bills in a Telegram group: the full guide on tg.zovo.one.