Skip to main content
Создать много счетов одним запросом — до 5000 штук. Обрабатывается асинхронно: в ответ сразу приходит batch_id, а результат по каждому элементу забирается через POST /v1/batch/info.
Это штатный способ не упираться в rate limit. Один подписанный запрос вместо 5000 — лимит частоты считается по запросам, а не по элементам внутри них. Если вам нужно выставить тысячу счетов, делайте это батчем, а не тысячей вызовов POST /v1/payment.
URL: https://api.oblodai.com/v1/payment/batch · Аутентификация: обязательна · Идемпотентность: заголовок Idempotency-Key (на весь батч) + order_id каждого элемента.
Примеры используют хелпер call() и переменные $SECRET/$PUBLIC_ID — их определение см. в Как подписать запрос. Проще не писать подпись руками, а взять SDK.

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

array
обязательно
Массив от 1 до 5000 элементов. Поля каждого элемента — ровно те же, что у POST /v1/payment.
string
по умолчанию:"continue"
Что делать при ошибке элемента: continue (по умолчанию) — обрабатывать остальные; stop — прекратить обработку после первой ошибки.
Каждый элемент проходит тот же путь создания, что и одиночный POST /v1/payment: те же проверки, та же комиссия, та же идемпотентность по order_id. Задавайте order_id элементам — по нему потом удобно сопоставлять результаты, и он же защищает от дублей при повторной отправке батча.

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


Пример ответа

string
Идентификатор батча. С ним идите в POST /v1/batch/info.
string
Вид батча — здесь всегда payment.
int64
Сколько элементов принято в обработку.
string
Стартовый статус — всегда pending.
Счетов в ответе нет. Ответ подтверждает только приём батча в очередь. Сами счета (их uuid, address, url) появятся в items[].result ответа /v1/batch/info по мере обработки.

Статусы батча

pendingprocessingcompleted.
completed — это «обработка закончена», а НЕ «всё успешно». Батч, где часть счетов не создалась, тоже приходит в completed. Смотрите на succeeded / failed и на items[].error в ответе /v1/batch/info.

Коды ошибок

Ошибки отдельных элементов сюда не попадают: батч принимается целиком, а ошибка конкретного счёта приходит в items[].error ответа /v1/batch/info.

Нюансы

  • Асинхронность. Ответ приходит мгновенно, до фактического создания счетов. Не считайте счета созданными по ответу на submit — поллите /v1/batch/info.
  • Цена элемента может быть в фиате. В одном батче спокойно уживаются счета с ценой в RUB, EUR, USD и в монетах — правила те же, что у одиночного POST /v1/payment.
  • on_error: "stop". После первой ошибки остальные элементы не обрабатываются: они получают status: "error" с сообщением "skipped: batch stopped after an earlier failure" и попадают в счётчик failed. Разберитесь с причиной и отправьте остаток новым батчем.
  • Идемпотентность двухуровневая. Заголовок Idempotency-Key защищает от повторной отправки всего батча; order_id внутри элемента — от дубля конкретного счёта.
  • Лимит частоты. Батч — это один запрос в бюджете rate limit, сколько бы элементов в нём ни было.

Связанные страницы

POST /v1/batch/info

поллинг статуса и результатов.

POST /v1/payment

поля элемента.

POST /v1/refund/batch

POST /v1/payout/batch

Ограничение частоты

Идемпотентность