Payouts via the Faster Payment System (FPS)
Not available for payouts to the self-employed. If you make payouts to the self-employed, use other payout types (YooMoney wallet or bank card).
When making payouts via FPS, you transfer money to an account registered with an FPS participant (bank or payment service), knowing only the user's phone number and the name of the bank or service.
Payouts via the FPS can be made with or without verification of the recipient. Recipient verification confirms that the account you are transferring money to belongs to the recipient of the payout. More about FPS payouts with recipient verification
Если вы хотите, чтобы в выписках из реестра выплат отображалась информация о получателе выплаты (например, для госорганов), перед проведением выплаты сохраните данные о получателе в ЮKassa и затем передайте идентификатор сохраненных данных в запросе на создание выплаты. Подробнее о передаче данных получателя выплаты для выписок
This article describes the features and general procedure for making payouts via the FPS without recipient verification and without sending the recipient's personal data for an extract.
Payout limits
Restrictions on the amount of payouts:
- the minimum payout amount is 1 ruble;
- the maximum amount of a single payout is 500,000 rubles.
General scenario for making payouts via the FPS
General scenario for making payouts via the FPS
- You request the phone number linked to a bank or payment service in the FPS.
- The user provides you with the phone number.
- You request the list of FPS participants by sending a GET request to YooMoney.
- YooMoney requests the list of participants from the acquirer.
- The acquirer returns the list of participants.
- YooMoney provides the list of FPS participants to you.
- You display the list of participants to the user and ask them to select the bank or payment service that the specified phone number is linked to and the payout should be made to.
- The user selects an FPS participant.
- You create a payout by sending a POST request to YooMoney detailing the amount to be debited from your balance and where to transfer it.
- YooMoney sends an order to the acquirer to transfer money to the payout recipient.
- The acquirer processes the request and reports on the results of the transaction.
- YooMoney returns the payout object with the final status, which is either
succeeded
(payout successful) orcanceled
(payout canceled).
If, in response to a request, YooMoney returns the payout object with the
pending
status, it means the acquirer is still processing the payout order. To find out the final status of the payout, wait for the YooMoney notification or request payout information using the GET method with increasing reasonable intervals (for example, you can use the Fibonacci sequence).Making payouts
To make a payout via the FPS:
- Obtain payout data.
- Make a payout with the received data.
Obtaining payout data
To make a payout, you will need the user's phone number and the ID of the FPS participant that the number is linked to.
Get the phone number using any method convenient for you.
To get the FPS participant ID:
Step 1. Send a request to get the list of FPS participants to YooMoney.
Example of a request for the list of FPS participants
cURL
PHP
Python
curl https://api.yookassa.ru/v3/sbp_banks \ -X GET \ -u <Gateway ID>:<Secret Key> \
The response will contain the list of objects with information about FPS participants .
Example of the list of FPS participants
JSON
{ "type": "list", "items": [ { "bank_id": "100000000111", "name": "Sberbank", "bic": "044525225" } ] }
Step 2. Display the names of the received FPS participants to the user.
Step 3. When the user selects a participant, save the corresponding ID (parameter
bank_id
of the object). It must be sent at the time of payout.Making a payout via the FPS
Create a payout by sending a request to YooMoney with the request authentication data, idempotency key, and data for making a payout via the FPS:
- in the
amount
object, specify the amount to be paid to the user; the amount must be within limits; - in the
description
parameter, provide the description for the payout; - in the
payout_destination_data
object, specify thesbp
payout method, the user's phone number, and the FPS participant ID; - если проводите выплату с передачей данных получателя для выписки из реестра, в массиве
personal_data
передайте идентификатор персональных данных.
Example of a request for creating a payout
cURL
PHP
Python
curl https://api.yookassa.ru/v3/payouts \ -X POST \ -u <Gateway ID>: <Secret Key> \ -H 'Idempotence-Key: <Idempotence Key>' \ -H 'Content-Type: application/json' \ -d '{ "amount": { "value": "2.00", "currency": "RUB" }, "payout_destination_data": { "type": "sbp", "phone": "79000000000", "bank_id": "100000000111" }, "description": "Payout for order No. 37", "metadata": { "order_id": "37" } }'
In response to the request, YooMoney will return the generated payout object .
Example of a created payout object
JSON
{ "id": "po-285ec15d-0003-5000-a000-08d1bec7dade", "amount": { "value": "2.00", "currency": "RUB" }, "status": "pending", "payout_destination": { "type": "sbp", "phone": "79000000000", "bank_id": "100000000111", "recipient_checked": false }, "description": "Payout for order No. 37", "created_at": "2021-06-21T14:28:45.132Z", "metadata": { "order_id": "37" }, "test": false }
If you received a payout with the
pending
status, wait until the status changes to succeeded
or canceled
. Wait for the YooMoney notification or request payout information with an increasing reasonable interval.Example of a request for payout information
cURL
PHP
Python
curl https://api.yookassa.ru/v3/payouts/{payout_id} \ -X GET \ -u <Gateway ID>:<Secret Key> \
Example of the payout object with the succeeded status
JSON
{ "id": "po-285ec15d-0003-5000-a000-08d1bec7dade", "amount": { "value": "2.00", "currency": "RUB" }, "status": "succeeded", "payout_destination": { "type": "sbp", "phone": "79000000000", "bank_id": "100000000111", "recipient_checked": false }, "description": "Payout for order No. 37", "created_at": "2021-06-21T14:28:45.132Z", "metadata": { "order_id": "37" }, "test": false }
See also