🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Telegram to Google Sheets, receipts logged automatically

Lisa Granqvist Partner Workflow Automation Expert

Receipts pile up fast. Then you sit down to “quickly” log expenses, and suddenly you’re squinting at blurry totals, retyping dates, and guessing what that line item even was.

This Telegram receipt logging headache hits small business owners first, honestly. But freelancers tracking reimbursements and marketing leads managing card spend feel it too. The outcome is simple: send a photo, get a clean row in Google Sheets, and stop losing charges.

This workflow turns your Telegram bot into a lightweight expense assistant using OCR.space, then helps you confirm what got logged. You’ll see how it works, what you need, and where people usually get stuck.

How This Automation Works

See how this solves the problem:

n8n Workflow Template: Telegram to Google Sheets, receipts logged automatically

The Challenge: Receipt Logging That Doesn’t Fall Apart

Manual receipt tracking is one of those “I’ll do it later” tasks that quietly turns into a mess. You buy something, toss the receipt in a bag (or your camera roll), and promise you’ll enter it into a spreadsheet. Later becomes end-of-week. End-of-week becomes end-of-month. Now you’re scrolling through photos trying to match totals to bank transactions, and the numbers don’t line up because you missed two small charges and typed one amount wrong. It’s not hard work. It’s draining work.

It adds up fast. Here’s where it breaks down in real life.

  • Receipt photos live in Telegram or your phone gallery, while your “source of truth” is somewhere else entirely.
  • Typing in date, description, and amount sounds quick until you do it 30 times in a row.
  • Small errors creep in because totals are hard to read, and you don’t notice until reconciliation.
  • If you hand this off to someone else, they have zero context and ask questions for every weird receipt.

The Fix: Send a Receipt Photo, Get a Logged Row

This n8n workflow gives you a simple, reliable path from “receipt photo” to “logged expense.” A Telegram bot receives your message, checks if you actually sent a photo, then fetches the image file from Telegram. From there, it sends the image to OCR.space (a free OCR option) to extract text. The workflow uses that OCR response to identify key details like the amount, date, and description, then sends a confirmation back in Telegram so you know it worked. If you want to keep your tracking in Google Sheets, you can extend this same flow to append the parsed fields into your spreadsheet in a consistent format.

The workflow starts in Telegram, because that’s where the receipt already is. OCR.space reads the image and returns the text. Finally, Telegram replies with the extracted result so you can trust what gets recorded (and catch a weird scan immediately).

What Changes: Before vs. After

Real-World Impact

Say you handle 20 receipt expenses a week. Manually, even a quick process is maybe 5 minutes per receipt once you find the photo, type the amount, add a description, and double-check the date, so that’s about 100 minutes. With this workflow, you send the photo in Telegram (under a minute), wait for OCR to process, and get a confirmation message back. You still may correct an occasional odd scan, but you’re usually down to a few minutes total per week, not a long session.

Requirements

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Telegram to receive receipt photos via a bot.
  • Google Sheets to store a searchable expense log.
  • OCR.space API key (get it from OCR.space OCRAPI signup page).

Skill level: Beginner. You’ll mostly connect accounts, paste an API key, and test with a few receipts.

Need help implementing this? Talk to an automation expert (free 15-minute consultation).

The Workflow Flow

A Telegram message triggers everything. When someone sends a message to your Telegram bot, n8n catches it instantly and pulls in the message details.

A quick validation prevents junk runs. If there’s no photo attached, the workflow routes away so you’re not calling OCR for a text-only message (or an accidental sticker).

The receipt image gets downloaded from Telegram. The workflow fetches the actual image file, because OCR tools need the real file, not just a Telegram reference.

OCR extracts text, then you get a response. n8n sends the image to OCR.space via HTTP Request, receives the extracted text back, and “dispatches” the result to Telegram so you can confirm what was detected.

You can easily modify the OCR parsing to write directly into your Income/Expenses tabs in Google Sheets 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 workflow to listen for incoming Telegram messages that may include photos.

  1. Add and configure Telegram Incoming Trigger.
  2. Set Webhook URL to =https://api.telegram.org/bot{{$env.YOUR_TELEGRAM_BOT_TOKEN}}/getUpdates.
  3. Set Poll Interval to 5 and enable Only New Updates.
  4. Credential Required: Connect your Telegram Bot API credentials for Telegram Incoming Trigger.

⚠️ Common Pitfall: The webhook URL uses {{$env.YOUR_TELEGRAM_BOT_TOKEN}}. Ensure this environment variable is defined in your n8n instance or replace it with a static token value.

Step 2: Connect Telegram and Validate Photo Input

Check incoming messages to confirm a photo exists before attempting OCR.

  1. Add Validate Photo Presence after the trigger.
  2. Configure the condition with Value 1 set to ={{$json.message.photo}}, Operation to isNotEmpty, and Value 2 to true.
  3. Connect the true output of Validate Photo Presence to Fetch Telegram Image.
  4. Credential Required: Connect your Telegram Bot API credentials for Fetch Telegram Image.

