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

Выплата с расчетного счета на банковский счет

Этот сценарий описывает отправку выплаты на банковский счет c расчетного счета. Выплата будет произведена в два списания, одно на сумму платежа, другое на комиссию (если комиссия есть). Эти списания будут отражены в банковской выписке в интернет-банке. API позволяет отправлять выплаты самозанятым, ИП, физическим и юридическим лицам на счета в российских банках. Все параметры передаются в открытом виде.

На какие счета можно отправить

Вы можете отправить выплаты только на счета, которые начинаются с этих цифр:

  • 40817810
  • 42301810
  • 42302810
  • 42303810
  • 42304810
  • 42305810
  • 42306810
  • 42307810
  • 40802810
  • 40702810 (для счетов юридических лиц)
  • 40701810
  • 40502810

Если счет начинается с других цифр, выплата не пройдет.

Шаг 1. Начните выплату

Отправьте запрос на создание платежной сессии c одновременным стартом выплаты session/init/payout/rko.

Параметры

НазваниеОбязательностьТипОписание
payment_method+objectПлатежные данные
  type+stringЗначение: bank_account
  bank_account+objectБанковский счет
    system_type+stringСистема банковских переводов. Всегда: ru
    ru+objectОбъект банковского счета
      bik+stringБИК банка получателя
      account+stringБанковский счет получателя
      full_name+stringФИО физического лица. В случае выплаты на счет ИП, передается в следующем формате: ИП <ФИО>
      inn- (обязательно для выплат на счета юридических лиц или ИП)stringИНН
      kpp- (обязательно для выплат на счета юридических лиц)stringКПП
      description+stringНазначение выплаты. Как сформировать
participant_details+objectИнформация об участниках выплаты
  sender+objectДанные отправителя
    account+stringНомер банковского расчетного счета, с которого будет осуществляться выплата
  recipient+objectДанные получателя
amount_details+objectСумма
  amount+intСумма в копейках. Значение должно быть больше нуля. Чтобы передать 100 рублей, укажите 10000
  currency+stringКод валюты согласно ISO 4217. Регистр не важен. Всегда: rub

Как формировать назначение выплаты

В назначении выплаты (поле bank_account.ru.description) по российским законам необходимо указывать:

  • вид операции (например, оплата услуг),
  • основание платежа (например, договор №),
  • наименование работ, услуг, товаров,
  • облагается НДС или нет.

Если ваша организация зарегистрирована не в России, необходимо добавить код вида валютной операции в следующем формате: {VO<код вида валютной операции>} без отступов и пробелов. Код необходимо согласовать заранее с менеджером в Банке 131.

Назначение выплаты не должно содержать следующие символы: ?, !. Максимальная длина: 210 символов.

Примеры назначения выплаты

Перевод средств по договору № 5015553456 Иванов Иван Иванович НДС не облагается

Примеры запросов для выплат
curl -X POST \\
https://demo.bank131.ru/api/v1/session/init/payout/rko \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-SIGN: signature' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-d '{
"payment_method": {
"type": "bank_account",
"bank_account": {
"ru": {
"bik": "044525974",
"account": "40817810400003869535",
"full_name": "Иванов Иван Иванович",
"description": "Перевод средств по договору № 5015553111 Иванов Иван Иванович НДС не облагается"
},
"system_type": "ru"
}
},
"amount_details": {
"amount": 300,
"currency": "rub"
},
"participant_details": {
"sender": {
"account": "40702810300200000013"
}
}
}'

Шаг 2. Дождитесь уведомления о готовности сделать выплату

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

В ответ следует отдавать HTTP-код 200.

