Skip to main content
提现和余额不仅在 Portal 中可用,也提供 API。Portal 页面、费用、账单和自动提现合约见提现与批量 Payout FAQ, 各项余额的含义见余额与账户历史, 签名见认证与签名 FAQ。

有哪些接口,调用它们需要什么?

五个接口都是 POST,JSON 进 JSON 出,签名方式与 /api/v1/order/create 完全一致。 两条访问规则拦住了大多数首次调用。API 密钥是有作用域的:仅为 payin 签发的密钥不能调用这些接口,会在签名校验之前就以 A0004 “Permission denied” 失败—— 如果一个在别处签名正确的请求返回 A0004,请向 Waffo 申请作用域包含提现的密钥。并且请求体中的 merchantId 必须与你的密钥所对应的 MID 一致,否则返回 A0003。 /api/v1/withdraw/inquiry 是例外:它不带 merchantId——MID 来自密钥,属于其他 MID 的订单会被报告为未找到。

三个提现调用是怎么配合的?

  1. consult——发送 currency,可选 amount。返回费用、预期到账金额、你协议的限额和收款账户,以便你在提交前校验。
  2. create——发送你确定的金额,加上你自己的 withdrawRequestId。
  3. inquiry——轮询直到状态为终态,或等待发到你 notifyUrl 的回调。
create 刻意不等于一笔已完成的提现:审批记录和余额扣减是异步发起的,所以成功的 create 通常返回 IN_PROGRESS——把它当作「已受理」,绝不要当作「已打款」。

consult 会告诉我什么,不传金额会怎样?

省略 amount,consult 回答的是「我现在一次最多能提多少」:你的可提现余额——结算账户的可用余额,在保证金余额为负时减去保证金缺口——以协议的最大值为上限。 实际的 fxRate 和 actualReceiveAmount 在订单完成后出现在 inquiry 上。

create 需要什么,幂等是怎么工作的?

省略 bankAccountId 时自动使用协议下唯一绑定的账户;如果协议绑定了多个账户,省略它会以参数错误失败并要求提供。 accountNo 只在你同一币种持有多个余额账户时才有意义——这发生在与另一个 Waffo 实体重新签约之后。 withdrawRequestId 是幂等键,作用域为你的 MID。用相同的 amount 和 currency 重放它,你会得到原订单的结果——不会产生第二笔提现。 用不同的 amount 或 currency 重放,调用以 A0011 “Idempotent param mismatch error” 失败。所以超时后用完全相同的请求体重试是安全的;真正的新提现需要新的 id。

怎么轮询状态,各状态是什么意思?

inquiry 至少需要 withdrawRequestId 或 withdrawOrderId 之一;两者都不传是参数错误。 两者都传时以 withdrawOrderId 为准,若两者不一致,调用会失败而不是返回错误的订单。 Portal 对同一订单显示更长、更细的状态列表——映射关系见 提现与批量 Payout FAQ。成功时 inquiry 补充 actualReceiveAmount、fxRate(同币种始终为 1.00)、bankRefId 和 withdrawCompleteTime;失败时带有 failureCode 和 failureReason。

余额查询返回哪些账户?

只有你的结算账户——每个结算币种一行,按签约实体合并。传 currency 可以缩小范围,省略则返回全部币种。待结算余额不在这里暴露。

账户历史查询最多能查多久以前,每行有什么?

该接口上的所有时间均为 UTC——包括你发送的 startTime / endTime(ISO-8601 本地日期时间,如 2026-08-01T00:00:00)和返回的 transactionTime(...Z)。 Portal 的账户历史则以 UTC+8 展示。
  • 两个边界都省略时只返回当天;其他情况需同时发送两者。窗口不得超过 180 天,解析出超过 60,000 行的查询会被拒绝。
  • 与 Portal 的账户历史不同,该接口同时覆盖结算账本和保证金账本。用 accountType = MERCHANT_SETTLEMENT 或 MERCHANT_RESERVE 筛选;省略则两者都返回。 currency 和 accountNo 可进一步缩小范围,筛选一个你并不持有的账户会返回账户未找到错误而不是空列表。
每行带有 accountNo、accountType、currency、amount、accountDirection(CREDIT / DEBIT)、newBalance(该笔变动之后的余额)、transactionTime、 businessId(关联的业务订单)和 businessType——诸如 SETTLEMENT、WITHDRAWAL、RESERVE_WITHHOLDING、RESERVE_RELEASING、RESERVE_ADJUSTMENT 和 ADJUSTMENT 等代码, 最好不区分大小写地匹配。它们的含义见余额与账户历史。

我应该显式处理哪些错误?


还是卡住了?联系支持并提供 withdrawRequestId 或 withdrawOrderId 以及调用的时间戳。