GramBase Logo
GramBase
Back to Blog
#Guides #Monetization #Telegram #Stars

Telegram Stars Guide 2026: Fees, Withdrawals & Bot Payments

Kai | GramBase

Telegram Stars payment flow: Stars purchased via Apple Pay flow through Telegram to a creator's bot, then convert through Fragment to TON — with fee percentages at each step

Telegram Stars is the easiest way to accept payments inside Telegram — and the most expensive. If you’re a creator or bot developer considering Stars for monetization in 2026, this Telegram Stars guide gives you everything the official docs leave out: the actual fee math (32% lost on mobile, mostly Apple/Google’s cut), the 21-day withdrawal hold, bot integration steps, and a clear framework for when Stars makes sense versus when it doesn’t.

I’ve processed hundreds of Stars test transactions over the past 8 months while building payment infrastructure for Telegram creators. The official Telegram Stars documentation tells you how to set up Stars. This guide tells you what happens after setup: the real cost at every step, the withdrawal gotchas that catch new creators off guard, and the break-even math that determines whether Stars works for your specific use case.

What Are Telegram Stars?

Telegram Stars is Telegram’s native digital currency for in-app purchases. Users buy Stars with real money (via Apple Pay, Google Pay, or credit card), then spend them inside bots and Mini Apps to purchase digital goods, subscriptions, and services.

Think of Stars as Telegram’s version of V-Bucks or Robux — a platform-specific currency that bridges traditional payment methods and the Telegram ecosystem. The key difference: Stars is designed for creator commerce, not gaming. When I first integrated Stars into a test bot, the entire setup took under 5 minutes — genuinely the fastest payment integration I’ve ever done on any platform. The friction comes later, at the withdrawal stage.

Fragment is Telegram’s official Web3 marketplace where creators convert Stars to TON tokens for withdrawal. It also handles Telegram username auctions and premium number sales. Fragment is the only way to convert Stars back to real money — there is no direct bank withdrawal option.

How Stars Work End-to-End

  1. User buys Stars — through the Telegram app using Apple Pay, Google Pay, or card. Prices are set by Telegram (roughly $0.016 per Star, or ~$1.60-2.00 per 100 Stars depending on platform and region).
  2. User spends Stars — taps a “Pay with Stars” button in your bot or Mini App. Stars transfer from the user’s balance to yours instantly.
  3. Creator accumulates Stars — visible in your bot’s Stars balance (via BotFather or the Bot API). Creators receive 100% of Stars spent — Telegram takes no cut at this stage.
  4. Creator waits 21 days — Telegram enforces a 21-day holding period before Stars become withdrawable. This is the detail most guides skip.
  5. Creator withdraws via Fragment — converts Stars to TON (Telegram’s blockchain token) via Fragment. The earn value is roughly $0.013 per Star — less than the $0.016 users paid due to the Fragment market spread.
  6. Creator converts to cash — sells TON on a crypto exchange for USD, EUR, or local currency.

That six-step chain is simple on paper. The problem is what happens to your money at each step — and how long it takes to reach you.

The Complete Fee Breakdown

This is where most guides fail. They’ll say “Telegram doesn’t charge creators any commission” — which is technically true, but deeply misleading. Telegram doesn’t deduct from your Stars balance. The fees hit everywhere else in the chain: the buyer pays inflated prices (Apple/Google’s 30%), and you lose more during withdrawal (Fragment spread). The net result for creators is the same: significantly less money than the buyer intended to spend.

The Fee Chain

StepWhat happensFeeWho takes it
1. Star purchase (mobile)Apple/Google processes payment30%Apple / Google
1b. Star purchase (desktop)Telegram processes directly0% (or minimal)
2. Star transferUser pays creator’s bot0%
3. Stars → TON conversionVia Fragment.com~2-3% spreadFragment / market
4. TON → fiat conversionVia crypto exchange0.1-1%Exchange

What This Actually Costs You

Here’s the math that matters, broken down by product price. I’m using mobile purchases (where ~80% of Telegram activity happens) as the baseline:

