适用场景
- 跨境收款后希望资金留在多币种账户里,需要时再换汇或对外打款。
- 需要在自有系统里展示商户侧或终端客户侧的可动用余额。
- 需要把可用余额与待结算资金分开对账,避免把在途资金当成可提现金额。
- 多条业务线或多店铺希望用不同账户隔离资金用途。
- 财务需要一份按币种的资金分布,用于资金调度与报表。
账户模型
账户由账户编号account_no 标识,是 8 位数字字符串,必须保留前导零(例如 00000001),不要按整数存储或比较。开通时系统自动创建默认结算账户,is_system_default 为 true;商户自行开立的账户该字段为 false。editable 表示账户展示名称是否允许商户修改,当前查询接口不提供改名能力。
账户状态有两个取值:active 为正常,restricted 为受限。受限账户仍然可以查询,是否允许资金操作由对应的业务接口判断,而不是由账户状态直接拒绝查询。
账户归属于凭证所属的商户,不同商户的账户天然隔离。商户 App 的请求天然限定在本商户;服务商 App 经商户授权后,可在查询时传 merchant_id 指定作用商户,未授权或无权访问时返回 403 permission_denied。
余额口径
每个账户返回三段金额,全部是账本最小单位的整数:
账户余额只包含可用与冻结两部分;已归因到商户但尚未完成入账的资金不在账户余额内,请通过待结算余额查看,不要把账户余额当作全貌。
金额精度统一为 2 位小数:法币(1050 表示 10.50 USD),USDT、USDC(125000 表示 1,250.00 USDC)。换算展示值时按 100 相除,不要按 1000000 处理。
待结算余额
待结算余额是商户维度、按币种汇总的一个数字,与具体账户无关,也不会返回account_no。它表示待结算账户上属于该商户的账面净额,允许为负值;负值反映账务净额方向,客户端应原样展示,不要截断为 0,也不要当成接口错误。
这个数字既不是可用余额,也不是可提现金额,更不能加到某个账户的 total_amount 上。该数字按待结算账户的总余额汇总,其中包含被冻结的部分,因此不能理解为「已扣除冻结后可用于结算的金额」。无待结算记录的币种不返回,全部为零时返回空数组。
资金怎么进来、怎么出去
全球账户本身是账本视图,资金动作由对应的业务接口完成。下表按商户关心的问题列出各条资金路径与可用的查询和通知方式。
上表中的能力都通过对应的接口与事件提供,字段级定义见全球账户 API 文档。换汇类操作(法币兑换稳定币、稳定币兑换法币、稳定币互换)属于稳定币兑换产品,见稳定币兑换产品文档与稳定币兑换 API 文档。接口开通范围与可用币种请联系客户成功团队确认。
数据一致性与对账
余额查询返回的as_of 是本次查询的数据库观察时间,不是数据版本号,也不保证多次请求处于同一快照。两次请求之间余额发生变化是正常的,以账本记录为准;不要用 as_of 做版本比较或判断数据新旧。
对账时的稳妥做法是:先取一次账户余额与 as_of,再拉取同一时间窗内的事件或资金记录,两者对齐后再确认差异。事件推送可能重复送达,需按事件 ID 幂等去重;推送重试间隙内的遗漏可以用余额查询与资金记录核对补齐。相关机制见 Webhook 通知。
推荐的处理顺序:收到 Webhook 后按事件 ID 去重并落到自己的流水表,再用 GET /account/{account_no} 或对应记录查询确认最终状态;对账任务按固定周期(例如每小时)比对账户余额快照与流水,差异超过阈值再人工介入。事件只用于触发,余额与记录才是最终依据。
与其他产品的关系
全球账户回答的是「钱放在哪」,收银台、二维码支付、收款链接回答的是「钱怎么收进来」。一笔收款成功后,资金最终体现在对应币种账户的余额上;退款走原支付产品的退款能力,对外付款走 Payouts 或全球账户的打款能力。因此把全球账户接进财务系统时,只需要关心账户与币种的映射,不必关心收款渠道。权限与安全
API Key 与 Secret Key 在商户后台按店铺创建,属于店铺级凭证;调用只读接口同样需要完整的鉴权与签名三件套,不能因为「只是查询」而省略签名。Secret Key 只保存在服务端,不要出现在前端代码、日志或客户端存储中。生成 Key、签名算法与请求头的完整说明见 集成前准备。 商户范围由凭证决定:商户 App 天然限定在本商户,服务商 App 只能在已授权范围内传merchant_id 指定作用商户,返回 403 permission_denied 说明该 App 无权访问目标商户。返回 401 通常是 Key 缺失、无效或已吊销;返回 404 则说明账户编号不存在或不属于目标商户。
