Платежи в Telegram

Telegram Stars или внешняя оплата: что выбрать проекту

Выбор определяется прежде всего предметом продажи и местом сделки: цифровые товары внутри Telegram требуют Stars, а внешние провайдеры нельзя считать обходом этого правила.

Выбор решается не вкусом, а тем, что вы продаёте и где покупатель это получает. Цифровой контент, который потребляется прямо внутри Telegram — платные стикеры, разблокировка уровня в игре-боте, доступ к каналу, генерации внутри мини-приложения, — по правилам платформы оплачивается звёздами. Всё, что человек получает за пределами мессенджера: консультация, занятие с преподавателем, доставка товара, подписка на внешний сервис, — оплачивается обычными платёжными методами.

Дальше — честный разбор обеих сторон: где звёзды удобны, где они превращаются в проблему, что происходит с деньгами и как жить, если в проекте нужны оба способа.

Правило платформы простыми словами

Telegram различает два типа продаж. Первый — цифровые товары и услуги, которые существуют только внутри мессенджера и не имеют ценности снаружи. Второй — физические товары и услуги реального мира, а также цифровые продукты, живущие за пределами Telegram.

Для первого типа платформа требует использовать Stars, и попытка увести такую оплату на внешнюю ссылку — не хитрость, а нарушение правил, за которое бота ограничивают. Для второго типа звёзды, наоборот, не предназначены: там работают обычные платёжные провайдеры и платёжные ссылки.

Границу определяет не техника, а то, что получает покупатель. Одна и та же кнопка «Оплатить 500 ₽» может относиться к разным типам продаж — смотрите на товар, а не на интерфейс.

Где Stars уместны

  • Игровой бот. Жизни, подсказки, ускорение, косметика — всё это существует только внутри вашей игры.
  • Платный функционал мини-приложения. Снятие лимита на генерации, премиум-фильтры, расширенная статистика.
  • Донаты автору канала. Реакции, платные сообщения, поддержка — сценарий, под который звёзды и делались.
  • Микроплатежи. Покупка на 30–100 ₽ через внешний платёж почти всегда выглядит громоздко, а в звёздах это два касания.
  • Международная аудитория. Звёзды одинаково работают у пользователя из любой страны, и вам не нужно думать о его банке.

Техническая сторона проще, чем у внешней интеграции: бот выставляет счёт через Bot API, Telegram сам показывает форму, а результат приходит апдейтом. Отдельного платёжного провайдера, ключей и колбэков нет.

Где звёзды не подходят

Список короткий, но именно он определяет выбор для большинства коммерческих проектов:

  • Услуги реального мира. Консультация, урок английского, стрижка, ремонт, доставка еды.
  • Физические товары. Всё, что едет курьером или почтой.
  • Крупные суммы. Курс за 30 000 ₽ или корпоративный тариф в звёздах покупатель оплачивать не станет: ему нужно пополнить баланс на сумму, сопоставимую с зарплатной картой.
  • B2B и оплата от компании. Бухгалтерии нужен понятный платёж с назначением, а не покупка внутриигровой валюты.
  • Продукт, который живёт вне Telegram. Веб-сервис, приложение, лицензия — бот здесь только канал продаж.

Отдельный практический аргумент — цена входа для покупателя. Чтобы заплатить звёздами, человек сначала покупает их, и на этом шаге теряется часть аудитории, особенно взрослой и непривычной к игровым валютам. Для внешней оплаты по СБП такого шага нет: покупатель нажимает кнопку и подтверждает перевод в приложении своего банка. Как это выглядит в деталях, разобрано в статье об оплате в Telegram-боте через СБП.

Что происходит с деньгами

Здесь два способа отличаются сильнее всего, и разницу лучше понять до запуска.

Звёзды — это внутренняя валюта. Покупатель приобретает их у Telegram (нередко через магазин приложений, который берёт свою долю), тратит у вас, а вы получаете баланс в звёздах. Чтобы превратить его в деньги, нужен вывод по правилам платформы, и он доступен не сразу: действует период удержания. Актуальные условия и сроки смотрите в документации Telegram — они менялись не раз.

Внешняя оплата — это обычные деньги на вашем счёте. Комиссия известна заранее и зависит от условий подключения, которые подтверждает модерация. Валюта — рубли, зачисление идёт по расписанию выплат, а каждая транзакция видна в личном кабинете с суммой, статусом и order_id. Для сверки с бухгалтерией это принципиально: у вас есть выгрузка, которую можно сопоставить с заказами. Как её строить, описано в материале о сверке платежей.

Таблица: когда что выбирать

