webapp: idempotency-keyed add
the same add posted twice with the same Idempotency-Key produces exactly one expense
π₯ People
Alice @aliceBob @bob
sendsAlice runs /newsplit @bob
π₯ Group chat
Alice
/newsplit @bob
Hello! Iβm @splitsheetbot, here to help you split bills with friends. β show full message
Hello! Iβm @splitsheetbot, here to help you split bills with friends.
I use something called a Splitsheetβa dynamic message that keeps track of all expenses and debts. Below, youβll find your first Splitsheet.
Hereβs how to get started:
1. Join the Splitsheet by clicking the π₯β button (or reply with add @βusername)
2. Reply to the Splitsheet with a description of your expense
3. Pin the Splitsheet for quick access
Examples of messages:
- groceries 50 (sender paid, and the cost is split evenly among all members)
- bought coffee for Emma 15 (sender paid, and only Emma owes)
- John bought concert tickets for me and Sarah, 40 each (John spent 80, and both Sarah and you owe)
How to edit expenses:
- Edit your own message
- Reply to your message with the changes
- Reply to your message requesting deletion
Adding expenses is free. One payment shows who owes whom, for the whole group, forever.
When you're ready to start a new Splitsheet, use the /newsplit command. You can mention members to add them immediately: /newsplit @βalice @βbob
If you have any questions or suggestions, feel free to contact @splitsheet_help_bot
I use something called a Splitsheetβa dynamic message that keeps track of all expenses and debts. Below, youβll find your first Splitsheet.
Hereβs how to get started:
1. Join the Splitsheet by clicking the π₯β button (or reply with add @βusername)
2. Reply to the Splitsheet with a description of your expense
3. Pin the Splitsheet for quick access
Examples of messages:
- groceries 50 (sender paid, and the cost is split evenly among all members)
- bought coffee for Emma 15 (sender paid, and only Emma owes)
- John bought concert tickets for me and Sarah, 40 each (John spent 80, and both Sarah and you owe)
How to edit expenses:
- Edit your own message
- Reply to your message with the changes
- Reply to your message requesting deletion
Adding expenses is free. One payment shows who owes whom, for the whole group, forever.
When you're ready to start a new Splitsheet, use the /newsplit command. You can mention members to add them immediately: /newsplit @βalice @βbob
If you have any questions or suggestions, feel free to contact @splitsheet_help_bot
π
π Splitsheet
π₯ Alice, @bob
Your expenses will appear here
β©οΈ Reply to add an expense. Or tap here
π₯ Alice, @bob
Your expenses will appear here
β©οΈ Reply to add an expense. Or tap here
π€βMore β’β’β’ β
π‘οΈ Admin log channel
π #splitsheet_created
By: Alice
Sheet:
π€ #member_joined
Name: Alice
Sheet:
π€ #member_joined
Name: bob
Sheet:
By: Alice
Sheet:
14706474-2dda-487c-a333-c136c282dadcπ€ #member_joined
Name: Alice
Sheet:
14706474-2dda-487c-a333-c136c282dadcπ€ #member_joined
Name: bob
Sheet:
14706474-2dda-487c-a333-c136c282dadcviaWebApp.addExpenseAlice adds an expense (taxi, 100)
π₯ Group chat
Alice
/newsplit @bob
Hello! Iβm @splitsheetbot, here to help you split bills with friends. β show full message
Hello! Iβm @splitsheetbot, here to help you split bills with friends.
I use something called a Splitsheetβa dynamic message that keeps track of all expenses and debts. Below, youβll find your first Splitsheet.
Hereβs how to get started:
1. Join the Splitsheet by clicking the π₯β button (or reply with add @βusername)
2. Reply to the Splitsheet with a description of your expense
3. Pin the Splitsheet for quick access
Examples of messages:
- groceries 50 (sender paid, and the cost is split evenly among all members)
- bought coffee for Emma 15 (sender paid, and only Emma owes)
- John bought concert tickets for me and Sarah, 40 each (John spent 80, and both Sarah and you owe)
How to edit expenses:
- Edit your own message
- Reply to your message with the changes
- Reply to your message requesting deletion
Adding expenses is free. One payment shows who owes whom, for the whole group, forever.
When you're ready to start a new Splitsheet, use the /newsplit command. You can mention members to add them immediately: /newsplit @βalice @βbob
If you have any questions or suggestions, feel free to contact @splitsheet_help_bot
I use something called a Splitsheetβa dynamic message that keeps track of all expenses and debts. Below, youβll find your first Splitsheet.
Hereβs how to get started:
1. Join the Splitsheet by clicking the π₯β button (or reply with add @βusername)
2. Reply to the Splitsheet with a description of your expense
3. Pin the Splitsheet for quick access
Examples of messages:
- groceries 50 (sender paid, and the cost is split evenly among all members)
- bought coffee for Emma 15 (sender paid, and only Emma owes)
- John bought concert tickets for me and Sarah, 40 each (John spent 80, and both Sarah and you owe)
How to edit expenses:
- Edit your own message
- Reply to your message with the changes
- Reply to your message requesting deletion
Adding expenses is free. One payment shows who owes whom, for the whole group, forever.
When you're ready to start a new Splitsheet, use the /newsplit command. You can mention members to add them immediately: /newsplit @βalice @βbob
If you have any questions or suggestions, feel free to contact @splitsheet_help_bot
π
π Splitsheet
π° 100.00 β’ π₯ Alice, @bob
Jun 19, 2026
taxi β 100.00 β’ Alice for all
π All debts are already calculated. Unlock to see them
β©οΈ Reply to add an expense. Or tap here
π° 100.00 β’ π₯ Alice, @bob
Jun 19, 2026
taxi β 100.00 β’ Alice for all
π All debts are already calculated. Unlock to see them
β©οΈ Reply to add an expense. Or tap here
π€βMore β’β’β’ β
π See the debts
Alice added via the app:
taxi β 100.00 β’ Alice for all
taxi β 100.00 β’ Alice for all
π± Mini App

