YooMoney API
Guides
Old versions of the API
Help
Sign up for YooMoney
Payouts via the Faster Payment System (FPS)
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
This article describes the features and general procedure for making payouts via the FPS without recipient verification.
 
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
  1. You request the phone number linked to a bank or payment service in the FPS.
  2. The user provides you with the phone number.
  3. You request the list of FPS participants by sending a GET request to YooMoney.
  4. YooMoney requests the list of participants from the acquirer.
  5. The acquirer returns the list of participants.
  6. YooMoney provides the list of FPS participants to you.
  7. 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.
  8. The user selects an FPS participant.
  9. 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.
  10. YooMoney sends an order to the acquirer to transfer money to the payout recipient.
  11. The acquirer processes the request and reports on the results of the transaction.
  12. YooMoney returns the payout object with the final status, which is either succeeded (payout successful) or canceled (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:
  1. Obtain payout data.
  2. 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 the sbp payout method, the user's phone number, and the FPS participant ID.
Example of a request for creating a payout
cURL
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
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": "800.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