Telegram to Google Sheets, payments logged clean
Payment confirmations land in Telegram, then disappear into chat history. You tell yourself you’ll log them later. Later turns into “end of week,” and now you’re scrolling, guessing amounts, and fixing typos in your spreadsheet.
This Telegram Sheets payments automation hits freelancers first (because every missed payment matters), but agency owners and ops leads feel it too. You get a clean Google Sheet row for every transaction message, without copy-paste and without the “wait, was that $75 or $175?” moment.
Below is the workflow, what it changes day to day, and how to set it up so your ledger stays tidy even when Telegram gets noisy.
How This Automation Works
See how this solves the problem:
n8n Workflow Template: Telegram to Google Sheets, payments logged clean
flowchart LR
subgraph sg0["Telegram Flow"]
direction LR
n0@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n1@{ icon: "mdi:database", form: "rounded", label: "Google Sheets", pos: "b", h: 48 }
n2["<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 Trigger"]
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/code.svg' width='40' height='40' /></div><br/>transactions"]
n0 --> n3
n3 --> n1
n2 --> n0
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 n2 trigger
class n0 decision
class n1 database
class n3 code
classDef customIcon fill:none,stroke:none
class n2,n3 customIcon
The Challenge: Turning Telegram Payments Into a Reliable Ledger
Telegram is great for fast updates, but it’s a terrible accounting system. Transaction messages show up mixed with memes, client notes, and “can you resend that invoice?” replies. When you manually move those payment details into Google Sheets, the process is slow and oddly stressful. You have to re-read every message, interpret the format, then type it into the right column. And if you’re doing this from your phone, honestly, it’s even worse. One small mistake (a date, a missing digit, the wrong sender handle) can throw off reconciliation later and waste an afternoon you didn’t have.
The friction compounds fast. Here’s where it usually breaks down.
- You end up copying the wrong amount or currency symbol because the message format changes slightly.
- Messages get buried in group chats, so you miss transactions and your sheet looks “mostly right” until it doesn’t.
- Someone pastes a reference ID with an extra character, and now matching payments to invoices becomes manual detective work.
- You delay updates because it feels like admin work, which means the sheet stops being trusted by the team.
The Fix: Parse Telegram Transaction Messages Into Sheet Rows
This workflow listens for new messages in a Telegram chat (usually a private channel or a finance group). When a message arrives, it checks if it looks like a transaction, not random conversation. If it passes that filter, the workflow parses the text and pulls out the fields you actually care about: date, amount, sender (or receiver), and a transaction/reference ID. Then it writes a new row into Google Sheets with those values mapped into your columns. Instead of chat history being your “system,” the sheet becomes the source of truth, updated in real time. And because the logic is automated, you get consistency even when your day is chaotic.
The workflow starts with a Telegram trigger and a simple conditional check. From there, a parsing script extracts structured data using pattern matching (regex), and Google Sheets receives a clean, ready-to-filter row. No extra apps to babysit.
What Changes: Before vs. After
| What This Eliminates | Impact You’ll See |
|---|---|
|
|
Real-World Impact
Say you get 10 payment notifications a day via Telegram. Manually, you might spend about 2 minutes per message to copy the amount, date, sender, and transaction ID into Google Sheets, plus another few minutes fixing one or two mistakes. That’s roughly 20–30 minutes daily, so about 2 hours a week. With this workflow, you spend maybe 10 minutes up front setting columns and mapping once, then new payments show up automatically as clean rows the moment the messages arrive.
Requirements
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Telegram to receive transaction notifications in chat.
- Google Sheets to store the ledger as structured rows.
- Telegram bot token (get it from BotFather in Telegram).
Skill level: Intermediate. You will connect accounts and may tweak a parsing pattern if your message format is unique.
Need help implementing this? Talk to an automation expert (free 15-minute consultation).
The Workflow Flow
A Telegram message arrives. The workflow starts the moment your bot sees a new message in the target chat or group, so you don’t need to forward anything manually.
Only transaction-like messages continue. An “Is this a transaction?” check filters out noise by matching your known patterns (like “Received: $75 from @john_doe…”), which keeps your sheet clean.
The text gets parsed into fields. A script extracts the amount, date, sender/receiver, and transaction/reference ID. If your notifications come in multiple formats, you can extend the patterns so it still works.
A new row is added to Google Sheets. The workflow maps each extracted value into the right column, so filtering by date, searching by ID, or sharing a view with a bookkeeper is painless.
You can easily modify the parsing rules to support your own bank alerts, payment processors, or localized date formats. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Telegram Trigger
Set up the workflow to listen for incoming Telegram messages that contain transaction data.
- Add or open Incoming Telegram Hook.
- Credential Required: Connect your telegramApi credentials.
- Set Updates to
message.
Step 2: Connect Google Sheets
Configure the Google Sheets destination where parsed transactions will be appended.
- Add or open Update Spreadsheet Rows.
- Credential Required: Connect your googleSheetsOAuth2Api credentials.
- Set Operation to
append. - Select Document to
[YOUR_ID]and Sheet toSheet1(gid0).
Step 3: Set Up Message Filtering
Ensure only valid transaction-style messages are passed to the parser.
- Open Conditional Text Check.
- Set the string condition Left Value to
{{$json.message.text}}. - Set the operator to contains and Right Value to
=.
= symbol, the condition will block all messages. Adjust the Right Value to match your real message patterns.Step 4: Configure the Parsing and Output Mapping
Parse the transaction message formats and map parsed fields into the spreadsheet columns.
- Open Transaction Parser Script and paste the provided JavaScript in Code to handle the three supported formats.
- In Update Spreadsheet Rows, map the column values to expressions: Date →
{{ $json.Date }}, Time →{{ $json.Time }}, Amount →{{ $json.Amount }}, Merchant →{{ $json.Merchant }}, Card Ending →{{ $json['Card Ending'] }}, Available Limit →{{ $json['Available Limit'] }}.
Step 5: Test and Activate Your Workflow
Validate the full execution from Telegram message to Google Sheets row append.
- Click Execute Workflow and send a test Telegram message that matches one of the supported formats.
- Confirm that Conditional Text Check passes and Transaction Parser Script outputs parsed fields.
- Verify a new row appears in your Google Sheet from Update Spreadsheet Rows.
- Toggle the workflow to Active to enable continuous transaction logging.
Watch Out For
- Telegram bot permissions matter. If your bot can’t “see” messages in a group, check group admin settings and confirm the correct chat ID in the Telegram Trigger node.
- If your transaction message format varies, the parser may silently miss fields. When you change wording (or switch banks), revisit the regex inside the Transaction Parser Script node.
- Google Sheets writes can fail if the sheet structure changes. If someone renames columns or rearranges them, re-check the mapping in the Update Spreadsheet Rows node first.
Common Questions
About 30 minutes if your bot and sheet are ready.
Yes. You’ll connect Telegram and Google Sheets, then paste in credentials and test with a sample message.
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 any API costs if you add AI parsing later.
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.
Change the patterns inside the Transaction Parser Script node to match your message format. Common tweaks include supporting different currencies (like ₹), swapping date formats (29/05/2024 vs 2024-05-29), and capturing extra fields like “Paid to” vs “Received from.” If you want stricter filtering, tighten the Conditional Text Check node so only known payment templates get logged.
Usually it’s the bot token, the wrong chat ID, or missing group permissions. Regenerate the token in BotFather if needed, then confirm the bot is actually added to the chat and allowed to read messages. If it works in a private chat but not a group, admin rights are the first thing to check.
For most small teams, it comfortably handles hundreds of messages a day.
Often, yes, especially if you need custom parsing and strict filtering. Zapier and Make are great for quick, simple flows, but message parsing tends to get awkward once you support multiple templates. n8n makes it easier to add conditional logic, run your own parsing script, and keep costs predictable if volume grows. Self-hosting also matters here because this template is built around custom/community nodes, which can be limiting on some hosted platforms. If you want help deciding, Talk to an automation expert and we’ll sanity-check your setup.
Once this is running, your payment log stops being a weekly cleanup project. The workflow handles the repetitive part, and your sheet stays ready for reconciliation whenever you need it.
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.