СценарийСпособПочему так
Подсказка в игре-боте за 50 ₽StarsЦифровое, внутри Telegram, микросумма
Премиум-режим мини-приложенияStarsПотребляется внутри мессенджера
Курс на 12 занятий за 24 000 ₽Внешняя оплатаКрупная сумма, обучение с живым преподавателем
Консультация юристаВнешняя оплатаУслуга реального мира
Печатный мерч из бота-магазинаВнешняя оплатаФизический товар с доставкой
Подписка на внешний SaaSВнешняя оплатаПродукт живёт вне Telegram
Донат автору каналаStarsПоддержка внутри платформы

Оба способа в одном проекте

Это нормальная и частая конфигурация. Бот-фоторедактор продаёт пакеты генераций звёздами, а фирменный альбом с печатью — по внешней ссылке. Ничего согласовывать между способами не нужно, но два правила стоит соблюдать.

Первое: одна и та же покупка не должна быть доступна двумя способами «на выбор». Это выглядит как попытка увести оплату мимо правил платформы и создаёт путаницу в учёте. Второе: заказы обоих типов пишите в одну таблицу с полем source (stars или external). Иначе вы никогда не соберёте честный отчёт по выручке.

Момент выдачи товара в каждой схеме

Механики разные, но вывод одинаковый: право открыть доступ даёт сервер, а не действие пользователя.

У звёзд бот сначала получает pre_checkout_query — это вопрос «можно ли проводить платёж», на который нужно ответить в течение десяти секунд. Клуб настольных игр открывал доступ прямо в этом обработчике и полгода раздавал платные материалы людям, у которых оплата дальше не проходила. Реальное подтверждение приходит следующим апдейтом — сообщением с полем successful_payment, где лежат telegram_payment_charge_id и ваш invoice_payload. Вот по нему и выдавайте товар.

У внешней оплаты роль такого апдейта играет колбэк payment.paid с заголовком X-Signature: HMAC-SHA256 от X-Timestamp, точки и сырого тела запроса. Подпись считается до разбора JSON и сравнивается constant-time — разбор с примерами есть в статье о проверке подписи вебхука.

Чек, налоги и статус продавца

Выбор способа оплаты не меняет ваших обязанностей перед налоговой. Доход, полученный звёздами, остаётся доходом, и учитывать его нужно так же, как поступления на счёт. Статус продавца, чек и возвраты — ваша ответственность; платёжный сервис отвечает за техническую часть подключения.

Самозанятый формирует чек в приложении «Мой налог» и следит за лимитом 2,4 млн ₽ в год. Если продажи растут, считайте лимит заранее — переход через него посреди года ломает планы сильнее, чем кажется. Что делать без ИП и какие способы доступны, разобрано в решении платежи без ИП, а общий сценарий для бота — в решении платежи в Telegram-боте.

Частые вопросы

Можно ли увести оплату цифрового контента на внешнюю ссылку?

Если товар существует только внутри Telegram — стикеры, уровни в игре-боте, платные функции мини-приложения — то нет. Правила платформы требуют для таких продаж Stars, и обход этого ограничения приводит к санкциям для бота. Внешние методы предназначены для услуг реального мира, физических товаров и продуктов, живущих вне мессенджера.

Почему звёзды плохо подходят для дорогих продаж?

Чтобы заплатить, покупатель сначала пополняет баланс в звёздах, и при сумме в десятки тысяч рублей этот шаг отсекает большую часть людей. Добавьте сюда потребности бухгалтерии при оплате от компании — назначение платежа и понятный документ. Курсы, консультации и корпоративные тарифы продаются внешней оплатой заметно лучше.

Чем отличается получение денег в двух схемах?

Звёзды остаются внутренней валютой платформы: вы копите баланс и выводите его по правилам Telegram, причём вывод доступен не сразу — действует период удержания, а условия стоит сверять с актуальной документацией. Внешняя оплата приходит рублями на ваш счёт по расписанию выплат, и каждая транзакция видна в кабинете вместе с order_id.

Можно ли использовать оба способа в одном боте?

Да, это обычная конфигурация: генерации продаются звёздами, а печатный мерч — внешней ссылкой. Не давайте только выбор между двумя способами для одной и той же покупки: это читается как попытка обойти правила платформы. Заказы обоих типов пишите в одну таблицу с полем source, иначе отчёт по выручке не сойдётся.

По какому событию открывать доступ при оплате звёздами?

Не по pre_checkout_query — это только вопрос платформы, можно ли проводить платёж, и ответить на него нужно в течение десяти секунд. Товар выдавайте по следующему апдейту: сообщению с полем successful_payment, где приходят telegram_payment_charge_id и ваш invoice_payload. Во внешней схеме ту же роль играет колбэк payment.paid с проверенной подписью.

Источники и документация