POST /api/agent-paymentsСоздаёт заказ в эквайринге и возвращает ссылку для оплаты клиентом.
Авторизация
Используйте Basic Authentication агента.
Параметры тела запроса
Передавайте
Content-Type: application/json. Ограничение тела JSON — 32 КБ.
Неизвестные поля отклоняются на верхнем уровне и внутри recipient и reportData.| Поле | Тип/формат | Обязательно | Описание |
|---|---|---|---|
merchantUserName | Строка, 1–2000 символов | Да | Имя назначенного мерчанта, не логин агента. |
agentOrderId | Строка, 1–2000 символов | Да | Номер заказа в вашей системе. |
amount | Положительная десятичная строка | Да | Сумма получателю в рублях, без комиссий. Не более двух знаков после точки. |
recipient | Объект | Да | Реквизиты получателя; см. ниже. |
purpose | Строка, 1–2000 символов | Да | Назначение платежа получателю. |
successUrl | Абсолютный URL, 1–2000 символов | Да | Адрес возврата клиента после успешной оплаты. |
failureUrl | Абсолютный URL, 1–2000 символов | Да | Адрес возврата клиента после неуспешной оплаты. |
billingAccount | Строка, 1–255 символов | Нет | Лицевой счёт. |
reportData | Объект или null | Нет | Дополнительные данные плательщика для отчёта; см. ниже. |
Получатель
| Поле | Тип/формат | Обязательно | Описание |
|---|---|---|---|
name | Строка, 1–2000 символов | Да | Наименование получателя. |
tin | Строка, 10 или 12 цифр | Да | ИНН получателя. |
bic | Строка, 9 цифр | Да | БИК банка получателя. |
bankAccount | Строка, 20 цифр | Да | Расчётный счёт получателя. |
territoryCode | Строка, 8 цифр | Нет | Код территории получателя. |
iec | Строка, 1–2000 символов | Нет | КПП получателя. |
bankName | Строка, 1–2000 символов | Нет | Наименование банка получателя. |
offsettingAccount | Строка, 1–2000 символов | Нет | Корреспондентский счёт банка. |
Передавайте идентификаторы и номера счетов строками, сохраняя ведущие нули.
Переданные строки должны быть непустыми и без пробелов по краям.
Данные отчёта
| Поле | Тип/формат | Обязательно | Описание |
|---|---|---|---|
payerName | Строка, 1–2000 символов | Нет | ФИО или наименование плательщика. |
address | Строка, 1–2000 символов | Нет | Адрес плательщика. |
period | Строка, YYYY-MM | Нет | Расчётный период; месяц от 01 до 12, например 2026-10. |
Адреса возврата
Используйте абсолютные URL. Поддерживаются HTTP(S) и deep link, например
myapp://payments/success.
Относительные URL, пробелы по краям, некорректное URL-кодирование и адреса, содержащие javascript:
(в том числе в закодированном виде), отклоняются. Допустимые URL передаются в эквайринг без изменений;
эквайринг может предъявлять дополнительные требования.Внимание: Адреса возврата перенаправляют клиента; это не серверные уведомления и не подтверждение оплаты.
Пример запроса
Примеры иллюстративные. Используйте учётные данные, мерчанта и реквизиты, согласованные при подключении.
Сохраните тело в файл
agent-payment.json:json{ "merchantUserName": "agent-merchant", "agentOrderId": "order-2026-001", "amount": "100.00", "recipient": { "name": "Пример получателя", "tin": "9731062087", "bic": "046577674", "bankAccount": "40702810516540077181", "territoryCode": "12345678" }, "purpose": "Оплата услуг по заказу order-2026-001", "billingAccount": "000123", "reportData": { "payerName": "Пример плательщика", "address": "Пример адреса для отчёта", "period": "2026-10" }, "successUrl": "https://agent.example/payments/success", "failureUrl": "https://agent.example/payments/failure" }
Настройте переменные окружения для авторизации и выполните:
bashcurl --request POST \ --url "${RB_API_BASE_URL%/}/api/agent-payments" \ --user "${AGENT_USERNAME}:${AGENT_PASSWORD}" \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --data-binary @agent-payment.json
Ответ
Успешная регистрация возвращает HTTP 201 и JSON-объект:
| Поле | Тип/формат | Описание |
|---|---|---|
id | Строка, UUID | Идентификатор платежа для проверки статуса. |
orderId | Строка | Идентификатор заказа в эквайринге. |
paymentUrl | Строка, URL | Ссылка для оплаты клиентом. |
amount | Десятичная строка | Исходная сумма получателю в рублях. |
modifiedAmount | Десятичная строка | Полная сумма к оплате клиентом в рублях, включая комиссии. |
json{ "id": "d325725f-6c73-4dab-910f-88e3274b66d7", "orderId": "7a0eb568-4d20-4a2a-8d20-b7e79201e05d", "paymentUrl": "https://acquiring.example/payment/demo-order", "amount": "100.00", "modifiedAmount": "101.78" }
Сохраните ответ вместе со своим
agentOrderId до перенаправления клиента на paymentUrl.
Метод проверки статуса не возвращает ссылку на оплату.Суммы и комиссии
Передавайте рубли положительной десятичной строкой, например
"100.00" или "0.01".Сервис добавляет доплату по тарифу мерчанта; не рассчитывайте и не добавляйте комиссии к
amount самостоятельно.
В примере ответа получателю предназначено 100 рублей, а клиент оплачивает 101,78 рубля.
Фактические комиссии зависят от тарифа мерчанта, который фиксируется для платежа при регистрации.Коды ошибок
Ошибки используют общий формат.
| HTTP | extensions.code | extensions.type | Причина и действие |
|---|---|---|---|
| 400 | BAD_USER_INPUT | INVALID_AGENT_PAYMENT_REQUEST | Неверные поля или реквизиты. Исправьте запрос. |
| 400 | BAD_USER_INPUT | INVALID_REQUEST_BODY | Неверный JSON или неподдерживаемый формат/кодирование. Проверьте тело и Content-Type. |
| 401 | UNAUTHENTICATED | AUTHORIZATION_REQUIRED | Проверьте учётные данные и включён ли агент. |
| 413 | PAYLOAD_TOO_LARGE | INVALID_REQUEST_BODY | Тело больше 32 КБ. Уменьшите запрос. |
| 500 | INTERNAL_ERROR | REGISTRATION_FAILED | Ошибка регистрации, настройки мерчанта или эквайринга. Не повторяйте автоматически. |
| 500 | INTERNAL_ERROR | INTERNAL_SERVER_ERROR | Непредвиденная ошибка сервиса. Не повторяйте автоматически; обратитесь в поддержку. |
Повторные запросы и неопределённый результат
Внимание: POST не идемпотентен. Повтор с тем жеagentOrderIdможет создать ещё один заказ в эквайринге и ещё одну попытку платежа.
После успешного создания используйте сохранённую ссылку и проверяйте статус существующего платежа.
Тайм-аут, сетевая ошибка, HTTP 500 или ответ шлюза не в формате JSON-ошибок не доказывают, что регистрация
не состоялась. Не повторяйте POST автоматически.
Если известен
id платежа — запросите статус. Иначе обратитесь в поддержку с merchantUserName,
agentOrderId, суммой, временем запроса и доступными идентификаторами ошибки и запроса.
Поиска по agentOrderId нет. Не передавайте учётные данные. Новый платёж не отменяет предыдущую попытку.