Payouts from an escrow account to bank accounts
You can make payouts from an escrow account to bank accounts in the following ways:
This scenario describes how to make a payout to a bank account. Before initiating a payout, identify the beneficiary.
How to enable a webhook to get notified on your escrow account top-ups >
Accounts eligible to receive payouts
You can send payouts only to the accounts that begin with these numbers:
- 40817810
- 42301810
- 42302810
- 42303810
- 42304810
- 42305810
- 42306810
- 42307810
- 40802810
- 40701810
- 40502810
- 40702810 (for legal entities)
Requirements to the payout purpose
In the bank_account.ru.description field, specify the following:
- the transaction type (e.g.
service fee) - the reason for the payment (e.g.
under Agreement No. 123) - the name of the products and/or services provided
- whether or not VAT is applicable
If the organization or individual is not a Russian resident, you will also need to add a currency transaction code in the following format: {VO<currency transaction code>}. The code needs to be agreed beforehand with your Bank 131 manager.
Prohibited characters: ?, !.
The maximum length is 210 characters.
Payout purpose example
- For residents
- For non-residents
Wire for agreement № 5015553111 Ivanov Ivan Ivanovich VAT exempt
{VO99090} Wire for agreement № 5015553456 Ivanov Ivan Ivanovich VAT exempt
Step 1. Create a payment session
Create a session using the session/create/nominal method. You will receive the payment session identifier in response. You will need it in the subsequent steps.
Alternatively, you can use the
session/init/payout/nominalmethod to create a session and a payout at the same time. In this case, specify all the payout parameters with open card data and skip the next step. This option is not recommended.
Request example
curl -X POST \
https://demo.bank131.ru/api/v1/session/create/nominal \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"metadata": "good"
}'
Step 2. Send the payout
Send a session/start/payout/nominal request, specifying the session identifier alongside the payout parameters with open data.
Example of a payout with open data
- For individuals
- For legal entities
curl -X POST \
https:// api/v1/session/start/payout/nominal \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"session_id": "ps_2643",
"payment_method": {
"type": "bank_account",
"bank_account": {
"ru": {
"bik": "044525974",
"account": "40817810400003869535",
"full_name": "Ivanov Ivan Ivanovich",
"description": "Wire for agreement № 5015553111 Ivanov Ivan Ivanovich VAT exempt"
},
"system_type": "ru"
}
},
"amount_details": {
"amount": 300000,
"currency": "rub"
},
"participant_details": {
"sender": {
"account": "40702810300200000013"
},
"recipient": {
"beneficiary_id": "1234567890"
}
}
}'
curl -X POST \
https:// api/v1/session/start/payout/nominal \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"session_id": "ps_2643",
"payment_method": {
"type": "bank_account",
"bank_account": {
"ru": {
"bik": "044525974",
"account": "40702810500000000001",
"full_name": "Vector LLC",
"inn": "1111111111",
"kpp": "156605101",
"description": "Transfer of funds under the agreement for December 2025. VAT exempt"
},
"system_type": "ru"
}
},
"amount_details": {
"amount": 300000,
"currency": "rub"
},
"participant_details": {
"sender": {
"account": "40702810300200000013"
},
"recipient": {
"beneficiary_id": "1234567890"
}
}
}'
Step 3. Wait for a webhook showing that the Bank is ready to perform the payout
Bank 131 will send you a ready_to_confirm webhook. This means that the payout can be performed and the Bank is waiting for you to confirm.
The webhook body will contain the confirm_information object. Save it, as you will need this object to confirm the transaction.
Webhook example
curl -X POST \
https://partner.ru \
-H 'content-type: application/json' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"type": "ready_to_confirm",
"session": {
"id": "ps_2643",
"status": "in_progress",
"created_at": "2025-02-20T08:42:35.905869Z",
"updated_at": "2025-02-20T08:42:36.382627Z",
"payments": [{
"id": "po_513",
"status": "pending",
"created_at": "2025-02-20T08:42:35.965210Z",
"payment_method": {
"type": "bank_account",
"bank_account": {
"system_type": "ru",
"ru": {
"bik": "044525974",
"account": "40702810500000000001",
"full_name": "Vector LLC",
"description": "Transfer of funds under the agreement for December 2025. VAT exempt",
"is_fast": false,
"kpp": "156605101",
"inn": "1111111111"
}
}
},
"amount_details": {
"amount": 300000,
"currency": "RUB"
},
"paymentMetadata": {},
"participant_details": {
"sender": {
"account": "40702810300200000013"
}
},
"payment_options": {
"recurrent": false,
"is_subsequent": false
}
}],
"next_action": "confirm",
"session_metadata": {}
},
"confirm_information": {
"account_details": {
"sender": {
"account_number": "40702810300200000013",
"name": "Company name",
"bank_name": "Bank name",
"bik": "049205131",
"correspondent_account_number": "30101810822029205131",
"inn": "3316004790",
"kpp": "156605101"
},
"recipient": {
"account_number": "40702810500000000001",
"name": "Vector LLC",
"bank_name": "Bank name",
"bik": "044525974",
"correspondent_account_number": "30101810822000000974",
"inn": "1111111111",
"kpp": "156605101"
}
}
}
}'
Step 4. Confirm or cancel the payout
Check the payout details and confirm the payout (session/confirm) passing the confirm_information object. Alternatively, cancel (session/cancel) the payout.
Confirming a payout
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": "40702810300200000013",
"name": "Company name",
"bank_name": "Bank name",
"bik": "049205131",
"correspondent_account_number": "30101810822029205131",
"inn": "3316004790",
"kpp": "156605101"
},
"recipient": {
"account_number": "40702810500000000001",
"name": "Vector LLC",
"bank_name": "Bank name",
"bik": "044525974",
"correspondent_account_number": "30101810822029205974",
"inn": "1111111111",
"kpp": "156605101"
}
}
}
}'
Canceling a payout
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_2643",
"confirm_information": {
"account_details": {
"sender": {
"account_number": "40702810300200000013",
"name": "Company name",
"bank_name": "Bank name",
"bik": "049205131",
"correspondent_account_number": "30101810822029205131",
"inn": "3316004790",
"kpp": "156605101"
},
"recipient": {
"account_number": "40702810500000000001",
"name": "Vector LLC",
"bank_name": "Bank name",
"bik": "044525974",
"correspondent_account_number": "30101810822029205974",
"inn": "1111111111",
"kpp": "156605101"
}
}
}
}'
Step 5. Wait for a webhook with the results of the payout
Bank 131 will send you a payment_finished webhook. The result of the payout can be found in the status field of the payments/payout_list array.
The succeeded status means the payout has been successful. The failed status means the payout has not been completed because of an error.
More about the payout statuses >
How to know if a payout is returned >