For business5 min read

Telegram Bot Payments: How to Take Payment Inside the Chat and What You Need for It

A booking deposit, an order payment, a subscription — all of it can happen without leaving Telegram. Three ways to take money through a bot, their costs and fees, when each fits, and how to never lose a payment to a duplicated webhook.

A bot that takes a booking but sends the deposit to "transfer using these bank details" is half a job. The person opens their bank app, gets the reference wrong, and you check the statement every morning. Payment should happen where the decision happens — in the chat. Here are three ways to do it, from the simplest to the complete.

Three ways to take money through a bot

Method What the customer sees Fees When it fits
Telegram Payments (via Stripe or another provider) a "Pay €20" button in the chat, a card form opens inside Telegram, confirmation a second later provider's only: Stripe ~1.5 % + €0.25 for EU cards; Telegram takes no cut deposits, orders, tickets — anything up to a few hundred euros
Payment link the bot sends a link (Stripe Payment Link, Paysera, a bank link), the customer pays in a browser, the bot gets the confirmation provider's; local bank payments are often cheaper than cards when customers prefer bank transfers, larger amounts, B2B
Invoice with matching the bot issues a PDF invoice, the customer transfers, the bot sees the incoming payment via the bank's API or accounting software and marks it paid zero per payment; bank API access may cost B2B with deferred payment, large amounts, customers who pay by transfer

For most small businesses the first method is best: the customer never leaves the chat and conversion is highest. The second if your customers are used to paying via their bank rather than by card. The third when payment does not happen instantly.

How it works technically (in plain terms)

With Telegram Payments: the bot creates an "invoice" (amount, description, your provider's token) and shows a button. The customer enters a card — its details go straight to the provider; neither Telegram nor your server sees them. The provider approves, Telegram asks your server "all good, can I finish?", your server says "yes", the money is charged, and the bot writes "Thank you, your booking is confirmed". The whole path takes 5–10 seconds.

If the provider is Stripe, the money lands in your Stripe account and is paid out to your bank on a schedule (typically every few days). Your accountant sees the Stripe report, just like with a card terminal.

How a bot is put together in general is covered in how Telegram bots work. Payments are simply one more block in the same conversation flow.

The mistake that costs money: the same payment twice

Payment systems report events through webhooks — and sometimes report twice, when your server was slow to respond. If the bot treats every notification as a new payment, the customer gets two confirmations, two bookings, two invoices, and you get a customer asking for a refund.

The fix is mandatory, not optional: every payment event has a unique ID; the server records it before processing, and on seeing the same ID again silently ignores it. The same applies in the other direction: the bot must not allow "Pay" to be pressed twice for the same booking. Technically this is called idempotency; practically it is the difference between a system you can trust with money and one you are afraid of.

Refund rules up front, not after the fact

Before the first payment, decide: cancelled 24 h before — the deposit is refunded automatically; later — non-refundable; paid by mistake — a human refunds from the provider's dashboard. The bot shows these rules before payment. A rule the customer saw is not a dispute.

What it costs

  • A payment block for an existing bot (Telegram Payments or a link, confirmation, log, duplicate protection): €300–600, 3–5 days.
  • A booking bot with deposits from scratch: €800–1,800 — the most common project; details in Telegram bot development cost.
  • Subscriptions or recurring payments (monthly membership, season pass): +€400–800, because failed recurring charges and reminders need handling.

Plus the provider's fee on every payment. At €2,000 a month through the bot, Stripe costs about €35–45. Compare that with the time spent checking bank statements and writing "received".

Who gains the most

  • Service businesses with no-shows. A €10–20 deposit cuts no-shows more than any reminder — a person who has paid shows up.
  • Food, flowers and small product orders. Order and payment in one flow; the packer only sees paid orders.
  • Events and classes. Ticket, seat, QR code — all in the chat, without a separate platform and its commission.
  • Memberships. A gym, a course, a private channel — a monthly fee via a bot that removes non-payers from the group on its own.

What to do tomorrow

Count how many times a week you check "has it come through yet". Multiply by 5 minutes. Then count how many customers a month failed to show up without a deposit. Two numbers that tell you whether the payment block pays off in a month or in three. If you already have a Stripe or Paysera account, setup is faster; if not, opening one takes a day.

Frequently asked questions

Is this legal and secure?

Yes. Payments are processed by a licensed provider (Stripe, Paysera and others hold EU licences), card details never touch your server, and you get the same thing you would with a card terminal at the counter — just without the device. Invoicing and accounting work as usual.

Do customers need to install anything?

No. Telegram already has a payment form; a card can be saved for next time. The payment-link option works in any browser.

What if the customer paid and the bot crashed at that very second?

The payment went through at the provider, and it will notify you again when the server recovers — which is exactly why duplicate protection is needed. The booking is created a minute late, not lost. For such cases the bot has an admin command "check payment by ID".

More posts

All posts