Выплаты P2P
Общее описание
Система Royal Finance предоставляет API для выполнения выплат (payouts) с использованием P2P методов.
Доступные методы
Код (method) |
Описание |
SBP |
СБП |
INTERBANK |
Межбанк |
ACCOUNT_NUMBER |
Номер Счета |
SBER |
Сбер |
TINKOFF |
Тинькофф |
Статусы выплат
Код (status) |
Описание |
pending |
в ожидании |
in_progress |
в процессе |
completed |
конечный статус (завершен) |
wait_confirm |
ожидает подтверждения |
failed_to_send_payout |
не удалось отправить КБ выплату |
canceled |
конечный статус (отменен) |
V3 — Callback-first (без подписи)
POST /api/v3/payouts/
V3 не требует подписи, но требует подтверждения через callback.
🛠 Аутентификация
Для V3 требуется передача токена в заголовке:
| HTTP |
|---|
| Authorization: Token YOUR_PAYOUT_TOKEN
|
Поля тела запроса:
| Поле |
Тип |
Обязательный |
Описание |
method |
string |
✅ |
Метод перевода |
requisite |
string |
✅ |
Реквизиты получателя (например, номер телефона/карты/счета) |
amount |
integer |
✅ |
Сумма выплаты |
bank |
string |
⚠️ |
Обязателен для SBP |
Пример запроса (cURL)
| Bash |
|---|
| curl --location '{{base_url}}/api/v3/payouts/' \
--header 'Authorization: Token YOUR_PAYOUT_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"method": "INTERBANK",
"requisite": "2202206836681893",
"bank": "Tinkoff",
"amount": 5000,
"outter_id": "f506f029-ea0f-4c6a-9d8f-98437de44909",
}'
|
Пример успешного ответа (200 OK)
| JSON |
|---|
| {
"id": 2688,
"bank": "Tinkoff",
"nspk_code": null,
"requisite": "2202206836681893",
"full_name": null,
"method": "Межбанк",
"amount": "5000.00",
"currency": "RU",
"project": null,
"status": "wait_confirm",
"outter_id": null,
"created_at": "2025-05-06T13:30:50.334222+03:00",
"updated_at": "2025-05-06T13:30:50.334236+03:00",
"merchant_rate": "3.00",
"requested_at": 1746527450,
"merchant_payout_detail": {
"id": 1138,
"course": "102.00",
"rate": "3.00",
"amount_in_usdt": "49.0196",
"amount_in_usdt_with_rate": "50.4902",
"created_at": "2025-05-06T13:30:50.343952+03:00",
"updated_at": "2025-05-06T13:30:50.343979+03:00"
}
}
|
Описание полей ответа
| Поле |
Тип |
Описание |
id |
integer |
Внутренний ID выплаты |
bank |
string |
Название банка |
nspk_code |
string / null |
Код НСПК, если применимо |
requisite |
string |
Реквизиты получателя |
full_name |
string / null |
ФИО получателя |
method |
string |
Метод перевода |
amount |
string |
Сумма выплаты |
currency |
string |
Валюта выплаты |
status |
string |
статус |
outter_id |
string / null |
Внешний ID, переданный в запросе |
created_at |
datetime |
Время создания |
updated_at |
datetime |
Время последнего обновления |
merchant_rate |
string |
Комиссия мерчанта (процент) |
requested_at |
integer |
UNIX-время, переданное в запросе |
merchant_payout_detail |
object |
Детали расчета комиссии и конвертации: |
merchant_payout_detail.course |
string |
Курс конвертации |
merchant_payout_detail.amount_in_usdt |
string |
Сумма выплаты до применения комиссии |
merchant_payout_detail.amount_in_usdt_with_rate |
string |
Сумма списания с учетом комиссии |
Возможные ошибки
| Код |
Причина |
Описание ответа |
| 401 |
Ошибка авторизации |
{"detail": "Authentication credentials were not provided."} |
| 403 |
Несоответствие версий API |
{"detail": "API version mismatch. Please switch to 'v1=>v2' or 'v2=>v1' in the URL and try again."} |
| 400 |
Отсутствует поле amount |
{"amount": ["Обязательное поле." ]} |
| 400 |
Неверный тип amount |
{"amount": ["Amount must be an integer" ]} |
| 400 |
Превышен лимит символов |
{"amount": ["Убедитесь, что вы ввели не более 10 цифры." ]} |
| 400 |
Сумма вне допустимого диапазона |
{"amount": ["Amount is outside the allowable range" ]} |
| 400 |
Превышен дневной лимит |
{"amount": ["Exceeds daily payout limit" ]} |
| 400 |
Недостаточно средств |
{"amount": ["Insufficient funds to create a payout" ]} |
| 400 |
Неверный метод выплаты |
{"method": ["'INTERBANKd' is invalid payout method provided." ]} |
| 400 |
Отсутствует bank или nspk_code |
{"bank": ["Either 'bank' or 'nspk_code' must be provided." ]} |
| 400 |
Общая ошибка системы |
{"non_field_errors": ["Currently unable to create a payout. Please contact support for more information." ]} |
| 400 |
Не настроен Webhook URL |
{"non_field_errors": ["Webhook URL is not set. Please contact administrators." ]} |
Преимущества v3:
- ✅ Нет необходимости подписывать запросы
- ✅ Устойчивость к прерыванию соединения
- ✅ Активация происходит только после подтверждения callback’ом от клиента
📣 Чтобы подключить v3:
- Предоставьте callback URL
Callback-процесс (v3)
- Вы отправляете запрос на выплату (POST
/api/v3/payouts/)
- Мы отправляем webhook на ваш URL (запрос на подтверждение)
- Вы возвращаете
200 OK (подтверждение)
- Мы активируем выплату
Если необходимо, предоставим схему интеграции и шаблон callback-хука.