СБП и способы оплаты

Как создать платёжную ссылку СБП и проверить оплату

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

Платёжная ссылка СБП — это адрес вида https://pay.rollypay.io/pay/<token>, который вы создаёте под конкретный заказ и отправляете покупателю в чат, письмо или SMS. Он открывает страницу оплаты с уже подставленной суммой: на телефоне человек уходит в приложение банка, на компьютере видит код для сканирования.

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

Ссылка выигрывает там, где сделка обсуждается в переписке. Фрилансер согласовал правки — и тут же отправил счёт. Мастер записал клиента на четверг — и прислал предоплату 30%. Консультант закончил созвон — и скинул оплату второй сессии, пока человек не остыл.

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

Разница в скорости заметна сразу. «Реквизиты пришлю вечером» — это минус часть сделок: человек уходит думать. Ссылка в том же сообщении, где вы назвали сумму, закрывает оплату за минуту. Если у вас пока вообще нет площадки, посмотрите разбор про платёжную ссылку без сайта.

Куда её отправлять

КаналЧто учесть
Телеграм и WhatsAppОткрывается в один тап, банк запускается сразу. Лучший вариант по скорости
ПисьмоСтавьте кнопку, а не голый адрес — часть почтовых клиентов ломает длинные строки
SMSДорого и без форматирования, зато доходит до тех, кто не читает мессенджеры
Голосом по телефонуНе годится: токен длинный, продиктовать его без ошибки нельзя

Сопроводите ссылку тремя строками: что оплачивается, сколько стоит, до какого времени действует. Сообщение «5 800 ₽ за консультацию 60 минут, ссылка активна до 20:00» снимает половину вопросов в ответ. И никогда не отправляйте адрес без текста — это выглядит как рассылка мошенника, и человек не нажмёт.

Как связать ссылку с заказом

Ссылка полезна ровно настолько, насколько вы понимаете, за что пришли деньги. Связь держится на вашем order_id, который вы придумываете сами и передаёте при создании платежа.

  1. Создайте запись. В таблице orders: клиент, услуга, сумма, status = pending, ваш номер вроде cons-2026-0431.
  2. Запросите платёж. POST /api/v1/payments с amount: "5800.00", payment_currency: "RUB", order_id и заголовками X-API-Key, X-Nonce (свежий UUID на каждый запрос, живёт 10 минут).
  3. Положите контекст в metadata. Туда удобно класть телеграм клиента и дату записи — объект вернётся в колбэке нетронутым.
  4. Отправьте pay_url. Именно его, а не скриншот страницы.
  5. Ждите событие. По payment.paid с проверенной подписью переводите заказ в оплаченные и подтверждайте клиенту.

Открытая ссылка и даже открытое приложение банка — ещё не оплата: человек мог закрыть экран подтверждения. Поэтому «Спасибо, всё пришло» пишите после колбэка, а не после того, как увидели переход по ссылке.

Повторный запрос с тем же order_id не создаст второй платёж — идемпотентность считается по нему. Это спасает, когда менеджер дважды нажал «Выставить счёт».

Срок действия и повторная отправка

У каждой ссылки есть expires_at. Для переписки разумный срок — от часа до суток: клиент часто читает сообщение не сразу. Для брони места — до времени, когда бронь сгорает. Бессрочные ссылки удобны только на вид: через две недели человек платит по старой цене, а вы получаете спор.

Когда срок вышел, приходит payment.expired. Не молчите в этот момент — напишите клиенту сами: «Счёт на 5 800 ₽ истёк, вот новый». Такое сообщение возвращает часть сделок, которые иначе просто рассыпались бы.

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

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

  • Вы выставляете больше 20–30 счетов в день руками.
  • Продажи идут ночью, а ссылку отправляет живой человек днём.
  • Клиенту нужен самостоятельный выбор тарифа — вы устали пересчитывать пакеты.
  • Появились подписки с ежемесячным списанием.
  • Оплату надо принимать внутри бота или приложения, а не в переписке.

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

Из юридического: ссылка — это только техническая доставка платежа. Статус продавца, налоги и чек остаются на вас. Самозанятый после поступления денег пробивает чек в «Мой налог» и следит за лимитом 2,4 млн ₽ в год; ИП и компания работают по своим правилам. Категорию проекта и доступные способы оплаты подтверждает модерация — заложите на неё день-два.

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

Нужен ли сайт, чтобы отправлять платёжные ссылки?

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

Какой срок действия ставить для счёта в переписке?

От часа до суток: клиент часто читает сообщение не сразу. Для брони места ограничьте срок временем, когда бронь сгорает. Бессрочные ссылки приводят к оплатам по старой цене через две недели и спорам.

Как понять, за какой заказ пришли деньги?

Передавайте свой order_id при создании платежа и храните его в таблице заказов. Он вернётся в колбэке вместе со статусом, а дополнительный контекст вроде контакта клиента удобно класть в metadata. Без такого идентификатора сверка превращается в ручной поиск по выписке.

Клиент не оплатил счёт — сколько раз напоминать?

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

Кто отвечает за чек по оплате из ссылки?

Продавец. Платёжный сервис даёт техническое подключение и подтверждение платежа, а налоги и чек остаются на вас. Самозанятый пробивает чек в «Мой налог» и следит за лимитом 2,4 млн ₽ в год, у ИП и компаний свои правила.

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