How to Accept Crypto Payments in a Telegram Bot (USDT Step by Step)

Telegram bots and paid communities live on instant delivery. Here is how to wire a crypto payment gateway into your bot so users pay in USDT and get access automatically.

Updated: 5 min read
Accept crypto payments in a Telegram bot: chat with a Pay in USDT button and confirmation message

To accept crypto payments in a Telegram bot, have your bot's backend create an invoice through a crypto payment gateway API when a user taps "Buy", send the returned checkout link as an inline button, and listen for the gateway's signed webhook. When the payment is confirmed, the bot delivers the product, key or channel invite automatically.

Telegram bots and paid communities are among the most natural fits for crypto checkout: users are international, many already hold USDT, and they expect delivery in seconds. This guide shows the architecture, the message flow and the details that keep it reliable.

Why crypto works so well for Telegram bots

  • Global audience: bot users come from everywhere; a single USDT price works for all of them.
  • Mobile-first payment: the hosted checkout opens inside Telegram's browser, and a wallet app can scan the QR code or copy the address.
  • Instant automation: a signed webhook lets the bot deliver without anyone checking a block explorer.
  • Fast networks: on TRON and BNB Smart Chain, payments usually confirm in about a minute.

Telegram bots and paid communities are one of the core use cases mistKET is built for, alongside SaaS, hosting and digital goods.

Architecture: three components

ComponentRole
Telegram bot (via the Bot API)Talks to the user: menus, buttons, delivery messages
Your backendStores orders, calls the gateway API, receives webhooks, holds secrets
mistKET gatewayHosted checkout, chain monitoring, confirmations, settlement

Whatever framework you use, the pattern to accept crypto payments in a Telegram bot is the same. The bot and backend are usually the same small service. What matters is that API and webhook secrets live on the server — never inside messages or client-side code. Telegram's own documentation for bots is at core.telegram.org.

Step by step: accept crypto payments in a Telegram bot

  1. User picks a product — e.g. "1-month access" via an inline keyboard. Your backend creates an order with the Telegram user ID.
  2. Backend creates an invoice — one signed POST /api/v1/invoices with amount, currency, your order ID and a callback URL.
  3. Bot sends a pay button — an inline URL button pointing to the returned checkout_url, plus a short note: "Send the exact amount on the network you choose."
  4. User pays — on the hosted page they choose USDT on TRON, BSC, Ethereum or Arbitrum (or TRX, BNB, ETH) and pay from their wallet or exchange.
  5. Webhook arrives — after confirmations, your callback receives a signed invoice.confirmed event containing your order ID.
  6. Bot delivers — verify the signature, mark the order paid, then send the licence key, file or a one-time channel invite link to the user's chat.
Key takeaway: map every invoice to a Telegram user ID through your order ID. When the webhook arrives, you know exactly whom to message.

A minimal data model

You do not need a complex database to run a paid bot. Three tables cover most cases:

TableKey fieldsPurpose
userstelegram_id, username, access_untilWho has access and until when
ordersorder_id, telegram_id, product, amount, statusOne row per purchase attempt
invoicesorder_id, invoice_uuid, checkout_url, network, paid_amountLink between your order and the gateway invoice

When the webhook arrives, look up the order by order_id, check that it is not already delivered, update the status and message the user by telegram_id. That is the entire delivery loop.

Example message copy

Clear wording inside the chat reduces support questions. A sequence that works well:

  • Invoice message: "Your order: 1-month access, 15 USD. Tap Pay to open the secure payment page. Send the exact amount on the network you choose."
  • Paid: "Payment detected. Waiting for network confirmations — this usually takes a minute or two."
  • Confirmed: "Payment confirmed. Here is your invite link — it works once."
  • Underpaid: "We received less than the invoice amount. Open the same payment page to send the remaining amount."
  • Expired: "This invoice has expired. Tap below for a new one."

Support without screenshots

When a user asks about a payment, ask only for their order number. Opening the invoice in the merchant dashboard shows the expected amount, the received amount, the network and the transaction hash, so you never need screenshots or wallet addresses from the user. A "Support" button in the bot can pass the order number along automatically, which turns most payment questions into a ten-second lookup instead of a long conversation.

Good UX patterns inside the chat

  • Send status updates. On invoice.paid, reply "Payment seen, waiting for confirmations"; on invoice.confirmed, deliver.
  • Show the price in dollars and let the gateway convert. The rate is locked for the invoice lifetime.
  • Explain the countdown once, so users do not panic when they see a timer.
  • Offer a "Check status" button that queries the invoice through the API — useful if a user returns later.
  • Handle short payments politely. On invoice.underpaid, tell the user how much is missing; partial payments add up to the total.
  • Handle expiry. On invoice.expired, offer a fresh invoice with one tap.

Subscriptions and paid communities

For monthly access, create a new invoice when each period ends and send it as a renewal message a few days in advance. When invoice.confirmed arrives, extend the user's access date in your database. If no payment arrives before the period ends, remove access. Crypto transfers are pushed by the payer, so renewals are always an invoice the user pays — there is no automatic card-style debit.

Tip: generate single-use invite links for private channels after payment, rather than sharing one permanent link. It keeps your paid community actually paid.

Reliability checklist

  • Idempotency: webhooks are retried with back-off for hours, so the same event may arrive twice. Check whether the order is already delivered before sending anything.
  • Signature checks: verify X-Mistket-Signature (HMAC-SHA256 of timestamp and raw body with your webhook secret) before trusting any event.
  • Do not trust chat messages as proof. A user saying "I paid" or sending a screenshot is never a substitute for the webhook.
  • IP allow-list: restrict API access to your bot server in the merchant panel.
  • Logs: the dashboard shows webhook delivery logs, expected vs. received amounts and transaction hashes for support cases.

For full code samples of signing and verification, see crypto payment API integration.

If you run a small paid group manually, you can create invoices in the merchant panel and send the link in a private message. Once you confirm payment in the dashboard, add the member by hand. It does not scale, but it lets you validate pricing before building a bot. See crypto payment links and invoices.

Play by the rules: sell only legitimate goods and services, follow Telegram's terms for bots and channels, and check your local tax and regulatory obligations for crypto income. A payment gateway is infrastructure — it does not change what you are allowed to sell.

Get started

Ready to accept crypto payments in a Telegram bot of your own? Apply as a merchant via Telegram @mistnetwork with your bot or community link and expected volume. Once approved, you receive API keys the same day. Review the request and webhook samples in the developer section and manage your keys from the merchant login.

Frequently asked questions

Can a Telegram bot accept USDT payments?
Yes. The bot's backend creates an invoice through a gateway API, sends the checkout link as a button, and delivers automatically when a signed webhook confirms the payment.
Does the user leave Telegram to pay?
The hosted checkout opens in Telegram's in-app browser. The user pays from their wallet app or exchange and returns to the chat for delivery.
How does the bot know who paid?
Store the Telegram user ID with your order ID and pass the order ID when creating the invoice. The webhook includes the order ID, so you know whom to message.
Can I run crypto subscriptions for a paid Telegram channel?
Yes, by issuing a renewal invoice each period and extending access when invoice.confirmed arrives. Crypto has no automatic debit, so the user pays each renewal.
Which networks are best for bot payments?
TRON (TRC-20) and BNB Smart Chain (BEP-20) are usually cheapest and confirm in about a minute. mistKET also supports USDT on Ethereum and Arbitrum.

Related articles