Skip to main content
Методы: /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 дней).
Задавайте expires_in_hours явно. Если поле не передано (или передан 0), ссылка живёт всего 1 час — значение приводится к нижней границе диапазона, а не к максимуму.
Повтор с тем же reference сейчас возвращает 500, а не повтор ответа: уникальный индекс срабатывает без graceful-реплея. Не ретрайте создание вслепую — сначала проверьте /v1/payout/link/list, появилась ли ссылка. В батче дубликат фейлит только свой элемент.

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

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

claim_token и claim_url возвращаются только здесь, один раз. Токен хранится у нас лишь хешем (SHA-256) — восстановить ссылку потом невозможно. Сохраните claim_url сразу.

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 — деньги уже ушли, двойного возврата не бывает.

Коды ошибок

Неизвестный крипто-актив. Повтор: Нет — проверьте пару валюта/сеть.
Некорректная сумма. Повтор: Нет.
Недостаточно доступного баланса. Повтор: Да, после пополнения.
Средства ещё дозревают. Повтор: Да, позже с backoff — как у выплат.
Пустой массив links. Повтор: Нет.
Больше 500 элементов — разбейте на страницы. Повтор: Нет.
Некорректный link_id. Повтор: Нет.
Ссылка не найдена (или чужая). Повтор: Нет — сверьте link_id.
Отменить можно только невостребованную (funded) ссылку. Повтор: Нет — проверьте статус через /info.
Функция выключена на шлюзе. Повтор: Нет — обратитесь в поддержку.

Нюансы

  • Письмо получателю — брендовый шаблон с кнопкой «Получить средства», текст note включается в письмо. Отправка best-effort: сбой почты не отменяет резерв.
  • Поллеры: истечение проверяется раз в 60 секунд; «зависший» claim (статус claiming дольше 15 минут) добирается рипером — либо финализируется в claimed, либо откатывается в funded.
  • Вебхуки: отдельных событий у ссылок нет. Когда получатель забирает средства, порождённая выплата шлёт обычные payout.* события; её order_id = payoutlink:<link_id> — так вы сопоставите событие со ссылкой.
  • Баланс: резерв виден как удержание payout_held; available уменьшается в момент создания ссылки. См. Модель баланса.

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

Публичное получение по ссылке

Гайд: крипто-чеки

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

Объект Payout