Оплати в Telegram-боті: як приймати гроші прямо в чаті
Telegram Payments, еквайринг, підписки й фіскалізація. Які схеми законні в Україні, скільки коштує кожна і де користувачі найчастіше зриваються з оплати.
Бот довів людину до кнопки «Оплатити» — і відправляє її на сайт, у форму або, найгірше, просить скинути скріншот квитанції в чат. Кожен такий перехід з’їдає покупців: зовнішня сторінка оплати в наших проєктах конвертує гірше за нативну на 15–30%, а на дрібних сумах різниця ще більша. Нижче — три робочі схеми прийому грошей просто в чаті, скільки кожна коштує в комісіях і в розробці, що робити з підписками та фіскальними чеками і де саме люди зриваються з оплати.
0%
бере Telegram з платежів карткою
2.5%
типова комісія еквайра
10 с
на відповідь у pre_checkout_query
21 д
витримка перед виведенням Stars
Три способи взяти гроші в боті
Життєздатних схем рівно три плюс одна тимчасова. Вибір між ними визначає не смак, а те, що ви продаєте: за фізичний товар і за цифровий доступ правила різні, і плутати їх дорого.
| Схема | Що бачить користувач | Комісія | Коли обирати |
|---|---|---|---|
| Telegram Payments | Нативна форма оплати карткою в чаті | Тільки еквайр, 1,4–2,8% | Товари, послуги, запис, доставка |
| Telegram Stars (XTR) | Внутрішня валюта, куплена заздалегідь | Утримання сторів плюс курс виведення | Цифрові товари й доступи |
| Mini App із чекаутом | Сторінка оплати без виходу з месенджера | Еквайр плюс розробка інтерфейсу | Кошик, промокоди, складна логіка |
| Зовнішнє посилання | Перехід у браузер і повернення вручну | Еквайр | Тимчасове рішення, рахунки юрособам |
Як насправді працює Telegram Payments
Telegram грошей не тримає й нічого не утримує: він показує форму, збирає дані картки й передає їх вашому платіжному провайдеру. Кошти йдуть на ваш рахунок в еквайра, а бот отримує лише події про статус. Звідси головне правило архітектури — джерело правди про оплату це конкретний апдейт, а не натиснута кнопка.
- 1
Підключення провайдера
У BotFather → /mybots → Payments ви обираєте провайдера, доступного у вашій країні. Одразу беріть і тестовий токен: без нього ви не перевірите сценарії відмови, не витрачаючи реальних грошей.
- 2
Виставлення рахунку
sendInvoice приймає назву, опис, payload із вашим ідентифікатором замовлення та ціну в мінімальних одиницях валюти. Класична помилка першого тижня — передати 149 замість 14900.
- 3
Передперевірка
Бот отримує pre_checkout_query і має рівно 10 секунд на відповідь: перевірити залишок, актуальність ціни й ліміти. Не встигли — Telegram скасовує платіж сам.
- 4
Підтвердження й видача
Успіх приходить окремим повідомленням із successful_payment і telegram_payment_charge_id. За цим ідентифікатором будують ідемпотентність: один charge_id — одна видача товару, скільки б разів апдейт не повторився.
// Ціна завжди в мінімальних одиницях: 149.00 UAH → 14900.
await api('sendInvoice', {
chat_id: chatId,
title: 'Курс «Основи»',
description: 'Доступ до матеріалів на 12 місяців',
payload: orderId, // ваш ідентифікатор, повернеться назад
provider_token: PROVIDER_TOKEN, // для Stars — порожній рядок
currency: 'UAH',
prices: [{ label: 'Курс', amount: 14900 }],
});
// Рівно 10 секунд на відповідь, інакше платіж зривається.
onUpdate('pre_checkout_query', async (q) => {
const ok = await isStillAvailable(q.invoice_payload);
await api('answerPreCheckoutQuery', {
pre_checkout_query_id: q.id,
ok,
error_message: ok ? undefined : 'Товар щойно закінчився',
});
});
// Єдина подія, після якої гроші справді ваші.
onUpdate('message', async (msg) => {
const p = msg.successful_payment;
if (!p) return;
await fulfilOnce(p.invoice_payload, p.telegram_payment_charge_id);
});Stars, цифрові товари й повторні списання
Stars — внутрішня валюта Telegram, яку користувач купує заздалегідь. Для вас це той самий sendInvoice, тільки з валютою XTR, порожнім provider token і рівно однією позицією в цінах. Відмінності починаються далі, і знати про них варто до того, як ви побудуєте на цьому бізнес-модель.
- Виведення не миттєве. Зароблені Stars виводяться через Fragment після витримки близько 21 дня — перші гроші від запуску ви побачите щонайменше через три тижні.
- Курс виведення нижчий за ціну покупки. На момент написання це орієнтовно $0,013 за одну Star. Реальне утримання виходить ближче до 30%, і саме цю цифру треба закладати в модель.
- Повернення обов’язкове. refundStarPayment має бути реалізований і доступний користувачу — інакше отримаєте потік скарг і ризик санкцій до бота.
- Підписки в Stars працюють з коробки. Посилання на рахунок із періодом продовження на 30 днів — і Telegram сам списує щомісяця, а користувач бачить та скасовує підписку у своєму інтерфейсі.
- Підписок за картку немає. Повторні списання фіатом можливі лише через токенізацію на боці еквайра, і запускати цей потік доводиться з Mini App або вебсторінки.
Де саме зриваються оплати
Технічно правильна інтеграція однаково втрачає гроші, якщо сценарій написаний недбало. Порядок проблем — за розміром збитку, за логами наших ботів у торгівлі та послугах.
- 1Ціну вперше видно на кроці оплати. Найбільший одиничний провал: людина йшла за консультацією, а отримала рахунок. Показуйте суму в повідомленні перед кнопкою.
- 2Повернення з 3-D Secure. Якщо оплата відкривається в зовнішньому браузері, частина людей після підтвердження банку просто не повертається в чат. Нативна форма знімає це повністю.
- 3Немає стану «обробляємо». Між натисканням і підтвердженням проходить 2–6 секунд, і без явного повідомлення користувач тисне ще раз. Далі — дубль замовлення й розбір із поверненням.
- 4Інвойс без строку життя. Рахунок можуть оплатити через тиждень, коли ціна вже інша, а товару немає. Прив’язуйте payload до замовлення зі строком і перевіряйте його в передперевірці.
- 5Немає запасного каналу. Для сум у кілька сотень доларів і для юросіб лишайте кнопку «виставити рахунок» — інакше ви відсікаєте найбільші чеки заради елегантності інтерфейсу.
Мінімальний чекліст перед запуском оплат
- Ідемпотентність за telegram_payment_charge_id — повторний апдейт не створює друге замовлення
- Вебхук на HTTPS із секретним токеном, а не відкритий ендпоінт
- Лог кожного платіжного апдейту в базу, а не тільки в консоль
- Сценарій відмови картки з людським текстом і кнопкою «спробувати ще раз»
- Процедура повернення коштів, перевірена до першого продажу
- Передача замовлення в CRM або таблицю одразу після успішної оплати
Скільки це коштує і що робити з чеками
| Обсяг | Що входить | Розробка | Строк |
|---|---|---|---|
| Одна кнопка оплати | Рахунок, передперевірка, підтвердження, логи | $250–500 | 3–5 днів |
| Каталог із кошиком | Товари, знижки, доставка, статуси замовлення | $900–2 000 | 2–4 тижні |
| Підписка | Повторні списання, нагадування, видача доступу | $700–1 500 | 2–3 тижні |
| Mini App із чекаутом | Кошик, оплата, кабінет, повернення коштів | $2 000–4 500 | 4–8 тижнів |
Тепер про частину, яку люблять відкладати. Якщо ви продаєте товари чи послуги кінцевому споживачу за безготівковий розрахунок, фіскальний чек потрібен так само, як у звичайному магазині — бот не є винятком. Практично це інтеграція з ПРРО на кшталт Checkbox або Vchasno.Kasa і додаткові $200–400 у кошторисі. Чек формується після успішної оплати й іде тим самим повідомленням, що й підтвердження замовлення.
Оплата в боті — не кнопка, а машина станів. Кнопку робиш за день, стани — за два тижні, і саме вони визначають, скільки грошей ви фактично отримаєте.
Правило кошторису: сама інтеграція — це приблизно 20% робіт, решта припадає на сценарії помилок, повернення, чеки й передачу замовлень в облік. Якщо підрядник називає ціну лише за «підключення оплати», попросіть окремо оцінити ті 80% — структуру бюджету ми розбирали в матеріалі про вартість розробки Telegram-бота.
Часті питання про оплати в Telegram-ботах
Скільки Telegram бере комісії за платежі в боті?
За платежі банківською карткою Telegram не бере нічого — ви платите тільки комісію свого платіжного провайдера, зазвичай 1,4–2,8% від суми. З Telegram Stars інакше: утримання магазину застосунків і курс виведення разом дають ефективну втрату, близьку до 30%. Тому фізичні товари вигідніше продавати карткою, а цифрові доступи доводиться продавати в Stars за правилами платформ.
Чи можна зробити щомісячну підписку в Telegram-боті?
Так, двома різними шляхами. Для цифрового доступу підписка робиться в Stars через посилання на рахунок із періодом продовження: Telegram списує кошти щомісяця сам, а користувач бачить і скасовує підписку у своєму інтерфейсі. Для оплати карткою вбудованих повторних списань немає, тому потрібна токенізація на боці еквайра, а потік запускається з вебсторінки або Mini App.
Потрібен фіскальний чек, якщо продаж відбувся в боті?
Так, канал продажу не змінює податкових обов’язків. Продаж товару або послуги кінцевому споживачу за безготівковий розрахунок вимагає чека так само, як продаж у фізичній точці. Технічно це вирішується інтеграцією з сервісом програмного РРО, який має API: чек формується автоматично після оплати й надсилається користувачу прямо в чат.
Що робити, якщо гроші списалися, а бот не видав товар?
Це майже завжди означає, що обробник події успішної оплати впав або не був ідемпотентним. Правильна архітектура пише кожен платіжний апдейт у базу до будь-якої бізнес-логіки, тож видачу можна повторити вручну за ідентифікатором платежу. Без логів лишається тільки повернення коштів — саме тому логування платежів закладають з першого дня.
Коли краще винести оплату в Mini App замість чату?
Коли покупка складніша за одну позицію: кошик на кілька товарів, вибір варіантів, промокоди, розрахунок доставки або графік запису. Нативний рахунок у чаті чудово працює для одного товару з фіксованою ціною, але погано тримає багатокрокові сценарії. Практичний поріг простий: якщо до оплати треба зробити більше трьох виборів, інтерфейс варто винести в Mini App.
Коротко
- Фізичні товари й послуги — карткою через Telegram Payments; цифрові доступи всередині Telegram — тільки в Stars, інакше ризикуєте ботом.
- Джерело правди про оплату — подія successful_payment і її charge_id, а не натиснута кнопка. Ідемпотентність обов’язкова.
- Найбільші втрати конверсії дає не комісія, а ціна, показана надто пізно, і повернення із зовнішньої сторінки оплати.
- Сама інтеграція — близько 20% робіт; решта бюджету йде на помилки, повернення, чеки й передачу замовлень в облік.
- Фіскальний чек у боті потрібен так само, як у магазині: закладайте $200–400 і окремий тиждень робіт.
Схожі матеріали
Telegram-бот для бізнесу: 12 сценаріїв, які реально економлять час
Бот корисний не там, де «модно», а там, де менеджер повторює одну дію 50 разів на день.
Telegram Mini Apps: повноцінний застосунок усередині месенджера
Mini App — це ваш інтерфейс там, де користувач уже сидить. Без встановлення й реєстрацій.
Скільки коштує Telegram-бот: розбір кошторису
Від $200 до $5000 — різниця не в кількості кнопок. Пояснюємо, за що саме платять.