Цифровые товары

Приём оплаты за цифровые товары, онлайн-курсы и 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-проектов. Перед подключением опишите команде, где находится товар, где происходит продажа и как покупатель получает результат: по этим трём ответам подбирается сценарий.

Как подключить оплату цифровых товаров

  1. Опишите товар и выдачу

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

  2. Согласуйте сценарий и тариф

    По описанию товара и выдачи команда подбирает сценарий — Merchant API или платёжная ссылка — и называет тариф по СБП, банковским картам и криптовалюте. После согласования вы получаете доступ в кабинет.

  3. Настройте терминал и выдачу

    В кабинете создайте онлайн-терминал, задайте срок счёта, распределение комиссии и Webhook URL, выпустите ключ Merchant API и пройдите проверку терминала. На сервере свяжите заказ с orderId, обработчик вебхука — с выдачей ключа, файла или доступа. Для продаж в переписке используйте платёжную ссылку из терминала.

  4. Проверьте на одном товаре и запускайте

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

Вопросы и ответы

Остались вопросы? Напишите нам.

Как принимать оплату за цифровые товары?

Через 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

Подключите оплату цифровых товаров

Напишите, что продаёте, где проходит продажа и как выдаёте товар, — по этим трём ответам подберём сценарий и согласуем тариф до подключения. Вопросы — в Telegram @paycryp1, ответ обычно в течение минуты.