При выплатах через СБП вы переводите деньги на счет в системе участника СБП (банка или платежного сервиса), зная только номер телефона пользователя и название банка или сервиса.
Выплаты через СБП можно делать с проверкой получателя и без. Проверка получателя — это проверка того, что счет, на который вы переводите деньги, принадлежит получателю выплаты. Подробнее о выплатах через СБП с проверкой получателя
В этой статье описаны особенности и общий порядок проведения выплат через СБП без проверки получателя.
Ограничения на размер выплат:
- минимальная сумма выплаты — 1 рубль;
- максимальная сумма разовой выплаты — 500 000 рублей.
Общий сценарий проведения выплат через СБП
- Вы запрашиваете у пользователя номер телефона, который привязан к банку или платежному сервису в СБП.
- Пользователь сообщает вам номер телефона.
- Вы запрашиваете список участников СБП — отправляете ЮKassa GET-запрос.
- ЮKassa запрашивает список участников у эквайера.
- Эквайер возвращает список участников.
- ЮKassa возвращает вам список участников СБП.
- Вы отображаете пользователю список участников и просите выбрать тот банк или платежный сервис, к которому привязан указанный номер телефона и в который нужно перевести выплату.
- Пользователь выбирает участника СБП.
- Вы создаете выплату — отправляете ЮKassa POST-запрос с данными о том, какую сумму списать с вашего баланса и куда ее перевести.
- ЮKassa отправляет эквайеру распоряжение на перевод денег получателю выплаты.
- Эквайер обрабатывает запрос и сообщает результат выполнения операции.
- ЮKassa возвращает вам объект выплаты с финальным статусом —
succeeded
(выплата успешна) илиcanceled
(выплата отменена).
Если в ответ на запрос ЮKassa вернула вам объект выплаты в статусе
pending
, это значит, что эквайер еще обрабатывает распоряжение на перевод. Чтобы узнать финальный статус, повторяйте запрос на проведение выплаты с тем же ключом идемпотентности или запрашивайте информацию о выплате методом GET с возрастающим разумным интервалом (например, можно использовать последовательность Фибоначчи).Чтобы сделать выплату через СБП:
- Получите данные для выплаты.
- Проведите выплату с полученными данными.
Для проведения выплаты вам понадобятся номер телефона пользователя и идентификатор участника СБП, к которому этот телефон привязан.
Номер телефона получите любым удобным вам способом.
Чтобы получить идентификатор участника СБП:
Шаг 1. Отправьте ЮKassa запрос на получение списка участников СБП .
Пример запроса на получение списка участников СБП
curl https://api.yookassa.ru/v3/sbp_banks \ -X GET \ -u <Идентификатор шлюза>:<Секретный ключ> \
В ответ вернется список объектов с информацией об участниках СБП .
Пример списка участников СБП
{ "type": "list", "items": [ { "bank_id": "100000000111", "name": "СберБанк", "bic": "044525225" } ] }
Шаг 2. Отобразите пользователю названия полученных участников СБП.
Шаг 3. Когда пользователь выберет участника, сохраните соответствующий ему идентификатор (параметр
bank_id
объекта). Его нужно передать при проведении выплаты.Создайте выплату
: отправьте ЮKassa запрос с данными для аутентификации запроса, ключом идемпотентности и данными для выплаты через СБП:
- в объекте
amount
передайте сумму, которую нужно выплатить пользователю; сумма должна укладываться в лимиты; - в параметре
description
передайте описание выплаты; - в объекте
payout_destination_data
передайте способ получения выплатыsbp
, номер телефона пользователя и идентификатор участника СБП.
Пример запроса на создание выплаты
curl https://api.yookassa.ru/v3/payouts \ -X POST \ -u <Идентификатор шлюза>: <Секретный ключ> \ -H 'Idempotence-Key: <Ключ идемпотентности>' \ -H 'Content-Type: application/json' \ -d '{ "amount": { "value": "2.00", "currency": "RUB" }, "payout_destination_data": { "type": "sbp", "phone": "79000000000", "bank_id": "100000000111" } }, "description": "Выплата по заказу № 37", "metadata": { "order_id": "37" } }'
В ответ на запрос ЮKassa вернет созданный объект выплаты .
Пример созданного объекта выплаты
{ "id": "po-285ec15d-0003-5000-a000-08d1bec7dade", "amount": { "value": "2.00", "currency": "RUB" }, "status": "pending", "payout_destination": { "type": "sbp", "phone": "79000000000", "bank_id": "100000000111", "recipient_checked": false }, "description": "Выплата по заказу №37", "created_at": "2021-06-21T14:28:45.132Z", "metadata": { "order_id": "37" }, "test": false }
Если вы получили объект выплаты в статусе
pending
, дождитесь, когда статус изменится на succeeded
или canceled
. Для этого повторяйте запрос с тем же ключом идемпотентности или запрашивайте информацию о выплате методом GET с возрастающим разумным интервалом.Пример запроса на получение информации о выплате
curl https://api.yookassa.ru/v3/payouts/{payout_id} \ -X GET \ -u <Идентификатор шлюза>:<Секретный ключ> \
Пример объекта выплаты в статусе succeeded
{ "id": "po-285ec15d-0003-5000-a000-08d1bec7dade", "amount": { "value": "800.00", "currency": "RUB" }, "status": "succeeded", "payout_destination": { "type": "sbp", "phone": "79000000000", "bank_id": "100000000111", "recipient_checked": false }, "description": "Выплата по заказу №37", "created_at": "2021-06-21T14:28:45.132Z", "metadata": { "order_id": "37" }, "test": false }
Выплаты с проверкой получателяНеуспешные выплатыКоды ответа (состояния) HTTPЗапрос баланса выплат