How to accept payments in Telegram

Telegram offers a built-in payment system that allows channel owners, bot developers, and business accounts to accept payments directly within the app. You can process transactions using the Telegram Payments API through integrated payment providers like Stripe, YooKassa, and others, or leverage Telegram Stars — the platform's internal currency — for digital goods and services.

How Telegram Payments Work

Telegram's payment infrastructure operates through two primary mechanisms: the Bot Payments API and Telegram Stars. Each serves different use cases and comes with distinct advantages.

Bot Payments API

The Bot Payments API allows you to create invoices and process credit card payments through third-party payment providers. When a user clicks "Pay," Telegram opens a native payment form — the transaction is handled securely without the user ever leaving the app.

Supported payment providers include:

  • Stripe — available in 40+ countries
  • YooKassa — popular in Russia and CIS
  • Sberbank — for Russian market
  • Tranzzo, LiqPay — for Ukraine
  • Razorpay — for India
  • Payme, Click — for Uzbekistan

Each provider has its own commission structure, typically ranging from 1.5% to 3.5% per transaction.

Telegram Stars

Introduced as Telegram's internal currency, Stars let users purchase digital goods, premium content, and subscriptions. Key advantages:

  • No need to integrate external payment providers
  • Works globally without regional restrictions
  • Users buy Stars through Apple Pay, Google Pay, or credit cards
  • Telegram takes a commission on Star purchases (aligned with app store policies)
  • Bot owners can withdraw Stars as TON cryptocurrency

Important: Telegram Stars are intended for digital goods and services only. Physical goods and services must use the Bot Payments API with traditional payment providers.

Setting Up Payments: Step-by-Step Guide

Step 1: Create a Bot via @BotFather

If you don't already have a bot, open @BotFather in Telegram and send /newbot. Follow the prompts to name your bot and receive your bot token.

Step 2: Connect a Payment Provider

Send /mybots to @BotFather, select your bot, then choose Payments. Select your preferred payment provider from the list. Each provider will walk you through its own verification process:

  • For Stripe: you'll need to provide business details, bank account information, and identity verification
  • For YooKassa: register at yookassa.ru and connect your shop ID
  • For Telegram Stars: no additional setup required — Stars are available by default

Step 3: Generate Payment Invoices

Use the sendInvoice or createInvoiceLink method in the Bot API to create payment requests. A basic invoice requires:

  • title — product or service name (e.g., "Premium Channel Access — 1 Month")
  • description — what the user is paying for
  • payload — internal identifier for your records
  • currency — ISO 4217 code (USD, EUR, RUB, XTR for Stars)
  • prices — array of price components
{
  "title": "Monthly Subscription",
  "description": "Access to exclusive trading signals for 30 days",
  "payload": "sub_monthly_user123",
  "provider_token": "YOUR_PROVIDER_TOKEN",
  "currency": "USD",
  "prices": [{"label": "Monthly Access", "amount": 999}]
}

Note that amount is specified in the smallest currency unit — 999 means $9.99.

Step 4: Handle Payment Confirmations

Your bot receives a pre_checkout_query before the payment is finalized. You must respond to this within 10 seconds using answerPreCheckoutQuery. After successful payment, you'll receive a successful_payment message containing transaction details.

Step 5: Deliver the Product

After confirming payment, your bot should automatically:

  • Grant access to the paid channel or content
  • Send a confirmation message with details
  • Store the transaction in your database for future reference

Payment Models for Telegram Channels

One-Time Access Fees

Charge a single fee for permanent access to your private channel. A tech news channel with 50,000 subscribers might offer a premium section at $4.99 for lifetime access. This model works best for static content libraries or archives.

Recurring Subscriptions

Monthly or annual subscriptions provide predictable revenue. For example, a crypto analytics channel could charge $19.99/month for daily trading signals. Use your bot to:

  1. Process the initial payment
  2. Track subscription expiration dates
  3. Send renewal reminders 3 days before expiry
  4. Automatically remove access for expired subscribers

Pay-Per-Content

Sell individual posts, reports, or media files. An investment research channel might sell individual stock analysis reports for $2.99 each. This model works well when your content varies significantly in value.

Tiered Access

Create multiple subscription levels:

  • Free tier — basic posts, market overview
  • Standard ($9.99/mo) — detailed analysis, weekly reports
  • Premium ($29.99/mo) — real-time alerts, personal consultations, exclusive community

Using Telegram Stars for Payments

Telegram Stars simplify monetization for digital goods. Here's how to implement them:

  1. Set provider_token to an empty string in your sendInvoice call
  2. Use XTR as the currency code
  3. Set prices in Stars (1 Star ≈ $0.02, though the rate fluctuates)
{
  "title": "Exclusive Post Pack",
  "description": "10 premium analysis posts",
  "payload": "pack_10_posts",
  "provider_token": "",
  "currency": "XTR",
  "prices": [{"label": "Post Pack", "amount": 250}]
}

