Receipts & Automation
Snap a receipt, forward it to the bot, and let Gemini extract the details for you. Here’s how to get consistent results.
Uploading receipts
- Open the chat with the bot.
- Tap the paperclip and choose Photo or Video.
- Add an optional caption:
@walletto force a destination wallet.installments=3(with optionalbeneficiary=Name) to record the parsed total as a credit purchase with an installment schedule.expense coffeeif you want to suggest the description.
- Send the photo. The bot replies with a parsing status which updates to a detailed transaction view (with Edit/Delete buttons) once complete.
Tips:
- Use well-lit photos with cropped receipts; avoid low contrast or folded paper.
- If the receipt shows totals in thousands (e.g., “123,5”), the bot normalises decimals automatically.
- The parser keeps you in control: it returns the structured transaction before committing if the bot is configured that way. In this deployment it saves immediately but you can delete/adjust afterwards.
Auto-classifying wallets
- The caption
@wallet-nameis the safest option. - If omitted, the bot uses your default wallet.
- Receipts sent as replies to a previous bot message inherit the same wallet, which is useful when batching.
- Add
installments=<n>(and optionalbeneficiary=Name) when you want the receipt to save as a credit purchase with that number of installments; the tagged credit wallet will be used for the charge. - When a marketplace receipt lists multiple vendor subtotals, the bot now sums the extracted item totals so the final transaction matches the overall spend. You still can edit the saved transaction if the parser picks the wrong totals.
- The bot also tells Gemini today’s date, and it defaults to that date whenever the receipt date is ambiguous so your new transactions stay current.
Handling errors
If parsing fails you’ll see “Could not parse that receipt.” Common causes:
- Blurry or partial photo → retake.
- Currency symbols/format not recognised → include
expense AMOUNTin the caption to override. - Gemini quota exceeded → retry later; admins receive alerts.
Other automation hooks
- Inline buttons in
/recentkeep history browsing tidy. - Wallet transfer confirmations edit the original message once both sides succeed, so you can trust that a failure would have been called out.
- Integration tests in
integration_tests/telegram_bot/mimic user actions to ensure regressions (like failed deletions) are caught before release.