Product PriceStars ReceivedAfter Apple/Google 30%After Fragment (~2.5% spread)After ExchangeYou KeepEffective Fee
$5~250 Stars$3.50~$3.41~$3.39~$3.39~32%
$10~500 Stars$7.00~$6.83~$6.79~$6.79~32%
$25~1,250 Stars$17.50~$17.06~$16.98~$16.98~32%
$50~2,500 Stars$35.00~$34.13~$33.96~$33.96~32%
$100~5,000 Stars$70.00~$68.25~$67.91~$67.91~32%

The headline number: you lose roughly 32% of every mobile Stars payment. The dominant cost is Apple/Google’s 30% cut on in-app purchases. Fragment’s conversion spread adds another ~2-3%, and the crypto exchange tacks on ~0.5%. The total varies slightly with TON volatility, but 32% is the realistic baseline for 2026.

The Desktop Exception

When users buy Stars on Telegram Desktop (macOS, Windows, Linux) or through Telegram Web, Apple and Google don’t get their 30% cut. In this scenario, the fee chain drops dramatically:

StepDesktop Fee
Star purchase~0% (no app store)
Fragment conversion~2-3% spread
Exchange~0.1-1%
Total~3-4%

The catch: you can’t control where your users open Telegram. In my testing across several creator communities, roughly 80% of Star purchases come from mobile. You can encourage desktop purchases, but you can’t force them. Plan your economics around the mobile rate.

How Stars Fees Compare

Payment methodEffective feeYou keep (per $100)
Telegram Stars (mobile)~32%~$68
Telegram Stars (desktop)~3%~$97
Custodial bots (avg.)~12-15%~$85-88
Stripe (via Bot API)~3.2%~$96.80
USDT/USDC non-custodial~2.5%~$97.50

Telegram payment fee comparison: Stars mobile keeps 68%, Stars desktop 97%, custodial bots 85-88%, Stripe 96.80%, non-custodial USDT/USDC 97.50% — per $100 received

Notice something interesting: Stars on desktop (~3%) is nearly as cheap as USDT/USDC (~2.5%). The problem is you can’t control where your users open Telegram — and ~80% of purchases come from mobile.

At $50/month subscriptions with 100 members, the difference between Stars (mobile) and USDT/USDC is $1,475/month — $17,700/year evaporating to fees.

This fee gap is why most serious Telegram creators use Stars only for micro-purchases and handle core revenue through USDT/USDC. With GramBase, for example, you accept USDT/USDC directly to your wallet at 2.5% per transaction — instant settlement, no Fragment, no 21-day hold. Stars and USDT/USDC aren’t mutually exclusive; the question is which one handles which price tier.

How to Withdraw Telegram Stars

Withdrawing Stars isn’t like withdrawing from PayPal. There’s no “send to bank account” button. Here’s the actual process.

Step-by-Step Withdrawal

  1. Open Fragment.com — Telegram’s official marketplace for Stars, TON, and usernames.
  2. Connect your Telegram account — Fragment uses Telegram login. Your Stars balance appears automatically.
  3. Sell Stars for TON — Fragment runs an exchange where you sell Stars and receive TON tokens. The exchange rate fluctuates based on supply/demand.
  4. Transfer TON to an exchange — Send your TON from Fragment to a crypto exchange (like OKX, Bybit, or KuCoin) where you can sell it.
  5. Sell TON for fiat — Convert TON to USD, EUR, or your local currency. Withdraw to your bank account.

Withdrawal Rules and Limitations

  • 21-day holding period: This is the rule most creators don’t learn about until they try to withdraw. After receiving a Stars payment, you must wait 21 days before those Stars become eligible for withdrawal via Fragment. I ran into this on my first real test — sold a product, went to Fragment the next day, and the Stars simply weren’t available. For creators accustomed to instant USDT/USDC settlements, this is a significant cash flow constraint.
  • Minimum withdrawal: 1,000 Stars (~$13 USD at current rates). If your bot earns small, irregular amounts, it may take weeks or months to hit the withdrawal threshold — on top of the 21-day hold.
  • Processing time: Once the holding period clears, Stars-to-TON conversion on Fragment is usually instant. TON-to-fiat depends on your exchange (minutes to hours). Bank withdrawal depends on your bank (1-5 business days).
  • No direct fiat option: You cannot convert Stars directly to dollars or euros. The path is always Stars → TON → fiat. This adds friction and conversion costs.
  • Fragment spread: Fragment doesn’t charge an explicit “fee,” but the buy/sell spread on the Stars/TON market functions as one. Under normal conditions the spread sits around 2-3%, but during TON price drops or low-liquidity periods, I’ve seen it widen to 5-8% as sellers flood the market.
  • Tax note: In most jurisdictions, Stars-to-TON conversion is a taxable event (crypto acquisition), and TON-to-fiat is another (crypto disposal). Consult a tax professional — this is not tax advice, but ignoring crypto tax obligations is a common and costly mistake among Telegram creators.

Withdrawal Timeline (Realistic)

StepTime
Payment received → eligible for withdrawal21 days (mandatory hold)
Stars → TON (Fragment)Minutes
TON → Exchange5-15 minutes
TON → USD/EUR (exchange)Minutes
Exchange → Bank1-5 business days
Total22-27 days

That 22-27 day total is the realistic timeline from earning Stars to having cash in your bank. Compare this to non-custodial USDT/USDC, where funds arrive in your wallet in seconds and you can off-ramp to fiat the same day — no holding period, no intermediate conversion, no Fragment dependency.

How to Accept Stars Payments in Your Bot

If you’ve decided Stars makes sense for your use case (see the decision matrix below), here’s how to implement it. This section is for bot developers — if you’re a non-technical creator, skip to “Stars Without Coding” below.

Prerequisites

  • A Telegram Bot (created via @BotFather)
  • Payments enabled in your bot (BotFather → /mybots → your bot → Payments)
  • Bot API access (via polling or webhook)

Implementation Flow

1. Create an invoice with Star pricing:

import os
import requests

BOT_TOKEN = os.environ["TELEGRAM_BOT_TOKEN"]
USER_ID = 123456789

response = requests.post(
    f"https://api.telegram.org/bot{BOT_TOKEN}/sendInvoice",
    json={
        "chat_id": USER_ID,
        "title": "Premium Access - 1 Month",
        "description": "30 days of premium channel access",
        "payload": "premium_sub_user123_apr2026",
        "provider_token": "",
        "currency": "XTR",  # XTR = Telegram Stars
        "prices": [
            {
                "label": "Premium Access",
                "amount": 500,  # 500 Stars
            }
        ],
    },
    timeout=10,
)
response.raise_for_status()

The key is currency: "XTR" — this tells Telegram to use Stars instead of fiat currencies. For Stars invoices, provider_token is an empty string. The payload is your internal reference (not shown to the user) for tracking which product and user this payment belongs to.

2. Handle the pre-checkout query:

A pre-checkout query is a callback Telegram sends to your bot the instant a user taps “Pay.” Your bot has exactly 10 seconds to validate the purchase (check inventory, verify the user isn’t already subscribed, etc.) and respond with answerPreCheckoutQuery. If you miss the 10-second window, the payment fails silently — the user sees an error with no explanation. This was the first bug I hit in testing: my validation logic made a slow database call, exceeded the timeout, and payments just… stopped working.

import requests


def answer_pre_checkout_query(bot_token: str, query: dict) -> None:
    payload = query.get("invoice_payload")

    if payload != "premium_sub_user123_apr2026":
        requests.post(
            f"https://api.telegram.org/bot{bot_token}/answerPreCheckoutQuery",
            json={
                "pre_checkout_query_id": query["id"],
                "ok": False,
                "error_message": "This invoice is no longer available.",
            },
            timeout=5,
        ).raise_for_status()
        return

    requests.post(
        f"https://api.telegram.org/bot{bot_token}/answerPreCheckoutQuery",
        json={
            "pre_checkout_query_id": query["id"],
            "ok": True,
        },
        timeout=5,
    ).raise_for_status()

Keep your validation logic fast — no external API calls, no slow database queries. Respond synchronously with a simple check, then handle the heavy logic after the successful payment lands.

3. Process the successful payment:

After the user confirms, Telegram sends a successful_payment message to your bot. In a Python webhook handler, the core logic looks like this:

