AutomationFlowsSlack & Telegram › Monitor USDT Wallet Balance with Etherscan & Telegram

Monitor USDT Wallet Balance with Etherscan & Telegram

Original n8n title: Monitor Usdt Erc-20 Wallet Balance with Etherscan and Telegram Notifications

Monitor USDT ERC-20 Wallet Balance with Etherscan and Telegram Notifications. Uses telegram, stickyNote, httpRequest. Scheduled trigger; 8 nodes.

Cron / scheduled trigger★★★★☆ complexity8 nodesTelegramHTTP Request
Slack & Telegram Trigger: Cron / scheduled Nodes: 8 Complexity: ★★★★☆ Added:

This workflow follows the HTTP Request → Telegram 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": "AlEVIPHR3dMJkYWt",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Monitor USDT ERC-20 Wallet Balance with Etherscan and Telegram Notifications",
  "tags": [],
  "nodes": [
    {
      "id": "35b62ca1-3603-4dcb-a3b5-77e1325c78f7",
      "name": "Balance Changed?",
      "type": "n8n-nodes-base.if",
      "position": [
        -40,
        0
      ],
      "parameters": {
        "conditions": {
          "boolean": [
            {
              "value1": "={{$json.balanceChanged}}",
              "value2": true
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "dfeef0d5-0bb2-40a1-ae75-51d7caeb9c3d",
      "name": "Balance Changed.",
      "type": "n8n-nodes-base.telegram",
      "position": [
        320,
        -140
      ],
      "parameters": {
        "text": "=\ud83d\udea8 *USDT Balance Change!*\n\nWallet Address: {{ $json.walletAddress }}\n\n\ud83d\udd34 Previous Balance: {{parseFloat($json.previousBalance)/1e6}} USDT\n\n\ud83d\udfe2 New Balance: {{parseFloat($json.currentBalance)/1e6}} USDT",
        "chatId": "< Your Telegram Chat ID >",
        "additionalFields": {
          "parse_mode": "Markdown"
        }
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "ffebdb46-a6f0-4ed8-88ed-75ab427af969",
      "name": "Balance Not Changed.",
      "type": "n8n-nodes-base.telegram",
      "position": [
        320,
        20
      ],
      "parameters": {
        "text": "=Balance Unchanged. USDT balance remained stable.",
        "chatId": "< Your Telegram Chat ID >",
        "additionalFields": {
          "parse_mode": "Markdown"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "049ff717-ba10-4b7f-9f84-9eaaeee902ec",
      "name": "userData",
      "type": "n8n-nodes-base.set",
      "position": [
        -780,
        0
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "4455d1e7-a489-4ab6-a526-4fc755db99d0",
              "name": "Your Wallet Address",
              "type": "string",
              "value": "< Wallet Address Paste Here >"
            },
            {
              "id": "3d84deba-8093-42cf-833f-6891db778de7",
              "name": "Your Etherscan Api Key",
              "type": "string",
              "value": "< Etherscan Api Key Paste Here>"
            },
            {
              "id": "971ea723-e3de-4cff-b4e7-5899f3d8fb00",
              "name": "USDT ERC-20 Token Address",
              "type": "string",
              "value": "0xdAC17F958D2ee523a2206206994597C13D831ec7"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "0488f2dd-6b71-4be5-9ce8-cf0763b82990",
      "name": "balanceChecker",
      "type": "n8n-nodes-base.code",
      "position": [
        -280,
        0
      ],
      "parameters": {
        "jsCode": "const staticData = $getWorkflowStaticData('global');\n\nconst currentBalance = items[0].json.result;\n\nconst walletAddress = $('userData').first().json['Your Wallet Address']\n\nlet previousBalance = staticData.previousBalance;\n\nif (!previousBalance) {\n  staticData.previousBalance = currentBalance;\n  previousBalance = currentBalance;\n}\n\nconst balanceChanged = previousBalance !== currentBalance;\n\nstaticData.previousBalance = currentBalance;\n\nreturn [{json: {balanceChanged, previousBalance, currentBalance, walletAddress}}];"
      },
      "typeVersion": 2
    },
    {
      "id": "d7b23d5b-b4c5-4d9a-93f9-360ae0d539c7",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1040,
        -180
      ],
      "parameters": {
        "color": 4,
        "width": 1540,
        "height": 400,
        "content": "## USDT ERC-20 Wallet Balance Tracker\n**This workflow** Is a basic concept of integrating your ERC-20 wallet with n8n nodes."
      },
      "typeVersion": 1
    },
    {
      "id": "7c8f0d69-6c37-469c-b466-89a467db9bbd",
      "name": "Check Balance Every 5 Minutes",
      "type": "n8n-nodes-base.cron",
      "position": [
        -1000,
        0
      ],
      "parameters": {
        "triggerTimes": {
          "item": [
            {
              "mode": "everyX",
              "unit": "minutes",
              "value": 5
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "ea603f03-25e0-4c80-90f2-eb5f09e71ad1",
      "name": "Fetch USDT Balance from Etherscan",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -480,
        0
      ],
      "parameters": {
        "url": "https://api.etherscan.io/api",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "module",
              "value": "account"
            },
            {
              "name": "action",
              "value": "tokenbalance"
            },
            {
              "name": "address",
              "value": "={{ $json['Your Wallet Address'] }}"
            },
            {
              "name": "tag",
              "value": "latest"
            },
            {
              "name": "apikey",
              "value": "={{ $json['Your Etherscan Api Key'] }}"
            },
            {
              "name": "contractaddress",
              "value": "={{ $json['USDT ERC-20 Token Address'] }}"
            }
          ]
        }
      },
      "typeVersion": 3
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "7ebf18de-7adf-40dd-99b4-ff8dd1e37f08",
  "connections": {
    "userData": {
      "main": [
        [
          {
            "node": "Fetch USDT Balance from Etherscan",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "balanceChecker": {
      "main": [
        [
          {
            "node": "Balance Changed?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Balance Changed.": {
      "main": [
        []
      ]
    },
    "Balance Changed?": {
      "main": [
        [
          {
            "node": "Balance Changed.",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Balance Not Changed.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Balance Every 5 Minutes": {
      "main": [
        [
          {
            "node": "userData",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch USDT Balance from Etherscan": {
      "main": [
        [
          {
            "node": "balanceChecker",
            "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

Monitor USDT ERC-20 Wallet Balance with Etherscan and Telegram Notifications. Uses telegram, stickyNote, httpRequest. Scheduled trigger; 8 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

. Uses googleSheets, telegram, httpRequest, wise. Scheduled trigger; 36 nodes.

Google Sheets, Telegram, HTTP Request +2
Slack & Telegram

GNCA AI News Pipeline. Uses rssFeedRead, httpRequest, telegram, errorTrigger. Scheduled trigger; 31 nodes.

RSS Feed Read, HTTP Request, Telegram +1
Slack & Telegram

GNCA AI News Pipeline. Uses rssFeedRead, httpRequest, telegram, errorTrigger. Scheduled trigger; 29 nodes.

RSS Feed Read, HTTP Request, Telegram +1
Slack & Telegram

This workflow automates plant care reminders and records using Google Sheets, Telegram, and OpenWeather API.

Google Sheets, HTTP Request, Telegram
Slack & Telegram

Apollo Data Enrichment Using Company Id to automatically finds contacts for companies listed in your Google Sheet, enriches each person with emails and phone numbers via Apollo’s API, and writes verif

Google Sheets, HTTP Request, Error Trigger +1