Telegram to Google Sheets, expenses logged for you
You tell yourself you’ll “log it later.” Then later turns into a week, receipts vanish, and your bank balance becomes a surprise instead of a plan.
Freelancers feel this at tax time. A small business owner feels it when reimbursements are messy. And if you run marketing budgets, random card charges add up fast. This Telegram expense logging automation turns quick messages (or voice notes) into a clean Google Sheets ledger.
In this guide, you’ll see what the workflow does, what you need to run it, and how the pieces fit together so you can trust your numbers again.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Telegram to Google Sheets, expenses logged for you
flowchart LR
subgraph sg0["Telegram Intake Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Telegram Intake Trigger"]
n1@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Route Message Type", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "Capture Text Input", pos: "b", h: 48 }
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Fetch Voice Attachment"]
n4@{ icon: "mdi:robot", form: "rounded", label: "Speech Transcription", pos: "b", h: 48 }
n5@{ icon: "mdi:robot", form: "rounded", label: "Finance Assistant Agent", pos: "b", h: 48 }
n6["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Send Telegram Reply"]
n7@{ icon: "mdi:brain", form: "rounded", label: "Compose AI Reply", pos: "b", h: 48 }
n8@{ icon: "mdi:memory", form: "rounded", label: "Store Conversation Memory", pos: "b", h: 48 }
n9@{ icon: "mdi:database", form: "rounded", label: "Retrieve Finance Sheet", pos: "b", h: 48 }
n10@{ icon: "mdi:database", form: "rounded", label: "Append Finance Entry", pos: "b", h: 48 }
n1 --> n2
n1 --> n3
n2 --> n5
n10 -.-> n5
n5 --> n6
n8 -.-> n5
n4 --> n5
n0 --> n1
n9 -.-> n5
n3 --> n4
n7 -.-> n5
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n4,n5 ai
class n7 aiModel
class n8 ai
class n1 decision
class n9,n10 database
classDef customIcon fill:none,stroke:none
class n0,n3,n6 customIcon
The Problem: Expense Tracking Falls Apart in Real Life
Most expense tracking fails for a boring reason: it asks you to stop what you’re doing and open yet another app. You’re in a taxi, on a client call, grabbing coffee between meetings, or closing up the shop. So you “save the receipt,” promise you’ll categorize it later, and the pile grows. Then you sit down with statements and try to remember what “$18.42” was for, which is honestly a terrible use of your brain. And when you’re guessing, you’re also making your reports less reliable.
It’s not one big mistake. It’s the daily friction.
- You lose 10 minutes here and there re-creating purchases from vague bank line items.
- Categories drift over time, so “Meals,” “Dining,” and “Food” all become different buckets.
- Voice notes and screenshots pile up because turning them into rows is annoying.
- When you miss entries, your cashflow view becomes guesswork, which makes budgeting feel pointless.
The Solution: Log Expenses in Telegram, Auto-Write the Ledger
This workflow turns Telegram into your “capture inbox” for money moves. You send a quick message like “Spent $25 on transportation” or “Received $300 from freelancing,” and n8n takes it from there. If you prefer voice, you just record a short note and the workflow transcribes it for you. An AI finance assistant then pulls out the amount, decides whether it’s income or expense, assigns a category or source, and formats it consistently. Finally, it appends the entry into your Google Sheets ledger with the fields you care about (chat ID, timestamp, income, source, cost, category) and replies in Telegram so you know it worked.
The workflow starts with a Telegram message. It routes text and voice down different paths, then brings both back into the same AI parsing step. After that, Google Sheets becomes your single source of truth, updated in real time.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you have 25 money events in a week (coffee, tools, fuel, client lunch, a couple invoices paid). Manually, even “quick” logging is maybe 3 minutes each once you open an app, pick a category, and type a note, which is about 75 minutes. With this workflow, you send a Telegram message in about 20 seconds, or a voice note in under a minute, and the sheet updates while you move on. That usually turns a weekly catch-up session into a non-event.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Telegram to capture text and voice entries.
- Google Sheets to store your finance ledger rows.
- OpenAI API key (get it from your OpenAI dashboard under API keys)
Skill level: Intermediate. You’ll connect credentials, create a sheet with the right columns, and paste a bot token from BotFather.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
Telegram kicks things off. When you send your bot a message, the Telegram trigger starts the workflow immediately. It can handle normal text or a voice recording.
The message type gets routed. A switch checks what came in. Text goes straight to a “capture input” step, while voice messages are fetched as an audio file first.
Voice becomes text, then the AI agent normalizes everything. Whisper transcribes the audio, then the finance assistant agent extracts the amount, decides income vs. expense, and picks a sensible category (or an income source). This is where you can shape the “financial logic” so it matches your world.
Google Sheets gets the final row and Telegram confirms it. The workflow retrieves your target sheet, appends a new entry with the date/time and the parsed fields, and sends you a reply so you’re not wondering if it saved.
You can easily modify the category rules to match your chart of accounts based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Telegram Trigger
Set up the incoming Telegram trigger that starts the workflow whenever a user sends a message.
- Add and open Telegram Intake Trigger.
- Credential Required: Connect your Telegram Bot credentials (this node requires a bot token even though it is not preconfigured).
- Save the node so n8n can register the Telegram webhook.
Step 2: Route Message Types and Capture Text
Use a switch to route text messages directly and voice messages through transcription.
- Open Route Message Type and configure rules to separate text and voice inputs based on Telegram payload fields.
- Connect Route Message Type to Capture Text Input for text messages.
- Connect Route Message Type to Fetch Voice Attachment for voice messages.
- In Capture Text Input, map the message text into a consistent field to send into the AI agent.
⚠️ Common Pitfall: If Route Message Type doesn’t properly detect voice messages, Fetch Voice Attachment and Speech Transcription will never run.
Step 3: Configure AI Processing and Memory
Set up the AI agent, transcription, and memory tools that interpret messages and update finance data.
- Open Speech Transcription and connect OpenAI credentials to enable audio-to-text.
- Open Finance Assistant Agent and ensure it uses Compose AI Reply as its language model connection.
- Credential Required: Connect your OpenAI credentials in Compose AI Reply (the language model for Finance Assistant Agent).
- Confirm Store Conversation Memory is attached to Finance Assistant Agent as the memory connection.
- Credential Required: Connect your Google Sheets credentials on Retrieve Finance Sheet and Append Finance Entry, which act as AI tools for Finance Assistant Agent.
⚠️ Common Pitfall: AI tool nodes like Store Conversation Memory, Retrieve Finance Sheet, and Append Finance Entry require credentials on their own nodes, while the language model credentials must be on Compose AI Reply.
Step 4: Configure Telegram Output
Send the AI response back to the user in Telegram.
- Open Send Telegram Reply and map the AI-generated response from Finance Assistant Agent into the message body.
- Credential Required: Connect your Telegram Bot credentials to Send Telegram Reply.
Step 5: Test and Activate Your Workflow
Validate both text and voice paths before turning the workflow on.
- Click Execute Workflow and send a text message to your Telegram bot to verify Capture Text Input → Finance Assistant Agent → Send Telegram Reply.
- Send a voice message to confirm Fetch Voice Attachment → Speech Transcription → Finance Assistant Agent runs correctly.
- Confirm that the reply appears in Telegram and that the finance data is written via Append Finance Entry.
- Once validated, switch the workflow to Active for production use.
Common Gotchas
- Google Sheets credentials can expire or need specific permissions. If things break, check the Google connection inside n8n credentials and confirm the sheet is shared with the connected Google account.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Frequently Asked Questions
About 30 minutes if your Telegram bot and Google Sheet are ready.
No coding required. You’ll connect accounts, paste API keys, and match the workflow to your sheet columns.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI API costs (often a few cents per day at low usage).
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and you should. Update the Finance Assistant Agent instructions so it uses your category list, then mirror those categories in your Google Sheets columns (the Append Finance Entry step writes whatever structure you decide). Common customizations are adding “Project/Client,” splitting “Meals” into “Client Meals” vs. “Personal,” and changing currency handling.
Most of the time it’s the bot token or permissions. Re-copy the token from @BotFather, update the Telegram credentials in n8n, then confirm you’re messaging the correct bot and that the trigger is enabled. If voice messages fail but text works, the issue is usually the “fetch voice attachment” step not being able to access the file URL.
A lot.
Often, yes, because this workflow benefits from branching (text vs. voice), an AI agent step, and flexible data handling in one place. n8n also gives you self-hosting, which means you’re not paying per tiny step the way many people end up doing in Zapier. That said, Zapier or Make can feel simpler for basic “form submission to spreadsheet” jobs. If you want the quickest path to a reliable build, Talk to an automation expert and we’ll sanity-check the best option for your volume.
Once this is running, expense capture becomes a quick message, not a weekly chore. Your sheet stays current, and you stop paying the “reconstruction tax” every month.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.