Users pay 250 Stars (approximately $5), and you receive Stars that can be withdrawn or used within the Telegram ecosystem.

Star Withdrawals

Bot owners can convert earned Stars to TON (Telegram's associated cryptocurrency) through @Fragment. Minimum withdrawal thresholds apply, and Telegram retains a platform fee on withdrawals.

Automating Payments with Popular Frameworks

If you're building a payment bot from scratch, popular frameworks simplify development:

  • Python: python-telegram-bot, aiogram
  • Node.js: telegraf, grammY
  • Ruby: telegram-bot-ruby
  • PHP: nutgram

Most frameworks include built-in handlers for payment-related updates, making implementation straightforward.

Making Your Paid Content Discoverable

Accepting payments is only half the equation — potential subscribers need to find your channel. Publishing your channel content on the web through services like tgchannel.space creates an SEO-optimized web mirror that helps new audiences discover your content through search engines. Free preview posts on the web can funnel readers into your paid Telegram channel.

Tips & Best Practices

  • Start with Telegram Stars for simplicity. If you're new to monetization, Stars require zero payment provider setup and work globally out of the box.
  • Always send a receipt. After successful payment, send the user a detailed message confirming what they purchased, the amount charged, and how to access their content.
  • Offer a trial period. Let users access your premium channel for 3-7 days free. Conversion rates typically increase by 30-50% when users can sample content before committing.
  • Use inline keyboards for upselling. After delivering free content, add a button like "Unlock Full Report — $4.99" directly below the post.
  • Test with Stripe Test Mode. Before going live, use Stripe's test mode credentials to simulate transactions without real money. Use card number 4242 4242 4242 4242 with any future expiry date.
  • Set up refund handling. Implement a /refund command or contact mechanism. Telegram's API supports the refundStarPayment method for Star transactions.
  • Track metrics. Monitor conversion rates, average revenue per user (ARPU), and churn rate. A healthy subscription channel should aim for under 10% monthly churn.

Common Mistakes

Mistake 1: Not responding to pre_checkout_query in time
Why it's wrong: Telegram gives you only 10 seconds to respond. If your server is slow or the handler isn't implemented, the payment fails silently, and the user gets frustrated.
How to avoid: Implement a lightweight, fast-responding handler for pre_checkout_query. Do heavy validation asynchronously after confirming the checkout.

Mistake 2: Using Stars for physical goods
Why it's wrong: Telegram's Terms of Service restrict Stars to digital goods and services. Selling physical products with Stars can result in your bot being banned.
How to avoid: Use the Bot Payments API with a traditional provider (Stripe, YooKassa) for physical goods, shipping, or non-digital services.

Mistake 3: Not managing subscription expiration
Why it's wrong: Manually tracking who paid and when becomes impossible at scale. Users who haven't renewed still have access, while paying users sometimes get locked out due to errors.
How to avoid: Build a database-backed system that automatically tracks payment dates, sends renewal reminders, and revokes access upon expiration.

Mistake 4: Setting prices too low at launch
Why it's wrong: It's psychologically easier to lower prices than raise them. Starting at $1.99/month and later raising to $9.99 creates backlash among early subscribers.
How to avoid: Research competitors, start at a sustainable price point, and offer early-bird discounts as a separate promotional mechanism rather than a base price.

Mistake 5: Ignoring regional payment preferences
Why it's wrong: A channel targeting Russian-speaking audiences using only Stripe will lose customers who prefer YooKassa or bank card payments through Sberbank.
How to avoid: Connect multiple payment providers relevant to your audience's geography. You can configure several providers simultaneously in @BotFather.

Frequently Asked Questions

What is the minimum payment amount in Telegram?
The minimum depends on your payment provider. For Stripe, the minimum is typically $0.50 USD. For Telegram Stars, the minimum invoice is 1 Star. Most providers enforce their own floor to cover transaction processing costs.

Does Telegram take a commission on payments?
Telegram itself does not charge a commission on Bot Payments API transactions — the fees come from your chosen payment provider (typically 1.5%-3.5%). For Telegram Stars, the platform takes a share aligned with app store commission policies (up to 30% on iOS purchases of Stars).

Can I accept payments without a bot?
Not directly through Telegram's native system. You need a bot to use the Payments API or Stars. However, you can use third-party services like Patreon, Buy Me a Coffee, or direct bank transfers — but these require users to leave Telegram to complete the transaction.

How do I issue refunds?
For Bot Payments API transactions, refunds must be processed through your payment provider's dashboard (e.g., Stripe Dashboard). For Star payments, use the refundStarPayment Bot API method with the telegram_payment_charge_id from the original transaction.

Can I accept cryptocurrency payments in Telegram?
While Telegram doesn't natively support crypto payments through the Bot Payments API, you can integrate third-party crypto payment gateways (like CryptoPay bot or TON-based solutions) into your bot's workflow. TON (Toncoin) has particularly strong integration with the Telegram ecosystem through the @wallet bot.