viaWebApp.addExpenseAlice adds an expense (taxi, 100)
- βexactly one addExpense persisted despite two identical-key POSTs
π₯ Group chat
Alice
/newsplit @bob
Hello! Iβm @splitsheetbot, here to help you split bills with friends. β show full message
Hello! Iβm @splitsheetbot, here to help you split bills with friends.
I use something called a Splitsheetβa dynamic message that keeps track of all expenses and debts. Below, youβll find your first Splitsheet.
Hereβs how to get started:
1. Join the Splitsheet by clicking the π₯β button (or reply with add @βusername)
2. Reply to the Splitsheet with a description of your expense
3. Pin the Splitsheet for quick access
Examples of messages:
- groceries 50 (sender paid, and the cost is split evenly among all members)
- bought coffee for Emma 15 (sender paid, and only Emma owes)
- John bought concert tickets for me and Sarah, 40 each (John spent 80, and both Sarah and you owe)
How to edit expenses:
- Edit your own message
- Reply to your message with the changes
- Reply to your message requesting deletion
Adding expenses is free. One payment shows who owes whom, for the whole group, forever.
When you're ready to start a new Splitsheet, use the /newsplit command. You can mention members to add them immediately: /newsplit @βalice @βbob
If you have any questions or suggestions, feel free to contact @splitsheet_help_bot
I use something called a Splitsheetβa dynamic message that keeps track of all expenses and debts. Below, youβll find your first Splitsheet.
Hereβs how to get started:
1. Join the Splitsheet by clicking the π₯β button (or reply with add @βusername)
2. Reply to the Splitsheet with a description of your expense
3. Pin the Splitsheet for quick access
Examples of messages:
- groceries 50 (sender paid, and the cost is split evenly among all members)
- bought coffee for Emma 15 (sender paid, and only Emma owes)
- John bought concert tickets for me and Sarah, 40 each (John spent 80, and both Sarah and you owe)
How to edit expenses:
- Edit your own message
- Reply to your message with the changes
- Reply to your message requesting deletion
Adding expenses is free. One payment shows who owes whom, for the whole group, forever.
When you're ready to start a new Splitsheet, use the /newsplit command. You can mention members to add them immediately: /newsplit @βalice @βbob
If you have any questions or suggestions, feel free to contact @splitsheet_help_bot
π
π Splitsheet
π° 100.00 β’ π₯ Alice, @bob
Jun 19, 2026
taxi β 100.00 β’ Alice for all
π All debts are already calculated. Unlock to see them
β©οΈ Reply to add an expense. Or tap here
π° 100.00 β’ π₯ Alice, @bob
Jun 19, 2026
taxi β 100.00 β’ Alice for all
π All debts are already calculated. Unlock to see them
β©οΈ Reply to add an expense. Or tap here
π€βMore β’β’β’ β
π See the debts
Alice added via the app:
taxi β 100.00 β’ Alice for all
taxi β 100.00 β’ Alice for all
π± Mini App

