tgpay cryptoAPI
crypto-payapitransferspayouts

Справочник API: переводы и чеки

3 мин чтенияОбновлено 22 авг. 2026 г.

Методы выплат. Перевод отправляет средства с баланса приложения прямо в кошелёк пользователя Telegram; чек — это ссылка на получение средств, сумма которой заранее блокируется на вашем балансе. Общие правила (аутентификация, конверт, суммы, spend_id) — на странице Справочник Merchant API.

transfer

POST /pay/api/transfer — право payouts, лимит 30 в минуту. Исполняется мгновенно и атомарно; состояния «в обработке» нет.

ПараметрТипОбязателенЗначение
user_idintegerдаTelegram ID получателя. Получатель должен уже быть пользователем приложения: выплата на неизвестный id завершается ошибкой, средства не зависают
assetstringдакод актива
amountstringдаположительная десятичная строка; также ограничена платформенным минимумом и максимумом на перевод (оценка в долларовом эквиваленте по текущим курсам)
spend_idstringдаключ идемпотентности, 1–64 символа, уникальный для каждой выплаты
commentstringнетдо 1024 символов, показывается получателю
disable_send_notificationbooleanнетtrue — не уведомлять получателя в Telegram

Результат — объект перевода: transfer_id, hash, user_id, asset, amount, amount_minor, spend_id, comment, status (всегда completed), created_at, completed_at.

Ошибки: 404 user_not_found (получатель никогда не пользовался приложением), 409 recipient_blocked, 400 amount_too_small / 400 amount_too_big (за пределами лимитов на перевод), 409 insufficient_funds, 404 unknown_asset, 400 invalid_amount и пара spend_id409 idempotency_conflict / 409 idempotency_in_progress.

transferBatch

POST /pay/api/transferBatch — право payouts, лимит 10 в минуту. Расширение для массовых выплат: до 100 переводов одним вызовом.

Один параметр: items — массив, где каждый элемент — полный набор параметров transfer (user_id, asset, amount, spend_id, необязательные comment и disable_send_notification). spend_id должны быть уникальны внутри пакета, иначе весь вызов сразу отклоняется с 400 duplicate_spend_id и ни один элемент не исполняется.

Элементы исполняются независимо, по порядку — неудавшийся элемент никогда не откатывает остальные. Вызов возвращает HTTP 200 с ok: true, даже когда часть элементов не прошла, поэтому проверяйте каждый:

  • успех: {"ok": true, "spend_id": "…", "result": <объект перевода>}
  • неудача: {"ok": false, "spend_id": "…", "error": {"code": …, "name": "…"}} с теми же именами ошибок, что у одиночного transfer.

У элементов пакета и одиночных переводов общее пространство ключей идемпотентности: повтор всего пакета — или отправка одного элемента отдельным transfer с тем же spend_id — воспроизводит результат, а не платит дважды.

getTransfers

GET /pay/api/getTransfers — право read. Фильтры: asset, transfer_ids (через запятую), spend_id (точное совпадение — так можно найти выплату по своему ключу), плюс offset / count. Возвращает {"items": [перевод, …]}, новые первыми.

createCheck

POST /pay/api/createCheck — право checks, лимит 60 в минуту. Создаёт одноразовый чек за счёт баланса приложения; активировать его может любой, у кого есть ссылка, — или только закреплённый пользователь. Сумма блокируется в момент создания чека (в getBalance она переходит из available в onhold).

ПараметрТипОбязателенЗначение
assetstringдакод актива
amountstringдаположительная десятичная строка
pin_to_user_idintegerнетактивировать чек может только этот Telegram ID
pin_to_usernamestringнетактивировать может только этот @username (@ необязателен; игнорируется, если задан pin_to_user_id). Имя должно принадлежать существующему пользователю приложения
spend_idstringнетключ идемпотентности (расширение) — используйте его

Результат — объект чека: check_id, hash, asset, amount, amount_minor, bot_check_url (ссылка t.me для активации), status (active / activated), pin_to_user_id, created_at, activated_at. Активация отправляет включаемый по желанию вебхук check_activated.

Ошибки: 404 unknown_asset, 400 invalid_amount, 404 user_not_found (закреплённое имя никому не принадлежит), 409 insufficient_funds и пара spend_id.

deleteCheck

POST /pay/api/deleteCheck — право checks. Один параметр: check_id. Отменяет неактивированный чек и возвращает заблокированную сумму на баланс приложения; возвращает true. Ошибки: 404 check_not_found, 409 check_not_active (уже активирован или удалён).

getChecks

GET /pay/api/getChecks — право read. Фильтры: asset, check_ids (через запятую), status (active / activated), плюс offset / count. Возвращает {"items": [чек, …]}, новые первыми; удалённые чеки никогда не возвращаются.