/v1/payout/link · /batch · /list · /info · /cancel
Выплатная ссылка (крипто-чек) — способ отправить средства, не зная адреса получателя. Вы
резервируете сумму (available → payout_held на балансе), получаете одноразовую ссылку
claim_url и передаёте её получателю (можно письмом — поле email). Получатель открывает
страницу, вводит свой адрес — и из резерва рождается обычная выплата.
Невостребованная ссылка возвращает резерв при истечении срока или отмене.
URL: https://api.oblodai.com/v1/payout/link · Аутентификация: обязательна, payout-ключ · Идемпотентность: заголовок Idempotency-Key здесь не действует — дедупликация через поле reference (уникально на мерчанта).
Примеры используют хелпер
call() и переменные $SECRET/$PUBLIC_ID — их определение см. в
Как подписать запрос. Проще не писать подпись руками, а взять
SDK.Статусы ссылки
POST /v1/payout/link
Создаёт одну ссылку. Под row-lock проверяется достаточность зрелого баланса (действует maturity-гейт, как у обычной выплаты).Параметры запроса
string
обязательно
Крипто-актив выплаты (
USDT, BTC, …). Фиат невозможен.string
обязательно
Сеть выплаты получателю (
tron, bitcoin, …).string
обязательно
Сумма в
currency, строкой. Больше нуля.string
Ваш ключ дедупликации, уникальный на мерчанта. Настоятельно рекомендуется: заголовок
Idempotency-Key на этом эндпоинте не действует. См. предупреждение ниже.string
Заголовок — виден получателю на странице получения.
string
Сообщение получателю (видно на странице и в письме).
string
Если задан — получателю уходит письмо с кнопкой «Получить средства» (best-effort: ошибка
доставки не отменяет создание ссылки).
int64
Срок жизни ссылки в часах, клампится в диапазон 1–720 (30 дней).
Пример запроса
Пример ответа
POST /v1/payout/link/batch
До 500 ссылок одним запросом:{"links": [<элементы как в create>, …]}. Каждый элемент
резервируется в своей транзакции — плохой элемент фейлит только себя. Все ссылки вызова получают
общий batch_id.
Ответ (index-aligned)
payoutlink.empty_batch (400), payoutlink.batch_too_large (400, больше 500).
POST /v1/payout/link/list
Запрос:{"limit": 50, "offset": 0} (limit вне 1–200 → 50). Сортировка — новые первыми.
Ответ: {"links": [ … ]} — без claim_token/claim_url.
POST /v1/payout/link/info
Запрос:{"link_id": "<uuid>"}. После claim в ответе появляются payout_id и claim_address.
POST /v1/payout/link/cancel
Запрос:{"link_id": "<uuid>"}. Отменяется только funded-ссылка: резерв возвращается
(payout_held → available), статус — cancelled. Если получатель успел завершить claim
конкурентно, вернётся ссылка со статусом claimed и payout_id — деньги уже ушли, двойного
возврата не бывает.
Коды ошибок
400
Неизвестный крипто-актив. Повтор: Нет — проверьте пару валюта/сеть.
400
Некорректная сумма. Повтор: Нет.
409
Недостаточно доступного баланса. Повтор: Да, после пополнения.
409
Средства ещё дозревают. Повтор: Да, позже с backoff — как у выплат.
400
Пустой массив
links. Повтор: Нет.400
Больше 500 элементов — разбейте на страницы. Повтор: Нет.
400
Некорректный
link_id. Повтор: Нет.404
Ссылка не найдена (или чужая). Повтор: Нет — сверьте
link_id.409
Отменить можно только невостребованную (
funded) ссылку. Повтор: Нет — проверьте статус через /info.503
Функция выключена на шлюзе. Повтор: Нет — обратитесь в поддержку.
Нюансы
- Письмо получателю — брендовый шаблон с кнопкой «Получить средства», текст
noteвключается в письмо. Отправка best-effort: сбой почты не отменяет резерв. - Поллеры: истечение проверяется раз в 60 секунд; «зависший» claim (статус
claimingдольше 15 минут) добирается рипером — либо финализируется вclaimed, либо откатывается вfunded. - Вебхуки: отдельных событий у ссылок нет. Когда получатель забирает средства, порождённая
выплата шлёт обычные
payout.*события; еёorder_id=payoutlink:<link_id>— так вы сопоставите событие со ссылкой. - Баланс: резерв виден как удержание
payout_held;availableуменьшается в момент создания ссылки. См. Модель баланса.