viaWebApp.addExpenseAlice adds an expense (taxi, 100)
- βa second add under a NEW key appends a second expense
π₯ Group chat
Alice
/newsplit @bob
Hello! Iβm @splitsheetbot, here to help you split bills with friends. β show full message
Hello! Iβm @splitsheetbot, here to help you split bills with friends.
I use something called a Splitsheetβa dynamic message that keeps track of all expenses and debts. Below, youβll find your first Splitsheet.
Hereβs how to get started:
1. Join the Splitsheet by clicking the π₯β button (or reply with add @βusername)
2. Reply to the Splitsheet with a description of your expense
3. Pin the Splitsheet for quick access
Examples of messages:
- groceries 50 (sender paid, and the cost is split evenly among all members)
- bought coffee for Emma 15 (sender paid, and only Emma owes)
- John bought concert tickets for me and Sarah, 40 each (John spent 80, and both Sarah and you owe)
How to edit expenses:
- Edit your own message
- Reply to your message with the changes
- Reply to your message requesting deletion
Adding expenses is free. One payment shows who owes whom, for the whole group, forever.
When you're ready to start a new Splitsheet, use the /newsplit command. You can mention members to add them immediately: /newsplit @βalice @βbob
If you have any questions or suggestions, feel free to contact @splitsheet_help_bot
I use something called a Splitsheetβa dynamic message that keeps track of all expenses and debts. Below, youβll find your first Splitsheet.
Hereβs how to get started:
1. Join the Splitsheet by clicking the π₯β button (or reply with add @βusername)
2. Reply to the Splitsheet with a description of your expense
3. Pin the Splitsheet for quick access
Examples of messages:
- groceries 50 (sender paid, and the cost is split evenly among all members)
- bought coffee for Emma 15 (sender paid, and only Emma owes)
- John bought concert tickets for me and Sarah, 40 each (John spent 80, and both Sarah and you owe)
How to edit expenses:
- Edit your own message
- Reply to your message with the changes
- Reply to your message requesting deletion
Adding expenses is free. One payment shows who owes whom, for the whole group, forever.
When you're ready to start a new Splitsheet, use the /newsplit command. You can mention members to add them immediately: /newsplit @βalice @βbob
If you have any questions or suggestions, feel free to contact @splitsheet_help_bot
π
π Splitsheet
π° 200.00 β’ π₯ Alice, @bob
Jun 19, 2026
taxi β 100.00 β’ Alice for all
taxi β 100.00 β’ Alice for all
π All debts are already calculated. Unlock to see them
β©οΈ Reply to add an expense. Or tap here
π° 200.00 β’ π₯ Alice, @bob
Jun 19, 2026
taxi β 100.00 β’ Alice for all
taxi β 100.00 β’ Alice for all
π All debts are already calculated. Unlock to see them
β©οΈ Reply to add an expense. Or tap here
π€βMore β’β’β’ β
π See the debts
Alice added via the app:
taxi β 100.00 β’ Alice for all
taxi β 100.00 β’ Alice for all
Alice added via the app:
taxi β 100.00 β’ Alice for all
taxi β 100.00 β’ Alice for all
π± Mini App
