Возврат платежей
Вы можете вернуть плательщику деньги по успешному платежу полностью или частично с помощью метода session/refund. Комиссия Банка 131, уплаченная при платеже, не возвращается.
Возврат нельзя отменить. Убедитесь, что это действительно необходимо.
Также плательщик может оспорить платеж через процедуру chargeback. Банк 131 уведомит вас об этом.
При обеих операциях сумма списывается из возмещения.
Записи о refund и chargeback попадают в реестр платежей.
Шаг 1. Отправьте запрос на возврат
Отправьте запрос session/refund, передав в параметре session_id идентификатор платежной сессии, по которой возвращаете деньги.
В параметре amount_details.amount передайте сумму возврата. Если параметр оставить пустым, плательщику вернется вся сумма платежа.
Пример запроса
- cURL
- PHP
curl -X POST \
https://demo.bank131.ru/api/v1/session/refund \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"session_id": "ps_3230"
}'
use Bank131\SDK\API\Request\Builder\RequestBuilderFactory;
use Bank131\SDK\Client;
use Bank131\SDK\Config;
$config = new Config(
'https://demo.bank131.ru',
'your_project_name',
file_get_contents('/path/to/your/private_key.pem')
);
$client = new Client($config);
$request = RequestBuilderFactory::create()
->refundSession('ps_3230')
->build();
$response = $client->session()->refund($request);
Шаг 2. Дождитесь вебхука о результате возврата
Банк 131 отправит вам вебхук payment_refunded. Информация о результате возврата содержится в параметре status массива refunds:
accepted— возврат выполнен успешно;in_progress— возврат в обработке;error— возврат не выполнен из-за ошибки;declined— Банк 131 отклонил возврат.
Пример вебхука
curl -X POST \
https://partner.ru \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"type": "payment_refunded",
"session": {
"id": "ps_3230",
"status": "accepted",
"created_at": "2025-05-27T02:03:00.000000Z",
"updated_at": "2025-05-27T02:03:00.000000Z",
"acquiring_payments": [{
"id": "pm_2705",
"status": "succeeded",
"created_at": "2025-05-27T02:03:00.000000Z",
"finished_at": "2025-05-27T02:03:00.000000Z",
"customer": {
"reference": "lucky"
},
"payment_details": {
"type": "card",
"card": {
"brand": "mir",
"last4": "2058"
}
},
"amount_details": {
"amount": 10000,
"currency": "rub"
},
"amounts": {
"fee": {
"merchant_fee": {
"amount": 100,
"currency": "RUB"
}
}
},
"metadata": "good",
"refunds": [{
"id": "rf_203",
"status": "accepted",
"created_at": "2025-05-27T02:03:00.000000Z",
"finished_at": "2025-05-27T02:03:00.000000Z",
"amount_details": {
"amount": 10000,
"currency": "rub"
},
"amounts": {
"fee": {
"merchant_fee": {
"amount": 0,
"currency": "RUB"
}
}
}
}]
}]
}
}'