Перейти к основному содержимому

Выплаты с расчетного счета с виджетом или по токену

Вы можете делать выплаты с расчетного счета на банковские карты, используя токен или хеш вместо номера карты. Получить токен/хеш можно следующим образом:

От того, какой способ вы выберите, зависит объем требований PCI DSS, которые необходимо соблюдать.

Шаг 1. Получите публичный токен

Публичный токен нужен, чтобы подключить виджет. Отправьте запрос Банку 131 на создание токена (token), передав в нем тип виджета tokenize_widget. В ответе вы получите публичный токен.

Пример получения публичного токена
curl -X POST \
http://demo.bank131.ru/api/v1/token \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"tokenize_widget": {
"access": true
}
}'

Шаг 2. Инициализируйте виджет на сайте

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

После этого получатель выплаты сможет ввести свой номер банковской карты в форму сбора данных.

Шаг 3. Создайте платежную сессию

Отправьте запрос на создание платежной сессии session/multi/create/rko. В ответе вы получите идентификатор сессии. Этот идентификатор используется во всех последующих методах.

Вы можете создать сессию и выплату одновременно (session/multi/init/payment/rko). В этом случае сразу передайте параметры выплаты с хешем, полученным из виджета, и пропустите следующий шаг. Не рекомендуем использовать этот способ.

Пример создания платежной сессии
curl -X POST \
https://demo.bank131.ru/api/v1/session/multi/create/rko \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"metadata": "good"
}'

Шаг 4. Отправьте выплату

Выполните запрос session/multi/start/payment/rko, передав идентификатор сессии и параметры выплаты с хешем, полученным из виджета.

к сведению

Вы можете проверить данные хеша или карты с помощью метода token/info. Например, можно узнать последние 4 цифры номера карты, чтобы показать получателю, на какую именно карту придет выплата.

Пример выплаты с виджетом
curl -X POST \
https://demo.bank131.ru/api/v1/session/multi/start/payment/rko \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"session_id": "ps_3230",
"payment_details": {
"type": "internal_transfer",
"internal_transfer": {
"type": "transfer_from_bank_account",
"transfer_from_bank_account": {
"description": "Перевод согласно оферте"
}
}
},
"payment_method": {
"type": "card",
"card": {
"type": "encrypted_card",
"encrypted_card": {
"number_hash": "63191fa17cc7edf818ee5d6611a2c2169ab30b705111cffd710af39880deef09"
}
}
},
"participant_details": {
"sender": {
"full_name": "ООО Вектор"
},
"recipient": {
"full_name": "Иванов Иван Иванович"
}
},
"amount_details": {
"amount": 10000,
"currency": "rub"
},
"customer": {
"reference": "123456789012"
}
}'

Шаг 5. Дождитесь вебхука о готовности выплаты

Банк 131 отправит вам вебхук ready_to_confirm о готовности провести выплату и ожидании вашего подтверждения или отмены.

В теле вебхука найдите объект confirm_information и сохраните его — эти данные нужно будет передать для подтверждения или отмены выплаты.

Пример вебхука о готовности выплаты
curl -X POST \
https://partner.ru \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"type": "ready_to_confirm",
"session": {
"id": "ps_3230",
"status": "in_progress",
"created_at": "2025-05-27T02:03:00.109901Z",
"updated_at": "2025-05-27T02:03:00.987002Z",
"payments": [{
"id": "po_7639847",
"status": "pending",
"created_at": "2025-05-27T02:03:00.456003Z",
"customer": {
"reference": "123456789012"
},
"payment_method": {
"type": "card",
"card": {
"last4": "8371",
"brand": "mastercard",
"country_iso3": "RUS"
}
},
"participant_details": {
"sender": {
"full_name": "ООО Вектор",
},
"recipient": {
"full_name": "Иванов Иван Иванович"
}
}
}],
"acquiring_payments": [{
"id": "pm_6933973",
"status": "pending",
"created_at": "2025-05-14T09:32:20.099952Z",
"customer": {
"reference": "123456789012"
},
"payment_details": {
"type": "internal_transfer",
"internal_transfer": {
"type": "transfer_from_bank_account",
"transfer_from_bank_account": {
"description": "Перевод согласно оферте",
"card_mask": "553691******8371"
}
}
},
"amount_details": {
"amount": 10000,
"currency": "rub"
},
"participant_details": {
"sender": {
"full_name": "ООО Вектор",
},
"recipient": {
"full_name": "Иванов Иван Иванович"
}
}
}],
"next_action": "confirm"
},
"confirm_information": {
"transfer_details": {
"payment_method": {
"type": "card",
"card": {
"brand": "mastercard",
"last4": "8371",
"country_iso3": "RUS"
}
},
"customer": {
"account_number": "40702810700200000000",
"name": "ООО Вектор",
"bank_name": "Банк 131",
"bik": "049205131",
"correspondent_account_number": "30101810822000000000"
},
"recipient": {
"account_number": "30233810000000000000",
"name": "Иванов Иван Иванович",
"bank_name": "Банк 131",
"bik": "049205123",
"correspondent_account_number": "30101810822000000974"
},
"purpose": "Перевод согласно оферте",
"amount": {
"amount": 10000,
"currency": "rub"
}
}
}
}'

Шаг 6. Подтвердите или отмените выплату

Проверьте данные и подтвердите (session/confirm) или отмените (session/cancel) выплату, передав объект confirm_information.

Пример с подтверждением выплаты
curl -X POST \
https://demo.bank131.ru/api/v1/session/confirm \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"session_id": "ps_3230",
"confirm_information": {
"transfer_details": {
"payment_method": {
"type": "card",
"card": {
"brand": "mastercard",
"last4": "8371",
"country_iso3": "RUS"
}
},
"customer": {
"account_number": "40702810700200000000",
"name": "ООО Вектор",
"bank_name": "Банк 131",
"bik": "049205131",
"correspondent_account_number": "30101810822000000000"
},
"recipient": {
"account_number": "30233810000000000000",
"name": "Иванов Иван Иванович",
"bank_name": "Банк 131",
"bik": "049205123",
"correspondent_account_number": "30101810822000000974"
},
"purpose": "Перевод согласно оферте",
"amount": {
"amount": 10000,
"currency": "rub"
}
}
}
}'
Пример с отменой выплаты
curl -X POST \
https://demo.bank131.ru/api/v1/session/cancel \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"session_id": "ps_3230",
"confirm_information": {
"transfer_details": {
"payment_method": {
"type": "card",
"card": {
"brand": "mastercard",
"last4": "8371",
"country_iso3": "RUS"
}
},
"customer": {
"account_number": "40702810700200000000",
"name": "ООО Вектор",
"bank_name": "Банк 131",
"bik": "049205131",
"correspondent_account_number": "30101810822000000000"
},
"recipient": {
"account_number": "30233810000000000000",
"name": "Иванов Иван Иванович",
"bank_name": "Банк 131",
"bik": "049205123",
"correspondent_account_number": "30101810822000000974"
},
"purpose": "Перевод согласно оферте",
"amount": {
"amount": 10000,
"currency": "rub"
}
}
}
}'

Шаг 7. Дождитесь вебхука о результате выплаты

Банк 131 отправит вам вебхук payment_finished. Информация о результате выплаты содержится в параметре status объекта payments/payout_list.

Статус succeeded означает, что выплата прошла успешно. Если статус failed — выплата не прошла из-за ошибки.

Какие бывают статусы выплаты >

Посмотреть коды ошибок >