Пример вебхука
curl -X POST \
https://partner.ru \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"type": "ready_to_confirm",
"session": {
"id": "ps_260159",
"status": "in_progress",
"created_at": "2023-01-17T13:41:59.352487Z",
"updated_at": "2023-01-17T13:42:01.657512Z",
"payments": [
{
"id": "po_67428",
"status": "pending",
"created_at": "2023-01-17T13:41:59.594022Z",
"payment_method": {
"type": "bank_account",
"bank_account": {
"system_type": "ru",
"ru": {
"bik": "049205131",
"account": "40702810300000000006",
"full_name": "Наименование организации-получателя",
"description": "Перечисление денежных средств по договору № 1 НС от 01.09.2021 комиссия площадки за декабрь 2022 г. НДС не облагается.",
"is_fast": false
}
}
},
"amount_details": {
"amount": 2700,
"currency": "RUB"
},
"amounts": {
"net": {
"amount": 2700,
"currency": "RUB"
}
}
}
]
}
}

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

Проверьте данные для выплаты и подтвердите, что готовы её провести (с помощью запроса session/confirm) или отмените (отправьте запрос session/cancel). При подтверждении выплаты объект confirm_information является обязательным. Данный запрос является платежным поручением на перевод денежных средств.

Пример запроса session/confirm
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_1048967",
"confirm_information": {
"account_details": {
"sender": {
"account_number": "40702810300200000013",
"name": "Наименование партнера Банка 131",
"bank_name": "Банк 131",
"bik": "049205131",
"correspondent_account_number": "30101810822029205131",
"inn": "3316004790",
"kpp": "156605101"
},
"recipient": {
"account_number": "40702810300000000006",
"name": "Наименование организации-получателя",
"bank_name": "Банк 131",
"bik": "049205131",
"correspondent_account_number": "30101810822029205131"
}
}
}
}'
Пример запроса session/cancel
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_1048967",
"confirm_information": {
"account_details": {
"sender": {
"account_number": "40702810300200000013",
"name": "Наименование партнера Банка 131",
"bank_name": "Банк 131",
"bik": "049205131",
"correspondent_account_number": "30101810822029205131",
"inn": "3316004790",
"kpp": "156605101"
},
"recipient": {
"account_number": "40702810300000000006",
"name": "Наименование организации-получателя",
"bank_name": "Банк 131",
"bik": "049205131",
"correspondent_account_number": "30101810822029205131"
}
}
}
}'

Шаг 4. Дождитесь уведомления о результате выплаты

Банк 131 отправит вам вебхук payment_finished. В теле вебхука придут все данные, с которыми проводилась выплата. Результат выплаты приходит в поле payment.status.

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

Подробнее о статусах выплаты

Возврат выплаты

Выплата, которую вы отправили на счет в российском банке, может вернуться. В этом случае в течение 5 дней вам придет возврат.

Если у вас подключены вебхуки, в случае возврата вы получите вебхук payment_refunded. Если вебхуки у вас отключены, вы можете узнать про возвраты следующими способами:

Тестирование работы выплат

Вы можете протестировать работоспособность выплат с расчетного счета. Для этого в вебхуке ready_to_confirm используйте объект confirm_information. В нем передаются тестовые данные, которые нужно отправить с запросом session/confirm. Они заполняются на сервере и используются только для тестирования.

Для проведения тестирования:

  1. Отправьте запрос на создание платежной сессии.
  2. Проверьте статус платежной сессии.
  3. Дождитесь вебхука.
  4. Отправьте запрос с тестовыми данными.
  5. Проверьте статус платежной сессии.

Объект confirm_information

Объект с тестовыми данным для формирования запроса ready_to_confirm.

НазваниеТипОписание
confirm_informationobjectОбъект для тестирования выплаты
  account_detailsobjectОбъект с информацией о счетах отправителя и получателя
    senderobjectОбъект с тестовой информацией о счете отправителя
      account_numberstringНомер счета отправителя
      namestringИмя отправителя
      bank_namestringНазвание банка отправителя
      bikstringБИК банка отправителя
      correspondent_account_numberstringКорреспондентский счет отправителя
      innstringИНН банка отправителя
      kppstringКПП банка отправителя
    recipientobjectОбъект с тестовой информацией о счете получателя
      account_numberstringНомер счета получателя
      namestringИмя получателя
      bank_namestringНазвание банка получателя
      bikstringБИК банка получателя
      correspondent_account_numberstringКорреспондентский счет получателя
      innstringИНН банка получателя
      kppstringКПП банка получателя

Шаг 1. Создайте платежную сессию c одновременным стартом выплаты

