Цифровые товары
Приём оплаты за цифровые товары, онлайн-курсы и SaaS
Через Paycryp витрина создаёт счёт на конкретный заказ, покупатель платит по СБП, банковской картой или в криптовалюте, а ключ, файл или доступ выдаётся один раз после подтверждения вебхуком. Для покупок цифровых товаров внутри Telegram действуют правила Stars.
Условия приёма оплаты за цифровые товары
| Способ | Комиссия | Где принимать | Выплата |
|---|---|---|---|
| СБП | от 6% | Сайт или витрина через Merchant API, платёжная ссылка ученику или клиенту | В USDT на следующий день после конвертации, по заявке |
| Банковские карты | от 6% | Сайт или витрина через Merchant API, платёжная ссылка ученику или клиенту | В USDT на следующий день после конвертации, по заявке |
| Криптовалюта | от 1,5% | Сайт или витрина через Merchant API, платёжная ссылка; покупатель выбирает монету и сеть на странице оплаты | В USDT на следующий день после конвертации, по заявке |
Условия индивидуальные: тариф для магазина ключей, школы или SaaS согласуется по заявке до подключения. Ставки относятся к приёму; конвертация рублёвой выручки в USDT и комиссия сети при выводе считаются отдельно — подробнее на странице тарифов.
Как принимать оплату за цифровые товары на сайте
У цифрового товара выдача происходит сразу и автоматически: ключ, файл или доступ покупатель получает через секунды после оплаты. Поэтому платёж и выдача — два отдельных, но связанных события. Paycryp отвечает за первое, ваша витрина — за второе.
Схема одна для ключей, файлов, курсов и подписок:
- витрина создаёт заказ у себя и запоминает его номер — orderId;
- сервер создаёт платёж через Merchant API по ключу терминала и получает paymentUrl;
- покупатель переходит на платёжную страницу и платит по СБП, банковской картой или в криптовалюте — способ он выбирает сам;
- после оплаты Paycryp отправляет на ваш Webhook URL подписанное событие payment.confirmed;
- сервер проверяет подпись, сверяет orderId, валюту и baseAmount и выдаёт товар — один раз.
Если сайта или разработчика нет, а продажи идут в переписке, счёт выставляют вручную: сотрудник вводит сумму в терминале и отправляет клиенту платёжную ссылку, а подтверждение видит в кабинете. Выдачу в этом случае делаете руками — это подходит для курсов и консультаций, но не для магазина ключей с сотнями заказов в день.
Комиссия за приём: СБП и банковские карты — от 6%, криптовалюта — от 1,5%; итоговый тариф согласуется до подключения. Из чего складывается полная стоимость — на странице тарифов. Рублёвая выручка конвертируется в USDT, вывод на кошелёк доступен на следующий день после конвертации, по заявке в кабинете.
Ключи и файлы: лицензии, активации, шаблоны, программы
Для ключей главный вопрос — запас. Ключ одноразовый, и его нельзя выдать дважды: ни двум покупателям, ни одному покупателю по повторному событию. Решите заранее, когда резервировать экземпляр — при создании заказа или при подтверждении оплаты — и как освобождать резерв, если счёт не оплачен и истёк. Срок счёта задаётся в настройках терминала и возвращается в поле expiresAt, к нему удобно привязать таймер резерва.
В учебном примере магазин продаёт последний ключ из партии, и два покупателя открыли платёжную страницу одновременно. Кто получит ключ, решает не Paycryp, а ваш каталог: резерв по первому подтверждённому платежу, второму — сообщение, что позиция закончилась, и возврат.
Для файлов не давайте одну постоянную ссылку на весь платный каталог: после первой же продажи она разойдётся. Выдавайте ссылку на конкретный заказ — с авторизацией по аккаунту или с ограничением по сроку и числу скачиваний, о котором покупатель знает до оплаты. Сохраняйте результат выдачи в кабинете покупателя: если письмо потерялось, он найдёт файл по номеру заказа.
В описании товара до оплаты укажите формат, совместимость, срок действия ключа и способ получения и сохраните эти условия в заказе: когда каталог изменится, поддержка будет разбирать вопрос по тому, что видел покупатель.
Доступы и закрытый контент: клубы, библиотеки, каналы
Доступ — не файл, а право, привязанное к аккаунту и сроку. Поэтому заказ связывайте с пользователем, а не только с его e-mail: после оплаты сервер открывает раздел именно этому аккаунту и записывает дату окончания. Нажатие «Я оплатил» может запустить проверку статуса, но само по себе доступ не выдаёт.
Продление — новый счёт с новым orderId. Paycryp не делает автоматических списаний: каждый платёж покупатель подтверждает сам, а дату окончания и напоминания ведёт ваш сервис. Заранее определите правило продления — дни добавляются к текущему сроку или отсчитываются с момента оплаты — и покажите его до покупки. Как описать подписку и что показать читателю после оплаты, разобрано в статье про оплату подписки на контент.
Закрытые каналы и чаты в Telegram — отдельный случай: если контент и продажа живут внутри бота или Mini App, по правилам Telegram оплата идёт в Stars. Paycryp подходит, когда бот ведёт покупателя на сайт проекта — подробнее в секции про Telegram ниже.
Онлайн-курсы: приём оплаты за обучение
Школа выставляет счёт или отправляет ученику ссылку на оплату, ученик платит по СБП, банковской картой или в криптовалюте, а доступ к курсу открывается после подтверждённого статуса. Оба пути работают из одного кабинета, выбор зависит от объёма продаж.
- Платформа курсов с личным кабинетом: сервер создаёт платёж через Merchant API на конкретный поток или тариф, а после payment.confirmed зачисляет ученика в группу и открывает уроки.
- Продажи через переписку и консультации: менеджер вводит сумму в терминале и отправляет платёжную ссылку в мессенджер, после подтверждения в кабинете вручную добавляет ученика в курс. Готовых модулей для CMS и конструкторов нет, поэтому для школы без разработчика это основной сценарий.
Оплата частями со стороны Paycryp не автоматизируется: каждый взнос — отдельный счёт со своим orderId и своим сроком. Если курс продаётся пакетами («с проверкой заданий», «без проверки»), передавайте выбранный тариф в metadata: он вернётся в вебхуке, и сервер откроет нужный набор уроков.
SaaS и подписки: тарифы, продление, смена плана
Сервис создаёт заказ на тариф, покупатель платит по СБП, банковской картой или в криптовалюте, а функции открываются после подтверждения вебхуком. Автоматических списаний Paycryp не делает: смена плана и продление оформляются отдельным счётом. Автопродление подписок в разработке; пока сервис сам отправляет напоминание о конце периода и создаёт новый заказ, когда пользователь его подтверждает.
В SaaS платит один человек, а тариф получает рабочее пространство или команда. Поэтому до создания платежа зафиксируйте, какой объект получает план, на какой срок и сколько мест входит в расчёт, и сохраните этот снимок в заказе: если завтра цена изменится, сегодняшняя покупка не пересчитается задним числом. Правило перерасчёта при смене плана — сразу или со следующего периода — реализует сам сервис; Paycryp проводит платёж на сумму, переданную в amount.
Обновление тарифа сделайте отдельной операцией, которую безопасно повторить: одна покупка не должна добавить места или дни дважды из-за повторной доставки события. Если платёж подтверждён, а права ещё обновляются, покажите это в кабинете. Разбор привязки заказа к аккаунту и теста перед запуском — в статье про оплату SaaS-сервиса.
Защита от повторной выдачи и двойной оплаты
Для цифрового товара ошибка выдачи стоит дороже ошибки оплаты: лишний ключ уходит безвозвратно. Три правила закрывают почти все сценарии.
Один заказ — один orderId
Номер заказа создаётся для заказа, а не для нажатия кнопки. orderId уникален в рамках терминала и работает как ключ идемпотентности: повторный запрос на создание платежа с тем же orderId и той же исходной ценой вернёт уже созданный платёж, новый не появится; если сумма другая, Paycryp ответит ошибкой 400. Поэтому после двойного клика или обрыва связи сначала найдите платёж по orderId запросом GET, а не создавайте новый. Полный разбор — в статье про повторный запрос и двойную оплату.
Выдача только по подтверждённому статусу из вебхука
Страница успеха, возврат покупателя в чат бота и сообщение «я оплатил» — события интерфейса, а не подтверждение оплаты. Выдавайте товар только после события payment.confirmed, проверив подпись по исходному телу запроса и сверив orderId, валюту и baseAmount. Статус EXPIRED или CANCELLED не финальный: уже начатый перевод может подтвердиться позже, и интеграция должна принять поздний payment.confirmed. Перед отгрузкой дорогого товара сделайте контрольную сверку запросом GET по номеру заказа — нужен статус CONFIRMED и ожидаемая сумма.
Одно событие — одна выдача
Вебхук может прийти повторно; идентификатор доставки при повторах не меняется, и по нему события дедуплицируются. Но защитите и саму выдачу: храните три факта по платежу — оплата подтверждена, выдача начата, выдача завершена. Тогда повторное событие увидит готовый результат, а при сбое вы повторите именно выдачу, не создавая новый платёж. Учебный пример запроса на создание платежа:
{
"amount": 150000,
"orderId": "1024",
"description": "Лицензия на год, заказ №1024",
"metadata": { "userId": "42", "plan": "pro" }
}
Суммы передаются в минорных единицах: 150000 — это 1 500,00 ₽. metadata вернётся в вебхуке без изменений, и сервер узнает, какой тариф открыть. Ключ терминала хранится только на сервере и не попадает в код страницы товара.
| Ситуация | Что делает Paycryp | Что делает ваш сервер |
|---|---|---|
| Покупатель дважды нажал «Оплатить» | Повторный запрос с тем же orderId и суммой возвращает существующий платёж | Передаёт номер заказа, а не новый случайный идентификатор при каждом клике |
| Покупатель закрыл браузер сразу после оплаты | Отправляет payment.confirmed на Webhook URL, при ошибке повторяет доставку | Выдаёт товар по вебхуку, не ждёт возврата на страницу успеха |
| Событие пришло второй раз | Сохраняет тот же идентификатор доставки | Проверяет, что выдача по этому платежу уже завершена, и отвечает 2xx |
| Счёт истёк, деньги списались | Принимает поздний перевод и присылает payment.confirmed | Сверяет статус запросом GET и выдаёт товар, не просит платить снова |
Цифровые товары в Telegram-боте и Mini App
По правилам Telegram цифровые товары и услуги внутри ботов и Mini Apps оплачиваются в Stars; Paycryp не провайдер Stars и эти правила не меняет. Ключ, файл, доступ к каналу или курс, которые покупатель получает прямо в чате, не оплачиваются через Paycryp — это ограничение площадки, а не сервиса.
Paycryp нужен, когда у проекта есть свой сайт: бот показывает витрину и хранит номер заказа, покупатель переходит на сайт и платит там по СБП, банковской картой или в криптовалюте, сервер получает подписанный вебхук, а бот выдаёт доступ по подтверждённому статусу — не по возврату пользователя в чат. Как построить такую связку — на странице приёма оплаты для Telegram-проектов. Перед подключением опишите команде, где находится товар, где происходит продажа и как покупатель получает результат: по этим трём ответам подбирается сценарий.
Как подключить оплату цифровых товаров
Опишите товар и выдачу
В заявке укажите, что продаёте (ключи, файлы, курсы, подписки), где проходит продажа — сайт, переписка или бот с сайтом — и как покупатель получает результат. Подключиться может любой: компания, ИП или частное лицо; паспортная анкета и бумажный договор для стандартного подключения не нужны.
Согласуйте сценарий и тариф
По описанию товара и выдачи команда подбирает сценарий — Merchant API или платёжная ссылка — и называет тариф по СБП, банковским картам и криптовалюте. После согласования вы получаете доступ в кабинет.
Настройте терминал и выдачу
В кабинете создайте онлайн-терминал, задайте срок счёта, распределение комиссии и Webhook URL, выпустите ключ Merchant API и пройдите проверку терминала. На сервере свяжите заказ с orderId, обработчик вебхука — с выдачей ключа, файла или доступа. Для продаж в переписке используйте платёжную ссылку из терминала.
Проверьте на одном товаре и запускайте
Пройдите путь на одном тестовом товаре: оплата, повторная доставка события, закрытие браузера до страницы успеха, истёкший счёт. Если витрина и выдача готовы, а условия согласованы, запуск возможен за день.
Вопросы и ответы
Остались вопросы? Напишите нам.
Как принимать оплату за цифровые товары?
Через Paycryp витрина создаёт счёт на конкретный заказ, покупатель платит по СБП, банковской картой или в криптовалюте, а ключ, файл или доступ выдаётся один раз после подтверждения вебхуком. Для сайта счёт создаёт Merchant API, для продаж в переписке — платёжная ссылка из терминала. Для покупок цифровых товаров внутри Telegram действуют правила Stars.
Как принимать оплату за SaaS и подписки?
Сервис создаёт заказ на тариф, покупатель платит по СБП, банковской картой или в криптовалюте, а функции открываются после подтверждения вебхуком. Автоматических списаний Paycryp не делает: смена плана и продление оформляются отдельным счётом с новым orderId. Автопродление подписок в разработке.
Как онлайн-школе принимать оплату за курсы?
Школа выставляет счёт или отправляет ученику ссылку на оплату, ученик платит по СБП, банковской картой или в криптовалюте, а доступ к курсу открывается после подтверждённого статуса. Платформа с личным кабинетом подключается через Merchant API, школа без разработчика отправляет платёжные ссылки из терминала и добавляет ученика в курс вручную. Готовых модулей для конструкторов и CMS нет.
Когда выдавать товар: по странице успеха или по вебхуку?
Только по вебхуку payment.confirmed после проверки подписи и сверки orderId, валюты и baseAmount. Покупатель может закрыть браузер до страницы успеха, а «я оплатил» в чате не подтверждает оплату. Если событие задержалось, статус проверяют запросом GET по номеру заказа — нужен CONFIRMED. Как устроена обработка события, разобрано в статье про вебхук как подтверждение оплаты.
Оплата прошла, а ключ или доступ не выдан — что делать?
Не просите покупателя платить повторно. Найдите платёж в кабинете или запросом GET по orderId: если статус CONFIRMED, проблема в выдаче на вашей стороне — повторите именно её, результат должен быть сохранён по идентификатору платежа. Если платёж ещё PENDING, подтверждение задержалось; журнал доставок вебхуков есть в кабинете на странице терминала. Памятка для покупателя — в статье оплата прошла, а заказ не подтвердился.
Как оформить возврат за цифровой товар?
Возврат инициируется через кабинет по исходному платежу; если нужна помощь, напишите в поддержку Paycryp с номером платежа. Возврат проводится на стороне платёжного партнёра, после чего статус платежа меняется на REFUNDED и приходит событие payment.refunded. Что делать с уже выданным ключом или доступом, решает продавец по условиям продукта — см. порядок возврата покупателю.
Можно ли продавать цифровые товары в Telegram-боте через Paycryp?
Внутри бота или Mini App — нет: по правилам Telegram цифровые товары и услуги там оплачиваются в Stars, и Paycryp эти правила не меняет. Paycryp подходит, когда бот ведёт покупателя на сайт проекта: оплата проходит на сайте по СБП, банковской картой или в криптовалюте, а бот выдаёт доступ по подписанному вебхуку.
Подключите оплату цифровых товаров
Напишите, что продаёте, где проходит продажа и как выдаёте товар, — по этим трём ответам подберём сценарий и согласуем тариф до подключения. Вопросы — в Telegram @paycryp1, ответ обычно в течение минуты.