Keep the false path unconnected or route it to a notification node if you want to reply when no photo is provided.

Step 3: Set Up Image Retrieval and OCR Processing

Retrieve the image file from Telegram and send it to the OCR service.

  1. In Fetch Telegram Image, set Operation to getFile.
  2. Set Chat ID to ={{$json.message.chat.id}} and File ID to ={{$json.message.photo[{$json.message.photo.length - 1}].file_id}}.
  3. Configure OCR API Call with URL https://api.ocr.space/parse/image and Method POST.
  4. In OCR API Call set query parameters: apikey to ={{$env.YOUR_OCR_SPACE_API_KEY}}, language to eng, and isOverlayRequired to true.
  5. Set body parameters to file with value ={{$binary.data}} and Body Content Type to formData.

⚠️ Common Pitfall: The OCR call depends on {{$binary.data}} from Fetch Telegram Image. If the Telegram node doesn’t return binary data, enable binary output or adjust the node to download the file content.

Step 4: Configure the Output Message

Send the recognized text back to the user in Telegram.

  1. Add Dispatch OCR Result after OCR API Call.
  2. Set Chat ID to ={{$json.message.chat.id}}.
  3. Set Text to OCR Text Found:\n\n*{{$json.ParsedResults[0].ParsedText}}*.
  4. Set Parse Mode to HTML.
  5. Credential Required: Connect your Telegram Bot API credentials for Dispatch OCR Result.

If you want bold text in HTML parse mode, replace the asterisks with <strong> tags in the Text field.

Step 5: Test and Activate Your Workflow

Verify that the workflow receives a Telegram photo and returns OCR text before enabling it in production.

  1. Click Execute Workflow in n8n to start a manual test.
  2. Send a photo to your Telegram bot and confirm Validate Photo Presence routes to Fetch Telegram Image.
  3. Check that OCR API Call returns ParsedResults and that Dispatch OCR Result sends the message back.
  4. When satisfied, toggle the workflow to Active for continuous processing.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Watch Out For

  • Telegram bot credentials can be wrong or revoked. If messages stop arriving, check the bot token in your n8n Telegram credentials first.
  • If you’re using Wait logic (or OCR.space is slow), processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • OCR is only as good as the photo. Dark images, crumpled receipts, and weird fonts lead to messy text, so tweak your parsing Function and add a “confirm or correct” message early.

Common Questions

How quickly can I implement this Telegram receipt logging automation?

About 30 minutes if your Telegram bot and Google Sheet are ready.

Can non-technical teams implement this receipt logging?

Yes. You’ll connect Telegram and Google, then paste the OCR.space API key.

Is n8n free to use for this Telegram receipt logging workflow?

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 OCR.space usage (the API key is free on their free tier) and any optional AI parsing you add later.

Where can I host n8n to run this automation?

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.

How do I adapt this Telegram receipt logging solution to my specific challenges?

You can keep the Telegram trigger and OCR API call as-is, then adjust the parsing in your Function node so it matches your receipt styles. Many people add a simple “Category” rule set (fuel, meals, software) and a fallback when the total isn’t confidently detected. If you want manual entry too, route text commands through a Switch node and send those straight to Google Sheets. You can also replace OCR.space with another OCR provider later by swapping the HTTP Request node’s endpoint and payload.

Why is my Telegram connection failing in this workflow?

Usually it’s the bot token. Update the Telegram credentials in n8n, then send a fresh test message to confirm the trigger fires. If the trigger works but images fail, it can be permissions or an invalid file fetch step, so check the “Fetch Telegram Image” node output for a file URL and status code. Rate limiting is rare at small volumes, but it can happen if you spam tests back-to-back.

What’s the capacity of this Telegram receipt logging solution?

For most small teams, it’s effectively “as many receipts as you can send.” On n8n Cloud, capacity depends on your monthly execution limit, and each receipt usually counts as one run. If you self-host, there’s no execution cap, so the practical limit becomes your server and OCR response time. In normal use, processing a receipt is quick, but plan for occasional slow OCR responses during peak times.

Is this Telegram receipt logging automation better than using Zapier or Make?

Sometimes. If you just want “photo comes in, row gets created,” Zapier or Make can be fine. But OCR flows get messy because you need file fetching, conditional logic (no photo), and occasional parsing tweaks, and that’s where n8n tends to feel more flexible. Self-hosting is also a big deal if you don’t want every extra step to raise your bill. If you’re unsure, Talk to an automation expert and you’ll get a straight recommendation based on your volume and tools.

Once receipt logging becomes a quick Telegram habit, your spreadsheet stops being a chore and starts being reliable. The workflow does the repetitive part so you can move on.

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.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal