DEV Community

Haskell Thurber
Haskell Thurber

Posted on

I Replaced Stripe With Telegram Stars — Here's What Happened to My Conversion Rate

TL;DR

I built a Mini App inside Telegram and used Telegram Stars for micropayments instead of traditional payment providers. The result: zero payment friction, working micropayments at $0.02, and a payment integration that's embarrassingly simple.


The Problem With Traditional Micropayments

I needed to charge users $0.02–$0.50 for individual actions in my app. If you've ever tried this with Stripe, you know the pain:

  • Minimum transaction fees eat your margin on anything under $1
  • Checkout abandonment — every redirect, every form field costs you 30%+ of users
  • PCI compliance — even with Stripe Elements, there's overhead
  • Account creation — users need to sign up, verify email, enter card details

For a social app where the entire experience should feel instant, this friction kills engagement.

Enter Telegram Stars

Telegram introduced Stars — a built-in micropayment currency for Mini Apps and bots. 1 Star ≈ $0.02. Users buy Stars through Apple/Google in-app purchases or directly through Telegram.

Here's what makes it different:

1. Zero Checkout Friction

Users tap "Pay 1 ⭐" → confirmation dialog → done. No card entry, no redirect, no account creation. The payment happens inside the same chat/app they're already using.

Traditional: Open app → See paywall → Redirect to checkout → 
Enter email → Enter card → Confirm → Wait → Return to app
(7 steps, ~60% dropout)

Stars: See paywall → Tap "Pay 1⭐" → Confirm → Done
(3 steps, ~5% dropout)
Enter fullscreen mode Exit fullscreen mode

2. Micropayments Actually Work

The minimum Stars payment is 1 Star ($0.02). Try charging $0.02 on Stripe — between the $0.30 fixed fee and 2.9% variable fee, you'd lose $0.28 per transaction.

With Stars, Telegram takes ~30% (similar to App Store), but there's no fixed fee. A 1-Star payment nets you ~$0.014. Small, but profitable.

3. The Integration Is Embarrassingly Simple

Here's the complete payment flow in Node.js with Telegraf:

// Step 1: Create an invoice link
const invoiceLink = await bot.telegram.createInvoiceLink({
  title: "'Unlock Message',"
  description: "'Read the full anonymous message',"
  payload: JSON.stringify({ userId: 42, messageId: 123 }),
  provider_token: '',  // Yes, empty string. That's it.
  currency: 'XTR',     // Stars currency code
  prices: [{ label: 'Unlock', amount: 1 }]  // 1 Star
});

// Step 2: Handle pre-checkout (validate the purchase)
bot.on('pre_checkout_query', async (ctx) => {
  await ctx.answerPreCheckoutQuery(true);
});

// Step 3: Handle successful payment
bot.on('successful_payment', async (ctx) => {
  const payload = JSON.parse(
    ctx.message.successful_payment.invoice_payload
  );
  await unlockMessage(payload.userId, payload.messageId);
  await ctx.reply('Message unlocked!');
});
Enter fullscreen mode Exit fullscreen mode

That's it. Three events. No webhook signing secrets, no idempotency keys, no retry logic. Compare this to a Stripe integration guide that spans multiple pages.

4. Built-in Refunds

// Refund a Stars payment
await bot.telegram.refundStarPayment(
  userId,           // Telegram user ID
  paymentChargeId   // From successful_payment event
);
Enter fullscreen mode Exit fullscreen mode

One function call. No disputes, no chargebacks, no evidence submission.

What I Built: WhisprMe

WhisprMe is an anonymous messaging app inside Telegram. You share a link, friends send you anonymous messages, and you unlock them with Stars.

Pricing tiers:

  • 1 Star — Read full message (see 3-word preview for free)
  • 5 Stars — Get a hint about the sender
  • 15 Stars/week — Plus subscription (unlimited reads)

Revenue streams (all Stars):

  1. Message unlocks
  2. Sender hints
  3. Plus/Pro subscriptions
  4. Virtual gifts (Hearts, Fire, Crowns)
  5. Referral commissions (15-25% of referred users' purchases)

The referral system uses Telegram's native Affiliate Program API, so payments to referrers happen automatically.

The Stack

The entire backend is ~2000 lines of JavaScript:

  • Runtime: Node.js + Express
  • Database: PostgreSQL (raw SQL, 6 tables)
  • Bot framework: Telegraf.js
  • Frontend: React (served as Telegram Mini App)
  • Process manager: PM2 cluster mode
  • Hosting: Single $5/month VPS

No Redis. No message queue. No microservices. The entire thing runs on one server and handles everything I need.

Key Lessons

Auth is free

Telegram Mini Apps provide initData — a signed payload with user info. Verify the HMAC signature server-side, and you have authenticated users without building any auth system.

Distribution is built in

Users share links inside Telegram chats. The sharing IS the product — you can't get anonymous messages without sharing your link. This creates a natural viral loop without any marketing spend.

Monetization ceiling exists

Stars are great for micropayments but limited for high-ticket items. The maximum single payment is 10,000 Stars (~$200). If your product needs $500+ transactions, Stars won't work.

Telegram takes 30%

Same as Apple/Google. After Telegram's cut, 1 Star nets you ~$0.014. Plan your pricing accordingly.

Who Should Use Stars?

Stars work best for:

  • Social apps with micropayments ($0.02–$5 range)
  • Content unlocking / paywalls
  • Digital goods and virtual items
  • Subscription-based services
  • Tipping and donations

Stars don't work for:

  • Physical goods (use Stripe/PayPal payment bots instead)
  • High-ticket B2B ($200+ per transaction)
  • Apps outside Telegram ecosystem

Try It

If you're curious how Stars feel as a user:

  1. Open @WhisprMe_bot in Telegram
  2. Get your anonymous link and share it
  3. When someone writes you, try unlocking for 1 Star

The whole experience takes about 30 seconds, and you'll see why frictionless micropayments change everything.


Building a Telegram Mini App? I'd love to hear about your Stars integration experience in the comments.

Top comments (0)