Product Sales with Stripe Checkout

Perfect if you're selling a digital product, an online course, a paid consultation, or a one-off digital good and want a real checkout inside Telegram instead of a shared payment link or a separate landing page. Stripe Checkout is the default rail — a secure, hosted payment page that supports cards worldwide — but you can switch this same template to Telegram Payments or YooKassa during setup if that suits your audience better. Either way, your buyer never leaves the chat until it's time to pay.

Flow Preview

Stripe Payment FulfillmentProduct Sales

Overview

A ready-made Telegram sales flow: show your product, collect the buyer's email, generate a secure Stripe Checkout link, and deliver on payment — no code, card form, or checkout page to build yourself. The same template can also run on Telegram Payments or YooKassa if you'd rather charge through those.

Who It's For

Perfect if you're selling a digital product, an online course, a paid consultation, or a one-off digital good and want a real checkout inside Telegram instead of a shared payment link or a separate landing page. Stripe Checkout is the default rail — a secure, hosted payment page that supports cards worldwide — but you can switch this same template to Telegram Payments or YooKassa during setup if that suits your audience better. Either way, your buyer never leaves the chat until it's time to pay.

Setup Requirements

  • Decide which payment rail to use: Stripe, Telegram Payments, or YooKassa.
  • Decide what you're selling, and at what price and currency.
  • Decide what buyers should get right after paying — a file, an invite link, course access, or a personal follow-up.
  • Decide whether collecting an email before checkout matters for your business (receipts, marketing, support).
  • Connect your Telegram bot: Settings → Bots → paste the token from @BotFather.
  • Stripe (default): keep the Stripe module installed, add your STRIPE_SECRET_KEY in the module's own setup form, and check the amount, currency, success URL, and cancel URL on the checkout step. Get your keys at https://docs.stripe.com/keys.
  • Stripe fulfillment: open the "Stripe Payment Fulfillment" flow, copy the Full Webhook URL from its Start block, and paste it into Stripe Dashboard → Developers → Webhooks — that's what tells the bot a sale actually happened.
  • Telegram Payments instead: connect a provider in @BotFather → Payments, paste the provider token in FlowCastle under Bot Settings → Card payments, and set your real price on the payment block.
  • YooKassa instead: install the YooKassa module, add your shopId and secretKey in its own setup form, and point the YooKassa webhook at the "Stripe Payment Fulfillment" flow's start block.
  • Replace the two sample products — names, descriptions, and prices — with your real offer before publishing.
  • Press Deploy, then run one real test purchase before sharing the bot with buyers.
  • Want sale alerts? Tag your team's contacts "staff" on the Contacts page — the fulfillment flow already notifies everyone carrying that tag.

Node Breakdown

  • Someone opens your bot and sees your product catalog with a button for each item
  • They pick a product and see a detail card with the price
  • The bot asks for their email, so you (and Stripe) have a receipt address on file
  • It creates a secure Stripe Checkout session and sends a "Pay now" button with the real payment link — nothing to copy or paste
  • The buyer pays on Stripe's own hosted page; card details never touch Telegram or your bot
  • A separate webhook flow listens for Stripe's payment confirmation and only reacts to events actually marked paid, so nobody gets a "thanks for your order" message for a payment that never went through

Details

Good to know

  • Stripe is the default rail: it's wired in through the installed Stripe module, so there's no card form to build and no raw checkout link to paste — buyers get a tappable "Pay now" button instead.
  • During setup you can pick Telegram Payments (cards via a provider you connect in @BotFather, or Telegram Stars) or YooKassa instead — the payment step gets rebuilt around whichever rail you choose.
  • Your Stripe secret key lives in the Stripe module's own setup form, never in the chat or in a variable a visitor could see.
  • The two sample products (with sample prices) ship ready to test — swap in your real product names, descriptions, and prices before going live.
  • The confirmation message and the staff alert only fire for Stripe events whose payment status is actually "paid" — a cancelled or still-pending checkout never triggers a false "thank you".
  • Everything — product cards, prices, the email prompt, and the checkout copy — is editable afterwards in the visual editor.

Keep in mind

  • Don't leave the two sample products live — replace their names and prices with your real offer before sharing the bot.
  • Don't skip the Stripe webhook step — without it, the bot never finds out a payment succeeded, so buyers won't get their confirmation or their product.
  • Keep your Stripe secret key in the module setup, never in a chat variable or message.
  • If you switch payment providers later, double-check the payment step still matches — Stripe, Telegram Payments, and YooKassa aren't interchangeable without re-wiring that step.