Отправьте запрос session/init/payout/rko с необходимыми данными для инициализации платежной сессии.

Пример создания сессии
curl --location 'https://demo.bank131.ru/api/v1/session/init/payout/rko' \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"payment_method": {
"type": "bank_account",
"bank_account": {
"system_type": "ru",
"ru": {
"bik": "044525974",
"account": "40702810500000000001",
"full_name": "ООО Ромашки",
"inn": "3316004790",
"kpp": "156605101",
"description": "Выплата"
}
}
},
"amount_details": {
"amount": 350,
"currency": "rub"
},
"participant_details": {
"sender": {
"account": "40702810900000000011"
}
}
}'

Шаг 2. Проверьте статус платежной сессии

Проверьте статус созданной платежной сессии в запросе session/status. Если все готово к дальнейшему прохождению транзакции, то вы получите параметр "session.next_action": "confirm" в ответе.

Пример запроса
curl -X GET \
'https://demo.bank131.ru/api/v1/session/status' \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"session_id": "ps_2643"
}'

Шаг 3. Дождитесь вебхука с объектом confirm_information

Дождитесь вебхука ready_to_confirm с объектом confirm_information. Этот объект будет необходим для проведения дальнейшего тестирования.

Пример вебхука
{
"type": "ready_to_confirm",
"session": {
"id": "ps_2643",
"status": "in_progress",
"created_at": "2024-02-20T08:42:35.905869Z",
"updated_at": "2024-02-20T08:42:36.382627Z",
"payments": [
{
"id": "po_513",
"status": "pending",
"created_at": "2024-02-20T08:42:35.965210Z",
"payment_method": {
"type": "bank_account",
"bank_account": {
"system_type": "ru",
"ru": {
"bik": "044525974",
"account": "40702810500000000001",
"full_name": "ООО Ромашки",
"description": "Выплата",
"is_fast": false,
"kpp": "156605101",
"inn": "3316004790"
}
}
},
"amount_details": {
"amount": 350,
"currency": "RUB"
},
"amounts": {
"net": {
"amount": 350,
"currency": "RUB"
},
"gross": {
"amount": 350,
"currency": "RUB"
}
},
"paymentMetadata": {},
"participant_details": {
"sender": {
"account": "40702810900000000011"
}
},
"payment_options": {
"recurrent": false,
"is_subsequent": false
}
}
],
"next_action": "confirm",
"session_metadata": {}
},
"confirm_information": {
"account_details": {
"sender": {
"account_number": "account_number",
"name": "name",
"bank_name": "bank_name",
"bik": "bik",
"correspondent_account_number": "correspondent_account_number",
"inn": "inn",
"kpp": "kpp"
},
"recipient": {
"account_number": "40702810500000000001",
"name": "ООО Ромашки",
"bank_name": "bank_name",
"bik": "bik",
"correspondent_account_number": "correspondent_account_number",
"inn": "3316004790",
"kpp": "156605101"
}
}
}
}'

Шаг 4. Отправьте объект confirm_information для проверки выплат

Скопируйте из полученного ответа объект confirm_information и отправьте его в запросе session/confirm.

Пример запроса
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_2643",
"confirm_information": {
"account_details": {
"sender": {
"account_number": "account_number",
"name": "name",
"bank_name": "bank_name",
"bik": "bik",
"correspondent_account_number": "correspondent_account_number",
"inn": "inn",
"kpp": "kpp"
},
"recipient": {
"account_number": "40702810500000000001",
"name": "ООО Ромашки",
"bank_name": "bank_name",
"bik": "bik",
"correspondent_account_number": "correspondent_account_number",
"inn": "3316004790",
"kpp": "156605101"
}
}
}
}'

Шаг 5. Проверьте статус тестовой платежной сессии

Проверьте статус тестовой платежной сессии в запросе session/status. Если платежная сессия была успешно проведена, то вы получите объект session.action с данными о всех операциях (в рамках одной тестовой сессии) в ответе.

Пример запроса
curl --location 'https://demo.bank131.ru/api/v1/session/status' \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"session_id": "ps_2643"
}'