Skip to content
Innovialabs

How to Sell Paid Access to a Private Telegram Channel

Practice4 min

In short

The simplest option is a Stars subscription link, where Telegram handles payment, renewal and removal; for local cards you need a bot that issues personal invite links, approves join requests and removes members when access expires.

Three ways to sell access

There are three working setups:

  • Stars subscription link. Telegram itself charges a monthly fee in Stars, renews it and removes people who stop paying.
  • Your own payment bot with local providers such as Payme or Click. The bot takes the payment, lets the user in and removes them when the paid period ends.
  • A third-party service that runs such a bot for you as a ready product.
Stars subscriptionOwn bot + Payme/ClickThird-party service
Payment methodStarsLocal cards via providerDepends on the service
RenewalAutomaticReminders and a new paymentHandled by the service
Removing expired membersAutomaticYour bot does itHandled by the service
DevelopmentNoneRequiredSetup only
Plans, trials, promo codesFixed monthly periodAnything you buildWhatever the service offers
Subscriber dataMinimalFully yoursStored by the service

A channel admin creates an invite link with a subscription and sets the monthly price in Stars. Via the Bot API the same is done with createChatSubscriptionInviteLink, where the period is fixed at 30 days.

Pros: no code, no payment provider contract, renewal and removal happen without you. Cons: users must buy Stars first, which is an extra step for an audience used to local cards; pricing options are limited; the way you receive the money depends on Telegram's current withdrawal conditions, so read them before launch.

A payment bot with Payme or Click

The full flow looks like this:

  1. The user opens the bot and picks a plan.
  2. The bot creates an order and sends an invoice through Telegram Payments or a link to the provider's payment page.
  3. Payment is confirmed by a successful_payment update or by the provider's callback to your backend. Never grant access on an "I paid" button.
  4. The bot creates a personal invite link with createChatInviteLink and creates_join_request=true.
  5. When the user taps the link, the bot receives a chat_join_request update, checks that this user ID has an active subscription and calls approveChatJoinRequest, otherwise declineChatJoinRequest.
  6. The subscription record gets an expires_at date.

Join requests are the key detail. Even if a link leaks, a stranger who taps it only creates a request, and the bot declines it because that person has not paid. Note that a link with join requests cannot also have a member limit; the approval step replaces it.

Before choosing card payments inside Telegram, read the current Bot Payments rules for digital goods and services, as well as your provider's terms: they define which payment methods are allowed for this kind of product.

Reminders, renewal and removal

A scheduled job (cron or a task queue) runs every day:

  • Reminders: a few days before expiry, the day before and on the last day, with a "Renew" button that starts a new payment. Automatic recurring card charges are only possible if your provider supports saved cards for recurring payments.
  • Grace period: decide whether a member keeps access for a short time after expiry.
  • Removal: call banChatMember, then unbanChatMember with only_if_banned=true. The first call removes the user, the second lets them rejoin after paying. Without the unban they stay blocked.

The job must be idempotent: it selects everyone whose expires_at has passed and is still in the channel. If the server was down yesterday, today's run catches up.

The bot needs admin rights in the channel with permissions to invite users via link and ban users. It can only message people who have started it, which is another reason to route all purchases through the bot.

Third-party services

They give a fast start without development. In exchange you pay a commission or fee, depend on their uptime and rules, and they hold your subscriber list. Check three things: which payment methods are supported, whether you can export subscribers, and what happens to access if you leave the service.

Common mistakes

  • Selling access through one public invite link that anyone can forward.
  • Removing a subscriber only from the database, but not from the channel.
  • Banning without unbanning, so returning customers cannot rejoin.
  • Comparing expiry dates in different time zones.
  • Forgetting users who left and came back while still paid up.

FAQ

They can send it, but with join request approval it is useless to others: the bot declines anyone without an active subscription.

We can help with this

If you'd rather get the result than figure it all out yourself — this is what we do every day.

Discuss a project

Read next

Have an idea or a task? Tell us about it

We'll reply within one business day and propose a solution. The consultation is free.