In Poland, most people pay online with BLIK: a six-digit code from the banking app. If your Telegram bot sells something to Polish customers (bookings, courses, products), card-only payments lose a lot of buyers. Here is how BLIK fits into a bot, and what I watch out for.

Option 1: Telegram Payments with a provider

Telegram has a built-in payments API. You connect a payment provider in BotFather and send an invoice with sendInvoice. The user pays inside Telegram.

The catch: you depend on which providers Telegram supports for your country and currency, and BLIK is not always available there. Check the current provider list before you build on it.

Option 2: payment link from Przelewy24

The more flexible way, and the one I use most often:

  1. The bot collects the order (service, date, product, quantity).
  2. Your backend creates a transaction in Przelewy24 through their REST API and gets a payment link.
  3. The bot sends a button with that link.
  4. The customer chooses BLIK (or a bank transfer, or a card) on the Przelewy24 page and pays.
  5. Przelewy24 calls your notification URL. Your backend verifies the transaction through the API.
  6. Only after verification does the bot confirm the order and notify you.

Przelewy24 supports BLIK, quick bank transfers and cards on one payment page, so you do not have to integrate each method separately.

Things that break in real projects

  • Trusting the redirect. The customer coming back to the "success" page does not mean the money arrived. Always confirm through the server notification and the verify call.
  • Amounts in grosze. Przelewy24 expects the amount in the smallest unit: 49.99 zł is 4999.
  • Duplicate notifications. The notification can arrive more than once. Make the handler idempotent: one order, one confirmation.
  • Test vs production. Przelewy24 has a sandbox with separate credentials. Keep them in configuration, not in code.
  • Invoices. If you are a business, the customer may need a receipt or invoice. Decide early where it is generated.

Hosting the bot

A webhook-based bot needs an HTTPS endpoint that is always online. A small VPS or a serverless function is enough. Store orders in a database, not in memory, so a restart does not lose payments.

Is it worth it?

For Polish customers, yes: a BLIK payment takes about ten seconds and needs no card details. Bots that switch from "pay by bank transfer and send a screenshot" to BLIK usually get fewer abandoned orders and less manual checking.

I wrote a longer version with costs: Telegram bot payments in Poland: BLIK and Przelewy24. If you need such a bot built: Telegram bot with BLIK and Przelewy24.