def handle_update(update: dict) -> None:
    message = update.get("message", {})
    payment = message.get("successful_payment")
    if not payment:
        return

    if payment["currency"] != "XTR":
        return

    telegram_user_id = message["from"]["id"]
    payload = payment["invoice_payload"]
    stars_paid = payment["total_amount"]
    charge_id = payment["telegram_payment_charge_id"]

    if payload == "premium_sub_user123_apr2026" and stars_paid == 500:
        grant_premium_access(
            telegram_user_id=telegram_user_id,
            charge_id=charge_id,
            duration_days=30,
        )


def grant_premium_access(
    telegram_user_id: int,
    charge_id: str,
    duration_days: int,
) -> None:
    # Save the payment, extend access, and send the invite link here.
    print(
        f"Granting {duration_days} days to {telegram_user_id}; "
        f"Telegram charge id: {charge_id}"
    )

At this point: grant access, send the invite link, deliver the digital product — whatever your fulfillment logic requires.

4. Handle refunds (required by Telegram):

Telegram requires bot developers to handle refund requests. Use refundStarPayment to refund Stars to the user:

import requests


def refund_star_payment(
    bot_token: str,
    telegram_user_id: int,
    telegram_payment_charge_id: str,
) -> None:
    response = requests.post(
        f"https://api.telegram.org/bot{bot_token}/refundStarPayment",
        json={
            "user_id": telegram_user_id,
            "telegram_payment_charge_id": telegram_payment_charge_id,
        },
        timeout=10,
    )
    response.raise_for_status()

Refunded Stars go back to the user’s balance. This is a Telegram policy requirement — bots that don’t handle refunds properly risk being restricted.

Testing Stars Payments

Use Telegram’s test environment or a small Star amount for testing. Star payments are real transactions — there’s no “sandbox mode” like Stripe’s test cards. I recommend testing with 1-Star products first and refunding immediately.

Stars Without Coding

If you’re not a developer, platforms handle the integration for you. Telegram Stars is supported by several bot platforms. For a broader comparison of payment tools, see the best Telegram payment bots in 2026 — that article compares Stars-based bots, custodial options, and non-custodial solutions side by side.

Stars vs USDT/USDC: The Decision Matrix

This is the question I get asked most: “Should I use Stars or crypto?” The answer isn’t about which is “better” — it’s about which fits your specific situation.

Use Stars When:

  • Your audience isn’t crypto-native. If your buyers don’t have USDT/USDC wallets and won’t set one up, Stars meets them where they are (Apple Pay, Google Pay, cards).
  • Your prices are under $5. At small amounts, the absolute dollar loss to fees is tolerable, and Stars’ zero-friction experience maximizes conversion.
  • You sell one-time micro-purchases. Stickers, emoji packs, individual tips, small digital items. Low price + high volume + zero friction = Stars territory.
  • You’re testing a new product. Stars lets you validate demand before building out a full payment pipeline.

Use USDT/USDC When:

  • Your prices are above $10. At $10+, the fee gap between Stars (~32% on mobile) and USDT/USDC (~2.5%) becomes significant. At $50/month, it’s the difference between keeping $34 and keeping $49 per subscriber.
  • You sell subscriptions. Recurring revenue amplifies the fee difference. 100 subscribers x $14.75/month lost to Stars fees = $17,700/year in unnecessary costs.
  • Your community is crypto-comfortable. Trading signal groups, crypto education, DeFi communities — your audience already holds stablecoins.
  • You want instant access to funds. USDT/USDC arrives in your wallet immediately. No Fragment, no TON conversion, no 1-6 day wait.
  • You need predictable revenue. Stars → TON → fiat involves two volatile conversion steps. USDT/USDC is dollar-pegged — what buyers pay is what you get (minus minimal transaction fees).

A real example: A trading education channel I work with was using Stars for their $30/month subscription (about 1,500 Stars). With 85 paying members on mobile, they earned ~$2,550/month in Stars but only withdrew ~$1,734 after the full conversion chain — a 32% loss. After switching their subscription tier to USDT/USDC (keeping Stars only for their $3 individual chart packs), their effective take-home on subscriptions jumped to ~$2,486/month. Same members, same content, $752/month more in the creator’s pocket — $9,024/year recovered just by matching the payment method to the price point.

The Hybrid Approach

Some creators offer both. Stars for the casual, low-touch buyers who want maximum convenience, and USDT/USDC for the core community members making recurring payments. The logic:

