Track expenses, budgets and card cycles with Telegram and Data Tables
Log expenses by sending Telegram messages or receipt photos, keep them in an n8n Data Table, and get budget status, credit card statement totals, due-date reminders and monthly CSV exports in Telegram.
Track expenses, budgets and card cycles with Telegram and Data Tables costs $19.00 on n8n.io. Made by Nam Trung Studio (n8n workflows).
How it works
- Triggers when a new Telegram message arrives or every morning at 08:00 on a schedule.
- Parses the Telegram text or photo caption to detect amount, note, category, month, optional card tag (for payment method), and optional receipt photo file ID.
- If the message is an expense entry, saves it to the n8n Data Table and replies in Telegram with a confirmation plus current-month category budget progress and the relevant card statement total/close/due dates (if a card is used).
- If the message is a command, reads the sender’s expenses from the Data Table and returns either a month-by-category report with month-over-month comparison, a budget overview, or credit-card cycle/statement/due-date details in Telegram.
- If the command is /export, formats the selected month’s expenses as a CSV file and sends the CSV document to the Telegram chat.
- If the command is /undo, deletes the most recently created expense for that chat and confirms the removal in Telegram.
- On the daily schedule, scans all stored expenses to find chats with card statements due soon and sends Telegram reminders when the due date is within the configured reminder window.
Requirements
- n8n with Data Tables (n8n Cloud or self-hosted, tested on n8n 2.30)
- A public HTTPS URL for the Telegram webhook (n8n Cloud, or self-hosted behind a tunnel or reverse proxy)
Customization
- Add your own categories and keywords in Config (categoryKeywords); messages can also use #category tags
- Set a monthly budget per category in Config (budgets)
- Add as many credit cards as you like, each with its own closingDay and dueDay, and change reminderDaysBefore
- Change currency, locale and timezone (e.g. USD / en-US); turn off smallNumbersAreThousands if "50" should mean 50, not 50,000
- Change the reminder time in the "Every morning 08:00" Schedule node