Рекуррентные платежи через СБП
Наш API позволяет:
- получить токен для рекуррентных платежей через СБП со списанием средств,
- получить токен для рекуррентных платежей через СБП без списания средств.
Как получить токен для рекуррентных платежей со списанием средств
- Создайте платежную сессию
session/create. - Отправьте запрос на проведение платежа с помощью метода
session/start/payment. В параметреpayment_options.recurrentпередайте значениеtrue. - Дождитесь вебхука
ready_to_confirmдля подтверждения проведения оплаты. Если всё в порядке, отправьте в ответ запросsession/confirmдля подтверждения транзакции илиsession/cancelдля отмены транзакции. - Дождитесь вебхука
action_required. В параметреcustomer_interaction.inform.qr.contentпередается диплинк на оплату, который либо можно показать плательщику в виде QR-кода, либо отправить по нему плательщика в приложение эмитента. - Дождитесь от Банка 131 вебхука
payment_finishedс результатом проведения платежа. В случае успеха оплаты в вебхуке будут переданы значенияstatus=accepted(объектsession) иstatus=succeeded(массивpayments/payout_list), а в параметреrecurrent.tokenбудет передан токен для последующих оплат. В случае какой-либо неудачи в вебхуке будут переданы значенияstatus=cancelled(объектsession) иstatus=failed(массивpayments/payout_list), а токен для рекуррентных платежей будет отсутствовать.
Пример вебхука payment_finished
- Успешная транзакция
- Неуспешная транзакция
curl -X POST \
https://partner.ru \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"type": "payment_finished",
"session": {
"id": "ps_713610",
"status": "accepted",
"created_at": "2024-08-08T08:06:51.841432Z",
"updated_at": "2024-08-08T08:14:56.168219Z",
"acquiring_payments": [{
"id": "pm_308906",
"status": "succeeded",
"created_at": "2024-08-08T08:06:51.931193Z",
"finished_at": "2024-08-08T08:14:55.996273Z",
"customer": {
"reference": "user123",
"contacts": [{
"phone": "7123*****45"
}]
},
"payment_details": {
"type": "faster_payment_system"
},
"recurrent": {
"token": "6a6a29c4193a8e1049231e1497a3c5f180e120b20db81b39f53ec478029b53cf",
"created_at": "2024-08-08T10:10:27+03:00",
"finished_at": "2034-08-08T10:10:27+03:00",
"is_active": true,
"type": "recurrent_token"
},
"amount_details": {
"amount": 1000,
"currency": "RUB"
},
"payment_options": {
"recurrent": true
}
}],
"actions": {
"confirm": "2024-08-08T08:06:52.184593Z",
"capture": "2024-08-08T08:14:55.699095Z"
}
}
}'
curl -X POST \
https://partner.ru \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"type": "payment_finished",
"session": {
"id": "ps_1234",
"status": "cancelled",
"created_at": "2022-03-01T11:57:31.652396Z",
"updated_at": "2022-03-01T11:57:31.861329Z",
"acquiring_payments": [{
"id": "pm_5678",
"status": "failed",
"created_at": "2022-03-01T11:57:31.895773Z",
"finished_at": "2022-03-01T11:57:31.895773Z",
"customer": {
"reference": "user123"
},
"payment_details": {
"type": "faster_payment_system"
},
"amount_details": {
"amount": 229600,
"currency": "RUB"
},
"error": {
"description": "QR expired",
"code": "qr_expired"
},
"payment_options": {
"return_url": "https://131.ru",
"recurrent": false
}
}],
"error": {
"description": "Session cancelled",
"code": "session_cancelled"
},
"actions": {
"confirm": "2022-03-01T11:57:31.895773Z"
}
}
}'
Схема привязки счета к СБП

Как получить токен для рекуррентных платежей без списания средств
Чтобы получить токен для рекуррентных платежей без списания средств, необходимо пройти все стандартные шаги по проведению платежа через СБП.
При создании запроса session/start/payment или session/init/payment укажите "type": "faster_payment_system_binding" и "recurrent": true.
В объекте amount_details укажите 1 рубль (сумма не будет списана).
В вебхуке payment_finished вернется токен для совершения рекуррентных платежей.
Пример запроса
curl -X POST \
https://demo.bank131.ru/api/v1/session/init/payment \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"payment_details": {
"type": "faster_payment_system_binding"
},
"amount_details": {
"amount": 100,
"currency": "rub"
},
"customer": {
"reference": "lucky"
},
"payment_options": {
"recurrent": true
}
}'
Получив токен, принимайте рекуррентные платежи стандартным образом.
Пример запроса
curl -X POST \
https://demo.bank131.ru/api/v1/session/init/payment \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"payment_details": {
"type": "recurrent",
"recurrent": {
"token": "e9876f32bcd947f79c324cf2da5726304a894f6ae2037de7705fdb3e0a134d39"
}
},
"amount_details": {
"amount": 10000,
"currency": "rub"
},
"customer": {
"reference": "lucky"
}
}'
Как создать несколько привязок СБП для одного плательщика и банка
При каждом повторном создании привязки СБП для одного плательщика и одного банка-эмитента на стороне банка может отображаться сообщение: «Вы уже привязали счет». Это вводит плательщика в заблуждение: он не может однозначно понять, была ли создана новая привязка на самом деле.
Чтобы обеспечить корректное создание неограниченного количества уникальных привязок и избежать описанной выше неоднозначности, необходимо передавать в запросе дополнительный объект subscription_service_info, содержащий идентификатор и название привязки.
Чтобы включить данную функциональность, обратитесь к вашему менеджеру в Банке 131.
Пример запроса
curl -X POST \
https://demo.bank131.ru/api/v1/session/init/payment \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"payment_details": {
"type": "faster_payment_system",
"faster_payment_system": {
"subscription_service_info": {
"id": "54f731a9f86b46188b7961cb933fb3ff", // идентификатор привязки
"name": "subscription2" // название привязки
}
}
},
"amount_details": {
"amount": 1000,
"currency": "rub"
},
"customer": {
"reference": "lucky"
},
"payment_options": {
"recurrent": true
}
}'