Product TypeRecommended Payment
Stickers, emoji packsStars
One-time tips under $5Stars
Single digital product $5-20Either (test both)
Monthly subscriptionUSDT/USDC
Course or high-value product ($50+)USDT/USDC
Coaching / consultation bookingUSDT/USDC

The simplest way to run a hybrid setup: use GramBase for your USDT/USDC products (subscriptions, courses, premium access) and keep Stars enabled in your bot for micro-purchases (stickers, tips, one-off unlocks). GramBase handles the automation that Stars lacks — subscription tracking, access control, digital product delivery, auto-kick on expiry — while Stars handles the impulse buys that don’t justify a crypto wallet setup. You set your USDT/USDC wallet address once; GramBase watches the blockchain and triggers fulfillment the second payment confirms. No Fragment, no 21-day wait, no manual work.

The Limitations Telegram’s Docs Don’t Mention

Stars is a good product for Telegram’s goals (keep payments inside the platform, reduce friction for casual purchases). But Telegram’s documentation understandably focuses on the setup, not the trade-offs. Here’s what I’ve learned from actual usage:

1. No Native Recurring Payments

Stars doesn’t support automatic subscription renewals. A user pays once, gets access, and when the period expires, they need to manually pay again. This kills retention for subscription-based creators — every renewal is a manual decision point where subscribers can drop off.

Workaround: build custom renewal reminders in your bot, but you’re essentially rebuilding subscription infrastructure that other tools handle natively.

2. The Conversion Chain Is Fragile

Stars → TON → fiat involves two markets (Fragment and a crypto exchange). During periods of TON price volatility or low Fragment liquidity, the normally small Fragment spread (~2-3%) can widen significantly. Combined with Apple’s 30% on mobile, I’ve seen the total effective fee spike to 38-40% during TON dips, because the Stars/TON rate on Fragment lagged behind the TON/USD spot price. Your normal 32% fee suddenly becomes unpredictable.

3. Refund Obligation

Telegram requires bots to process refund requests. This is reasonable consumer protection, but it means you absorb the loss twice: you lose the Stars revenue AND you’ve already delivered the product. Stars refunds go back to the user’s Stars balance, not your bank account. Combined with the high fee rate, a refunded $50 Stars sale costs you the product plus whatever you spent on fulfillment.

Compare this to USDT/USDC: stablecoin payments are final. No chargebacks, no refund pressure from the platform. If you choose to refund, it’s your decision and your timeline.

4. Geographic and Platform Restrictions

Stars availability depends on the user’s region and app version. Users in some countries cannot purchase Stars at all — particularly regions where Apple Pay and Google Pay have limited presence (parts of Africa, Central Asia, and countries under international sanctions). Apple and Google’s in-app purchase policies can also change at any time — a policy shift could alter the fee structure overnight. You’re building your revenue on a platform that sits on top of two other platforms (iOS and Android) that could change the rules. USDT/USDC, by contrast, works anywhere with an internet connection and a crypto wallet.

5. No On-Chain Transparency

Stars transactions are internal to Telegram’s system. You can’t independently verify your balance or transaction history on a blockchain — you trust Telegram’s accounting completely. Unlike USDT/USDC transactions where every payment is verifiable on-chain via a block explorer (Tronscan, Etherscan), Stars exist purely inside Telegram’s database. For most small creators, this is fine. For anyone processing serious volume, the lack of independent verification is a risk factor worth considering.

For a deeper analysis of why payment architecture matters, see custodial vs non-custodial payments explained.

The Alternative: What USDT/USDC Gets Right

Every Stars limitation above — the 32% fee, the 21-day hold, no recurring payments, the conversion chain fragility, no on-chain transparency — has a straightforward counterpart in USDT/USDC:

Stars LimitationUSDT/USDC Reality
~32% effective fee (mobile)2.5% fee, capped at $20
21-day withdrawal holdInstant to your wallet
No auto-renewalNative subscription support via bots
Fragment conversion riskDollar-pegged, no conversion needed
No on-chain verificationEvery tx verifiable on Tronscan/Etherscan

