tgpay cryptoAPI
crypto-payapitransferspayouts

API 参考:转账和红包

阅读约 1 分钟最后更新: 2026年8月22日

打款相关的方法。转账把资金从您的应用余额直接送进某位 Telegram 用户的钱包;红包是一条 您先出钱、别人来领的链接。通用约定(鉴权、外层结构、金额、spend_id)见 商户 API 参考页面。

transfer

POST /pay/api/transfer——权限范围 payouts,每分钟 30 次。瞬间原子结清;没有中间态。

参数类型必填含义
user_idinteger收款人的 Telegram 用户 ID。收款人必须已经是本应用的用户——打给一个不存在的 ID 会报错,而不是让资金卡在中途
assetstring币种代码
amountstring正的小数字符串;同时受平台每笔转账的上下限约束(按当前行情折算成美元等值来估)
spend_idstring幂等键,1–64 个字符,每笔打款唯一
commentstring最多 1024 个字符,显示给收款人
disable_send_notificationbooleantrue = 不在 Telegram 里通知收款人

返回的是转账对象transfer_idhashuser_idassetamountamount_minorspend_idcommentstatus(永远是 completed)、created_atcompleted_at

错误:404 user_not_found(收款人从没用过这个应用)、409 recipient_blocked400 amount_too_small / 400 amount_too_big(超出每笔转账的上下限)、 409 insufficient_funds404 unknown_asset400 invalid_amount,以及 spend_id 那一对 409 idempotency_conflict / 409 idempotency_in_progress

transferBatch

POST /pay/api/transferBatch——权限范围 payouts,每分钟 10 次。为批量打款做的扩展: 一次调用最多 100 笔转账

一个参数:items——一个数组,每一项都是一整套 transfer 参数(user_idassetamountspend_id,以及可选的 commentdisable_send_notification)。同一批里的 spend_id 必须互不相同,否则整个调用在执行任何一笔之前就以 400 duplicate_spend_id 失败。

各项按顺序独立结清——某一项失败绝不会把其他的回滚掉。即使有几项失败了,这个调用照样返回 HTTP 200 和 ok: true,所以请务必逐项检查:

  • 成功:{"ok": true, "spend_id": "…", "result": <transfer object>}
  • 失败:{"ok": false, "spend_id": "…", "error": {"code": …, "name": "…"}},错误名跟单笔 transfer 是同一套。

批量里的各项跟单笔转账共用同一个幂等命名空间:整批重试——或把其中一项用同一个 spend_id 作为单笔 transfer 重发——都是重放,不会付两次。

getTransfers

GET /pay/api/getTransfers——权限范围 read。过滤条件:assettransfer_ids(逗号分隔)、 spend_id(精确匹配——用您自己的键去查一笔打款),外加 offset / count。返回 {"items": [transfer, …]},按时间倒序。

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_idhashassetamountamount_minorbot_check_urlt.me 领取链接)、statusactive / activated)、pin_to_user_idcreated_atactivated_at。被领取时会触发需要订阅的 check_activated webhook

错误:404 unknown_asset400 invalid_amount404 user_not_found(指定的用户名对不上 任何人)、409 insufficient_funds,以及 spend_id 那一对。

deleteCheck

POST /pay/api/deleteCheck——权限范围 checks。一个参数:check_id。取消一个还没被领的 红包,把锁住的金额退回您的应用余额;返回 true。错误:404 check_not_found409 check_not_active(已经被领或已经删掉)。

getChecks

GET /pay/api/getChecks——权限范围 read。过滤条件:assetcheck_ids(逗号分隔)、 statusactive / activated),外加 offset / count。返回 {"items": [check, …]},按时间倒序;已删除的红包永远不返回。