Telegram Stars for Bot Developers — Monetize Your Mini App (2026 Guide)

📅 2026-09-06 · 🔄 Updated: 23 October 2026 · ✍️ warungstar Team · Order via bot →

telegram stars
📷 Photo by Christian Wiediger on Unsplash

What Telegram Stars Are, From a Builder's Point of View

Telegram Stars are the in-app currency that lets a bot or a Mini App charge for something digital without you setting up a card acquirer, a merchant account, or a legal entity in the buyer's country. From your side of the screen it looks like an invoice. You name a price in Stars, Telegram draws its own payment sheet, the user confirms with a payment method they already have, and your bot receives a payment update it can act on.

Two properties of that arrangement shape every decision you make afterwards. The first is that Stars are not your money yet — they sit with Telegram until you withdraw, so your revenue is real but not spendable. The second is that you price in Stars, not in rupiah. Your revenue per sale is fixed in Stars, while what a Star is worth in local money moves with the exchange rate.

How a Stars Payment Moves Through Your Bot

The mechanics are ordinary Bot API payments with a different currency code. If you have shipped an invoice bot before, the flow will look familiar.

  1. Create the invoice. Call the Bot API invoice method with currency XTR — the code Telegram uses for Stars — and a price expressed in whole Stars. Fractional prices do not exist here.
  2. Let Telegram draw the sheet. The user sees the Star amount and confirms inside the app. You never touch card data and you do not need a payment provider of your own.
  3. Answer the pre-checkout update. Telegram asks your bot whether the order should go ahead. Reply quickly, and validate the same things you would validate in any shop: is the item still for sale, is this user allowed to buy it, is the price still the price.
  4. Receive the successful-payment update. It carries a charge identifier. Write that string to your database before you do anything else. It is your receipt, your refund key, and the only thing that will settle an argument with a user three weeks from now.
  5. Grant the purchase idempotently. Turn the feature on, credit the internal balance, flip the order to paid. Do it in a way that running the same handler twice does not hand out the goods twice, because duplicate update delivery is normal, not exceptional.

What Actually Sells Inside a Bot or Mini App

Four patterns cover most of the money in this space. One-off unlocks are the simplest: the user pays once and a menu item, a file, or a section of your Mini App opens permanently. Consumables fit anything with a natural unit — extra attempts in a game, a fresh generation in an image tool, one more export. Cosmetics work when your product has any kind of identity layer: badges, themes, name styling. Gated content suits bots that publish something worth paying for, from private channels to structured data the user cannot get elsewhere.

What tends to flop is worth naming too. A single small action priced at 500⭐ asks the user to spend real money on something they cannot evaluate yet, and the sheet gets closed. Hiding the price until the last tap does the same thing more slowly. So does selling "support the project" with nothing concrete attached — Stars are a payment rail, not a donation jar with a receipt.

Digital Goods Only, and Other Rules That Bite

Stars are meant for digital goods and services delivered inside Telegram. Physical shipping, real-world services, and anything on Telegram's prohibited list are out of scope, and a bot that quietly drifts across that line loses the payment capability rather than a single order. Keep the description of what the Stars buy honest and specific, because refund requests and reports both begin with a user who did not understand the purchase.

Two smaller rules save a lot of pain. Do not ask for the user's phone number or login as part of fulfilment — the payment update already tells you who paid. And do not promise delivery times you cannot control; if your own fulfilment job is queued behind a rate limit, say so in the product text instead of letting the user guess.

The Money Side: Platform Fee and Withdrawal

Telegram keeps a platform fee before Stars reach you. The number most developers quote is around 30%, and it can vary by region and change over time, so treat any figure you read — including this one — as a starting assumption to confirm in the current terms. What matters for planning is the shape of it: your gross is denominated in Stars, the fee comes off the top, and what remains is what you can eventually withdraw.

Withdrawal is Telegram's process, not yours. Earned Stars convert to TON, subject to eligibility conditions and a minimum threshold, and the rate is whatever the market gives at that moment. Build your unit economics on the net figure rather than the gross and you will not be surprised by the first payout.

What a Star Costs in Rupiah

If your users think in rupiah — and in Indonesia most of them do — it helps to show the equivalent before they tap confirm. At the flat rate used by warungstar, one Star is Rp 288, and the same rate applies to any custom amount between 50 and 1,000 Stars.

