AutomationFlowsSlack & Telegram › Telegram Receipt to Google Sheets & Twilio SMS

Telegram Receipt to Google Sheets & Twilio SMS

Original n8n title: Billbot

BillBot. Uses telegram, telegramTrigger, httpRequest, googleSheets. Event-driven trigger; 6 nodes.

Event trigger★★★★☆ complexity6 nodesTelegramTelegram TriggerHTTP RequestGoogle SheetsTwilio
Slack & Telegram Trigger: Event Nodes: 6 Complexity: ★★★★☆ Added:

This workflow follows the Google Sheets → HTTP Request recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "200",
  "name": "BillBot",
  "nodes": [
    {
      "name": "Set relevant data",
      "type": "n8n-nodes-base.set",
      "position": [
        780,
        460
      ],
      "parameters": {
        "values": {
          "string": [
            {
              "name": "Category",
              "value": "={{$node[\"Parse details from receipt\"].json[\"predictions\"][0][\"category\"][\"value\"]}}"
            },
            {
              "name": "Date",
              "value": "={{$node[\"Parse details from receipt\"].json[\"predictions\"][0][\"date\"][\"iso\"]}}"
            },
            {
              "name": "Merchant",
              "value": "={{$node[\"Parse details from receipt\"].json[\"predictions\"][0][\"merchant\"][\"name\"]}}"
            },
            {
              "name": "Time",
              "value": "={{$node[\"Parse details from receipt\"].json[\"predictions\"][0][\"time\"][\"iso\"]}}"
            },
            {
              "name": "Amount",
              "value": "={{$node[\"Parse details from receipt\"].json[\"predictions\"][0][\"total\"][\"amount\"]}}"
            },
            {
              "name": "Currency",
              "value": "={{$node[\"Parse details from receipt\"].json[\"predictions\"][0][\"locale\"][\"currency\"]}}"
            },
            {
              "name": "Added by",
              "value": "={{$node[\"Get receipts from bot\"].json[\"message\"][\"chat\"][\"first_name\"]}} {{$node[\"Get receipts from bot\"].json[\"message\"][\"chat\"][\"last_name\"]}}"
            }
          ]
        },
        "options": {},
        "keepOnlySet": true
      },
      "typeVersion": 1
    },
    {
      "name": "Send confirmation",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1180,
        460
      ],
      "parameters": {
        "text": "=\u2705 Bill of {{$node[\"Set relevant data\"].json[\"Amount\"]}} {{$node[\"Set relevant data\"].json[\"Currency\"]}} from {{$node[\"Set relevant data\"].json[\"Merchant\"]}}, dated {{$node[\"Set relevant data\"].json[\"Date\"]}} at {{$node[\"Set relevant data\"].json[\"Time\"]}}. Category was {{$node[\"Set relevant data\"].json[\"Category\"]}}.",
        "chatId": "={{$node[\"Get receipts from bot\"].json[\"message\"][\"chat\"][\"id\"]}}",
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": "<your credential>"
      },
      "typeVersion": 1
    },
    {
      "name": "Get receipts from bot",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        380,
        460
      ],
      "parameters": {
        "updates": [
          "*"
        ],
        "additionalFields": {
          "download": true
        }
      },
      "credentials": {
        "telegramApi": "<your credential>"
      },
      "typeVersion": 1
    },
    {
      "name": "Parse details from receipt",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        580,
        460
      ],
      "parameters": {
        "url": "https://api.mindee.net/products/expense_receipts/v2/predict",
        "options": {
          "bodyContentType": "multipart-form-data"
        },
        "requestMethod": "POST",
        "authentication": "headerAuth",
        "jsonParameters": true,
        "sendBinaryData": true
      },
      "credentials": {
        "httpHeaderAuth": "<your credential>"
      },
      "typeVersion": 1
    },
    {
      "name": "Add to expense record",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        980,
        460
      ],
      "parameters": {
        "range": "A:G",
        "options": {},
        "sheetId": "",
        "operation": "append",
        "authentication": "oAuth2"
      },
      "credentials": {
        "googleSheetsOAuth2Api": "<your credential>"
      },
      "typeVersion": 1
    },
    {
      "name": "Send SMS notification",
      "type": "n8n-nodes-base.twilio",
      "position": [
        1380,
        460
      ],
      "parameters": {
        "to": "",
        "from": "",
        "message": "=A receipt worth {{$node[\"Set relevant data\"].json[\"Amount\"]}} {{$node[\"Set relevant data\"].json[\"Currency\"]}} was submitted by {{$node[\"Set relevant data\"].json[\"Added by\"]}} and has been added to the following spreadsheet:\nhttps://docs.google.com/spreadsheets/d/{{$node[\"Add to expense record\"].parameter[\"sheetId\"]}}/"
      },
      "credentials": {
        "twilioApi": "<your credential>"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Send confirmation": {
      "main": [
        [
          {
            "node": "Send SMS notification",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set relevant data": {
      "main": [
        [
          {
            "node": "Add to expense record",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add to expense record": {
      "main": [
        [
          {
            "node": "Send confirmation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get receipts from bot": {
      "main": [
        [
          {
            "node": "Parse details from receipt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse details from receipt": {
      "main": [
        [
          {
            "node": "Set relevant data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

BillBot. Uses telegram, telegramTrigger, httpRequest, googleSheets. Event-driven trigger; 6 nodes.

Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →

More Slack & Telegram workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Slack & Telegram

BillBot. Uses telegram, telegramTrigger, httpRequest, googleSheets. Event-driven trigger; 7 nodes.

Telegram, Telegram Trigger, HTTP Request +3
Slack & Telegram

This workflow provides a complete solution for handling Telegram Stars payments, invoicing and refunds using n8n. It automates the process of sending invoices, managing pre-checkout approvals, recordi

HTTP Request, Execute Workflow Trigger, Google Sheets +2
Slack & Telegram

clients kept booking meetings during my prayer times. i'd either miss a prayer or scramble to reschedule. the problem wasn't the clients — it was that my calendar had no blocked windows for salah. i n

Telegram Trigger, HTTP Request, Google Calendar +3
Slack & Telegram

Generate 360° product videos from a single photo using Google Veo 3 and Telegram

Telegram, Telegram Trigger, HTTP Request +1
Slack & Telegram

02b — Article callback. Uses telegramTrigger, googleSheets, telegram, httpRequest. Event-driven trigger; 30 nodes.

Telegram Trigger, Google Sheets, Telegram +1