How to Sell Paid Access to a Private Telegram Channel
Practice4 minInnovialabs editorial team
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 subscription | Own bot + Payme/Click | Third-party service | |
|---|---|---|---|
| Payment method | Stars | Local cards via provider | Depends on the service |
| Renewal | Automatic | Reminders and a new payment | Handled by the service |
| Removing expired members | Automatic | Your bot does it | Handled by the service |
| Development | None | Required | Setup only |
| Plans, trials, promo codes | Fixed monthly period | Anything you build | Whatever the service offers |
| Subscriber data | Minimal | Fully yours | Stored by the service |
Stars subscription links
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:
- The user opens the bot and picks a plan.
- The bot creates an order and sends an invoice through Telegram Payments or a link to the provider's payment page.
- Payment is confirmed by a
successful_paymentupdate or by the provider's callback to your backend. Never grant access on an "I paid" button. - The bot creates a personal invite link with
createChatInviteLinkandcreates_join_request=true. - When the user taps the link, the bot receives a
chat_join_requestupdate, checks that this user ID has an active subscription and callsapproveChatJoinRequest, otherwisedeclineChatJoinRequest. - The subscription record gets an
expires_atdate.
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, thenunbanChatMemberwithonly_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.