The trade-off is real: your buyers need a crypto wallet with USDT or USDC. But if your audience is already on Telegram — especially in trading, crypto, or digital product communities — most of them already have one. Stablecoin adoption on Telegram is growing faster than any other payment method.

Tools like GramBase handle the full automation: payment verification on-chain, access control, digital product delivery, subscription management with auto-kick. You connect your wallet address, create your products, and share a link. Setup takes under 5 minutes, no coding required. The key difference from Stars: your money is in your wallet the second the buyer pays — no Fragment, no TON conversion, no waiting.

Frequently Asked Questions

How much does Telegram Stars cost?

Users pay roughly $1.70-2.00 per 100 Stars, depending on their region and platform. On mobile (iOS/Android), Apple or Google add a 30% markup that’s baked into the Star price. On desktop, Stars are cheaper because there’s no app store cut. As a creator, your effective cost is ~32% of the buyer’s total payment on mobile (dominated by Apple/Google’s 30%), and roughly 3-4% on desktop. For a $10 product, expect to keep approximately $6.79 (mobile) or $9.65 (desktop).

How do I withdraw Telegram Stars?

You withdraw Stars through Fragment.com, Telegram’s official Web3 marketplace. Connect your Telegram account, sell Stars for TON tokens, transfer TON to a crypto exchange (OKX, Bybit, KuCoin, etc.), and sell TON for your local currency. Important: Telegram enforces a 21-day holding period before Stars become withdrawable, plus 1-5 business days for the bank transfer. Realistically, expect 22-27 days from earning Stars to having cash in your bank. There is no direct Stars-to-bank-account option.

Can I use Telegram Stars for my bot?

Yes. Any Telegram bot can accept Stars payments using the Bot Payments API. Set currency: "XTR" in your sendInvoice call, and users will see a “Pay with Stars” button. You need to enable payments in your bot settings via BotFather first. No special approval is needed — Stars payments are available to all bots. For implementation details, see the Telegram Bot Payments API docs.

What is the Telegram Stars commission rate?

Telegram itself doesn’t explicitly charge a commission on Stars transactions between users and bots. However, the real cost comes from the purchase chain: Apple/Google take 30% when users buy Stars on mobile, and the Fragment Stars-to-TON conversion adds another ~2-3% in spread. The combined effective commission rate is approximately 32% on mobile purchases and 3-4% on desktop purchases. The mobile rate is dominated almost entirely by the app store cut — Fragment’s spread is relatively minor.

Are Telegram Stars better than USDT/USDC for creators?

It depends on your price point and audience. Stars wins on convenience for micro-purchases under $5 where your buyers don’t hold crypto. USDT/USDC wins on economics for everything above $10, especially recurring subscriptions, because fees drop from ~32% to ~2.5%. Most serious creators use USDT/USDC for their core revenue streams and reserve Stars for low-price impulse purchases. Non-custodial tools like GramBase let you accept USDT/USDC with full automation — no coding needed, 2.5% fee, instant settlement. For a full comparison of payment approaches, see our Telegram payments guide.

Is there a minimum withdrawal for Telegram Stars?

Yes. The current minimum withdrawal threshold is 1,000 Stars (approximately $13 USD). On top of that, Telegram enforces a 21-day holding period — Stars earned from a payment aren’t eligible for withdrawal until 21 days after the transaction. Combined, this means a new creator’s first Stars earnings won’t be accessible for at least 3 weeks, and only if they’ve earned enough to hit the 1,000-Star floor. USDT/USDC payments, by contrast, arrive in your wallet instantly with no holding period and no minimum threshold.


Stars is a tool. Like any tool, it works well for specific jobs and poorly for others. The mistake I see most often: creators defaulting to Stars because it’s the first option they encounter, then losing thousands in fees before they realize the economics don’t work for their price point.

If your average transaction is under $5 and your audience doesn’t hold crypto — use Stars. For everything else, set up USDT/USDC with GramBase and keep 97%+ of every transaction instead of 68%. Setup takes under 5 minutes, no coding required.


Questions? DM Kai (@KaiIsBuilding), founder of GramBase, on Telegram.

Related reading:

Recent Posts

View all

Start Selling on Telegram Today

One link to sell products and memberships. Checkout and delivery stay inside Telegram.

Start Selling