Payment Docs
Выплаты

Обзор выплат

Отправка средств с баланса мерчанта на карты, номера телефонов, кошельки и PIX-ключи

Выплаты отправляют средства с баланса мерчанта вашим пользователям. Все направления используют один и тот же endpoint и один и тот же объект выплаты; различаются только валюта, paymentType и поля получателя.

Перед тем как начать

Авторизация

Как подписывать запросы API-токеном.

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

Как это работает

Выберите направление

Каждая пара «страна + оператор» — это отдельный сервис выплат. Список сервисов, подключённых для вашего аккаунта, возвращает запрос:

GET /v1/payouts/services

При создании выплаты передавайте serviceId нужного направления. Если serviceId не указан, используется сервис по умолчанию.

Создайте выплату

Один запрос POST /v1/payouts. В ответе возвращается объект выплаты в статусе CREATED. Сохраните его id.

Отслеживайте результат

При каждом изменении статуса мы отправляем подписанный webhook. Опрос GET /v1/payouts/{payoutId} — резервный способ. Финальный статус обычно приходит в течение нескольких минут.

Направления

Создание выплаты

POST /v1/payouts

Параметры запроса

ПолеТипОбязательноеОписание
amountnumber✅ ДаСумма выплаты
currencystring✅ ДаКод валюты (ISO 4217)
paymentTypestring✅ ДаТип платежа. Допустимые значения зависят от направления
accountobject✅ ДаРеквизиты получателя. Базовые поля приведены ниже; для некоторых направлений нужны дополнительные поля
serviceIdnumber❌ НетСервис направления из GET /v1/payouts/services. Если не указан, используется сервис по умолчанию
notestring❌ НетПроизвольная заметка к выплате
externalIdstring❌ НетID выплаты в вашей системе
callbackUrlstring❌ НетURL для webhook-уведомлений по этой выплате. Если не указан, используется адрес из настроек мерчанта

Объект account

Базовые поля, обязательные для всех направлений:

ПолеТипОбязательноеОписание
namestring✅ ДаИмя получателя
requisitesstring✅ ДаРеквизиты получателя: номер карты, номер телефона, PIX-ключ и т. д. в зависимости от paymentType
userIdstring✅ ДаID пользователя в вашей системе

Некоторые направления требуют дополнительные поля получателя, например userEmail, userPhone, userIp или bankName. Они перечислены на страницах направлений.

Пример запроса

curl -X POST "https://api.riopay.online/v1/payouts" \
  -H "Content-Type: application/json" \
  -H "X-Api-Token: YOUR_API_TOKEN" \
  -d '{
    "amount": 1000.50,
    "currency": "BRL",
    "paymentType": "EMAIL",
    "externalId": "payout-123",
    "callbackUrl": "https://example.com/webhooks/payouts",
    "account": {
      "name": "John Doe",
      "requisites": "john.doe@example.com",
      "userId": "user_12345"
    },
    "note": "Выплата по заказу №1234"
  }'

Ответ

Успешный запрос возвращает объект выплаты. Тот же объект возвращает endpoint проверки статуса.

{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "merchantId": "123e4567-e89b-12d3-a456-426614174000",
  "amount": "1000.50",
  "account": {
    "name": "John Doe",
    "requisites": "4111111111111111",
    "userId": "user_12345"
  },
  "status": "CREATED",
  "type": "C2C",
  "requisites": {},
  "statusMessage": null,
  "metadata": null,
  "callbackUrl": null,
  "createdAt": "2023-03-21T12:34:56Z",
  "updatedAt": "2023-03-21T12:34:56Z",
  "completedAt": null
}

Поля объекта выплаты

ПолеТипОписание
idstring (UUID)ID выплаты. Используйте его для проверки статуса
merchantIdstring (UUID)ID вашего мерчанта
amountstringСумма выплаты
accountobjectРеквизиты получателя, переданные в запросе
statusstringТекущий статус выплаты, см. Статусы выплат
typestringТип платежа
requisitesobjectДополнительные реквизиты
statusMessagestring / nullОписание статуса, если есть
metadataobject / nullДополнительные данные
callbackUrlstring / nullURL для webhook-уведомлений по этой выплате (null — используются настройки мерчанта)
createdAtstringВремя создания (ISO 8601)
updatedAtstringВремя последнего обновления (ISO 8601)
completedAtstring / nullВремя завершения (ISO 8601)

Статусы выплат

СтатусФинальныйОписание
CREATEDНетВыплата создана
PROCESSINGНетВыплата обрабатывается
COMPLETEDУсловноВыплата успешно завершена
FAILEDДаОшибка выплаты
CANCELEDДаВыплата отменена
EXPIREDДаСрок действия выплаты истёк

COMPLETED в штатном режиме финальный. Он меняется только при ручной смене статуса из-за ошибки на стороне банка. Webhook-уведомление о таком изменении автоматически не отправляется: запросите его у вашего менеджера.

CREATED не вызывает отправку webhook; первое уведомление приходит, когда выплата переходит в PROCESSING или в финальный статус.

Проверка статуса выплаты

GET /v1/payouts/{payoutId}
curl -X GET "https://api.riopay.online/v1/payouts/123e4567-e89b-12d3-a456-426614174000" \
  -H "X-Api-Token: YOUR_API_TOKEN"

Используйте webhook-уведомления как основной канал: передайте callbackUrl в запросе или укажите его в настройках мерчанта. Опрашивайте статус по ID только как резервный способ, например каждые 30 минут для выплат, которые ещё не получили финальный статус.

Рекомендации

  • Проверяйте баланс мерчанта перед созданием выплат.
  • Сохраняйте id выплаты из ответа вместе с вашим externalId.
  • Используйте webhook-уведомления (callbackUrl) и проверяйте заголовок X-Signature; опрос по ID — резервный способ.
  • Обрабатывайте все значения статусов, включая финальные неуспешные.
  • Не повторяйте выплату автоматически при FAILED, не проверив причину в statusMessage.

Следующие шаги

На этой странице