Features
Solutions
Who uses Directual and why?
What can be built on the platform?
What industries benefit from Directual?
Learn
Telegram Stars are Telegram’s currency for digital goods. How to buy Stars, accept them in a bot or Mini App via the Bot API (XTR) and withdraw via Fragment.

Telegram Stars are Telegram's built-in currency for digital goods and services: users buy them through Apple, Google, @PremiumBot or Fragment and spend them in bots, Mini Apps and channels. For developers, Stars are the only allowed way to sell digital goods inside Telegram; you accept them through the Bot API with the currency code XTR and withdraw earnings via Fragment at $0.013 per Star.
Below: what Stars are used for in 2026, how to buy them, what they are worth when you cash out, and how to accept Stars in a bot or Telegram Mini App, step by step, with and without code. Facts and limits were checked against Telegram's official docs in November 2026.
Stars launched in June 2024 so that bots and Mini Apps could sell digital products (e-books, courses, game items, AI requests, subscriptions) in a way that complies with Apple and Google in-app purchase rules. Physical goods still go through regular Telegram Payments with third-party providers; digital goods must be paid in Stars, as stated in the Bot Platform Developer Terms.
Since launch the list of things you can pay for with Stars has grown well beyond bot invoices:
Try it out: @directual_stars_bot is where you can give some tips to the Directual team. Below we show how this bot works on our platform.

Users top up their Star balance in three ways:
If a user doesn't have enough Stars when paying an invoice, Telegram offers to top up right in the payment screen. Prices depend on the platform and region, and Telegram can change them at any time; app stores add their own fees and conversion. Purchases of Stars are final: Telegram doesn't refund them, and Stars bought for personal use can't be sold or withdrawn. In some regions buying Stars is blocked.
Stars pricing at launch (June 2024):

Source: Telegram blog
Stars that a bot, Mini App or channel earns can be converted into rewards. The numbers below are from the Bot Platform Developer Terms and Telegram's API docs as of November 2026:
| What | Value |
|---|---|
| Reward on withdrawal | $0.013 per Star ($13 per 1,000 Stars) |
| Spent on Telegram Ads for your bot | $0.02 of ad credit per Star |
| Hold period | up to 21 days after Stars are received |
| Minimum withdrawal | 1,000 Stars (per Telegram's client config) |
| Where | Fragment, paid out to a TON wallet |
The withdrawal flow: open your bot's or channel's balance in Telegram, start a withdrawal, and Telegram opens a Fragment page where you enter a TON wallet address. TON's native token, Toncoin, was renamed Gram in June 2026, so wallets and exchanges may show either name.
Note the gap between the purchase price and the payout: users pay noticeably more per Star than the $0.013 the developer receives, because the difference covers app store fees and Telegram's margin. Spending Stars on Telegram Ads is the better rate if you plan to promote your bot anyway.
If you'd rather receive crypto directly without Stars, see our lesson on integrating TON payments into a Directual app. Keep in mind that for digital goods sold inside Telegram, Stars are mandatory.
Payments in Stars go through the standard Bot API payment methods. Here's the flow, per Telegram's Stars payment guide and the Bot API reference.
To get started, you need a Telegram bot. Create one using @BotFather if you haven't yet (our Telegram bot lesson walks you through it).
currency = XTR, provider_token = empty string, and prices with exactly one item (the amount in Stars).pre_checkout_query.successful_payment.telegram_payment_charge_id from SuccessfulPayment: you need it for refunds.Deliver only after successful_payment arrives; answering the pre-checkout query doesn't mean the money has moved.
sendInvoice posts an invoice with a photo, description and a Pay button. The start_parameter controls forwarding: with it, forwarded copies get a URL button back to the bot instead of a Pay button; without it, forwarded copies can be paid too.A Mini App gets an invoice link from your backend (createInvoiceLink) and opens it with Telegram.WebApp.openInvoice(url, callback). The callback and the invoiceClosed event return a status: paid, cancelled, failed or pending (Mini Apps docs). The bot still receives successful_payment, and that remains the signal to deliver.
subscription_period = 2592000 (30 days, currently the only allowed value) to createInvoiceLink; the price can't exceed 10,000 Stars. Cancel or resume renewal with editUserStarSubscription.refundStarPayment with the user ID and telegram_payment_charge_id returns the Stars in full.getMyStarBalance and getStarTransactions, which also show Fragment withdrawals.Before you launch a merchant bot:
/terms and make sure users accept them before buying./paysupport: the developer terms require every bot that takes payments to respond to it. Add a general /support too.A common pattern in 2026 is an AI assistant or agent living in a Telegram bot: the model costs you money on every request, so you charge for usage. Stars fit this well: sell request packs with one-off invoices, or a monthly plan via a Stars subscription, and keep each user's balance in your database. The payment logic stays the same as above; the bot just checks the balance before calling the model.
All of the above can be built without code on Directual. Assuming you've already created a bot and have its token (see the Telegram integration docs), here's how to connect it:
Use the Telegram step in "Professional mode" and call the method sendInvoice, specifying in the body: title, description, prices and currency = XTR (the code of Telegram Stars).


When a user pays, Telegram sends an update with the pre_checkout_query parameter. Catch it and respond by calling answerPreCheckoutQuery to approve the transaction. Then handle the successful_payment message to deliver the purchase.



Setup is described in the TMA plugin docs.
The plugin has two settings:

Auto log in. True logs users in automatically when they open the Mini App. False makes them click "Log in with Telegram". Use False if you also allow other login methods like email or Google.
Disable registration. True means users can't log in unless a matching WebUser ID already exists. False creates a WebUser ID automatically on first login.
If someone registered via the Mini App later wants to log in from a web browser, they'll need a username and password. You can generate a one-time password and send it through your Telegram bot.
If you don't have a bot yet, start in BotFather with the /newbot command. Then attach your Directual app to the bot as a web app with the /newapp command and follow BotFather's instructions.

That's it. When testing, remember that login triggers automatically when the user reaches the login page. To take Stars inside the Mini App, generate an invoice link in a scenario with createInvoiceLink and open it on the front end with Telegram.WebApp.openInvoice (a few lines of custom JS).
Want to talk about Telegram Stars, Mini Apps or bots on Directual? Join our communities; the links are below.
Cheers, happy building!