StarsRupiah at Rp 288/⭐Typical use in a bot
13⭐Rp 4,320Smallest gift pack, useful for testing a gift flow
21⭐Rp 7,200Second gift pack, a common demo amount
50⭐Rp 14,400Entry-level unlock or a week of a small feature
100⭐Rp 28,800Mid-tier unlock, the most common test price
500⭐Rp 144,000Premium tier or a bundle of consumables
1,000⭐Rp 288,000Top package, lifetime unlock or a giveaway prize

Those numbers work in two directions. They tell a user what a 250⭐ unlock actually costs in money they recognise, and they give you a sanity check when a price feels either too cheap to cover the support load or too expensive for the audience you have.

Pricing Your Features Without Guessing

Start from the value of the thing, then convert. A permanent unlock that saves a user ten minutes a day can carry a much higher Star price than a consumable they will use once and forget. A consumable has to be cheap enough that a failed purchase is not a crisis, because some of those purchases will fail.

Change one variable at a time. Round numbers — 50, 100, 250, 500 — read better on the payment sheet than 347⭐, and the cleaner number also makes the rupiah equivalent easy for the user to hold in their head. Run a price for a week, look at how many sheets opened versus how many were confirmed, and only then move it. Two price changes at once teach you nothing.

Keep the price in one place in your code, ideally a table keyed by product id, and read it from there when you build the invoice. Hard-coded prices in three handlers is how a live bot ends up charging two different amounts for the same item.

Refunds, Charge IDs, and Support Load

The Bot API lets you refund a Star payment by charge id, which is the second reason to store that string the moment it arrives. Decide your policy before launch rather than during the first complaint: what counts as a bad purchase, who answers the message, and how fast. A refund you grant in ten minutes costs you one sale; a refund argument that runs for two days costs you the user as well.

Keep one table with charge id, user id, product id, Star amount, and timestamp. When someone writes "I paid and nothing happened", you can answer in one query instead of a conversation. If you fulfil through a queue or a worker, log the grant attempt too, so you can tell a delivery failure apart from a payment that never landed.

Common Mistakes Developers Make

A Test Plan Before You Ship

Run the whole loop on more than one client: Android, iOS, and the desktop app. Buy the cheapest item, confirm the goods arrive, then repeat the same update twice by hand and check that nothing is granted twice. Cancel a payment at the sheet and confirm your bot does not treat it as a sale. Refund one purchase and make sure access is actually removed. Finally, open the invoice from an account with a zero Star balance and see what the top-up prompt looks like, because that is the screen most of your new users will meet first.

Write down the answers. A launch checklist that lives in a text file beats a mental list, especially when you come back to the bot four months later to add a product.

Getting Test Stars Without a Foreign Card

You will want Stars on a test account long before you have revenue, and paying for them through an app store in another currency is a nuisance. warungstar sells Stars at a flat Rp 288 each, including the small gift packs at 13⭐ for Rp 4,320 and 21⭐ for Rp 7,200, which are the right size for a demo. Order through @warungstarbot, check the current list with /prices, pay by QRIS from DANA, OVO, GoPay, ShopeePay, or mobile banking, and the Stars usually land in one to five minutes. /orders and /status let you follow an order, /riwayat shows your history, and /contact reaches the team if something looks wrong.

FAQ — Frequently Asked Questions

Can a Telegram bot accept Stars?

Yes. Bots and Mini Apps can set Star prices for digital goods, and Telegram handles the checkout inside the app.

What does Telegram charge on Stars purchases?

A platform fee is taken before the Stars reach you. The figure most often quoted is around 30%, and it can change, so confirm it in the current terms.

Can I withdraw the Stars my bot earns?

Yes, through Telegram's withdrawal flow, which converts Stars to TON once you meet the eligibility conditions and the minimum threshold.

Do I need a company or a card processor?

No. Telegram bills the purchase itself, which is why the flow works for solo developers and small teams without a merchant account.

What happens if a payment update arrives twice?

Nothing, if your grant handler is idempotent. Key the grant on the charge id so a repeated update cannot deliver the same goods twice.

Buy Telegram Stars / Premium cheap — QRIS, instant delivery ⚡

Message @warungstarbot now · or see the price list on our website