Example: a Telegram Subscription Bot (Membership, Gym, Paid Channel)
A payment-bot example for recurring revenue: monthly invoices or Stripe subscriptions, grace period on failed charge, revoke channel access, and a dunning message that is not a human in Direct.
A paid Telegram channel with a human checking who paid this month is not a subscription product. It is a part-time job. The example below is the job automated: status on the membership (trial, active, past_due, canceled), a charge or an invoice on a schedule, access in or out.
This shape fits a content club, a gym membership sold in chat, an ISP or OSBB monthly bill, a “pro” tier for a Mini App. It does not fit a one-time course - use the course example instead.
1. The membership path
Subscribe, renew, fail, cancel. If any of those four has no owner in code, a human will own it in Direct.
- Subscribe: pick a plan (monthly / quarterly), pay the first invoice or complete Stripe Checkout. On paid: add to the private channel or set Mini App entitlement.
- Renew: Stripe (or similar) charges the saved method. In Ukraine, saved cards via local acquiring are uneven - a monthly invoice in the bot is often more honest than pretending you have true recurring.
- past_due: keep access for a grace window (3-7 days), send a pay-again invoice, then kick. Silent kicks create chargebacks and angry screenshots.
- Cancel: user taps cancel, you stop the next invoice, access lasts until period end. Immediate lock is a choice you document, not a surprise.
2. Stars vs bank vs Stripe in this example
Recurring is a legal and product question, not a Telegram feature flag. Pick the rail that can actually charge again.
- Telegram Stars: possible for digital memberships inside Telegram. High commission, digital-goods rules, weak for a gym that must show a tax invoice. Fine for a small content club experiment.
- Ukraine bank acquiring: send a new invoice every period. Automate the send; do not automate a charge you cannot legally or technically repeat. Webhook still drives access.
- Stripe Billing: the right tool if your members pay international cards. Map customer + subscription ids to Telegram user id on day one or you will never match a failed invoice to a kick.
3. Access control is the product
I treat the private channel (or a Mini App gate) as the entitlement store. Ban chat member on cancel/expire. Do not rely on a “please leave” message. For a gym, the same flag can drive a turnstile webhook or a staff admin list for today. The bot is not a brochure; it is the lock.
Conclusion: recurring money needs a status machine, not a reminder human
If you already run a paid chat or a monthly service and the renewals live in your head, this example is the one to copy: plans, invoices or Stripe Billing, grace, kick, a short admin of who is past_due. I build that. Write via the form with the plan prices and whether members are in Ukraine or abroad - we will pick acquiring that can actually recur or honestly invoice every month.
Need this built, not just explained?
Telegram Mini App development: Next.js, payments, bots. Direct contractor.
Ready to discuss your project?
I'm a senior web engineer specializing in React and Next.js - available for freelance projects worldwide.
Location
Kyiv, Ukraine
Upwork
View ProfileTelegram
Contact meViber
Contact me