跳到正文
PayHub开发者文档

查询余额

契约 v1.0.0

listBalances
GET/v1/balances
所需权限finance:read

finance:read 默认不在开发者可授予范围内,需要所有者或管理员创建的 Key。

按币种返回商户余额分桶,每个币种一条。结果一次返回、不分页:has_more 恒为 false,next_cursor 为 null。 绝不能把不同币种的金额相加为“总余额”;net_position 仅供展示,不能替代 available 判断可结算金额。

请求头

请求头必填格式说明
Authorization是Bearer <API_KEY>

服务端密钥,只能在商户服务端使用;商户与环境由密钥推导。缺失、无效、撤销或过期返回 401。

查询参数

名称类型必填说明
currency
string否

只返回指定币种。

约束:格式 ^[A-Z]{3}$

示例:USD

请求示例

curl
curl -X GET 'https://api.payhub.bbpays.site/v1/balances?limit=20' \
  -H 'Authorization: Bearer <TEST_SERVER_API_KEY>'

需要替换的占位符

  • <TEST_SERVER_API_KEY>:测试环境服务端 API Key:在商户后台「API Key」页面创建

说明

服务端 API Key 只能在你的服务端使用,文档站不提供在线调试。获取测试 Key:商户后台 API Key(在新标签页打开商户后台)(测试环境;需要所有者、管理员或开发者)

响应

各币种余额。

每个币种一条;不同币种不得相加
{
  "data": [
    {
      "currency": "USD",
      "pending": 125000,
      "available": 482050,
      "reserve": 50000,
      "risk_hold": 0,
      "refund_pending": 3500,
      "payout_pending": 200000,
      "merchant_receivable": 0,
      "book_payable": 860550,
      "net_position": 860550
    },
    {
      "currency": "JPY",
      "pending": 300000,
      "available": 1250000,
      "reserve": 100000,
      "risk_hold": 0,
      "refund_pending": 0,
      "payout_pending": 0,
      "merchant_receivable": 0,
      "book_payable": 1650000,
      "net_position": 1650000
    }
  ],
  "has_more": false,
  "next_cursor": null,
  "request_id": "req_demo_030"
}

响应字段

分页列表:data 为对象数组,has_more 为 true 时用 next_cursor 继续翻页。 字段说明见 对象小节。

名称类型必填说明
data
array<Balance>必填
currency
string必填

币种。

约束:格式 ^[A-Z]{3}$

示例:USD

pending
integer(int64)必填

待结算:支付已成功,但到账、账期或对账条件未全部满足的净额;不可打款。

约束:≥ 0

示例:9650

available
integer(int64)必填

可结算:已满足释放条件且未被占用的金额;唯一可用于打款的桶。

约束:≥ 0

示例:8650

reserve
integer(int64)必填

保证金:按规则留存、等待释放的金额。

约束:≥ 0

示例:1000

risk_hold
integer(int64)必填

风险冻结:与具体风险处置或争议关联的冻结金额。

约束:≥ 0

示例:0

refund_pending
integer(int64)必填

退款占用:被审核中或处理中退款占用的金额。

约束:≥ 0

示例:0

payout_pending
integer(int64)必填

打款占用:被有效结算单占用、尚未确认打款完成的金额。

约束:≥ 0

示例:0

merchant_receivable
integer(int64)必填

待追偿:平台因真实强制扣收等形成的对商户应收债权;不属于商户可用资金。

约束:≥ 0

示例:0

book_payable
integer(int64)必填

商户账面应付余额 = pending + available + reserve + risk_hold + refund_pending + payout_pending。

约束:≥ 0

示例:19300

net_position
integer(int64)必填

商户净头寸(仅展示用途)= book_payable - merchant_receivable,可为负;不能替代 available。

示例:19300

has_more
boolean必填

恒为 false。

示例:false

next_cursor
string可为空必填

恒为 null。

示例:null

request_id
string必填

本次请求的唯一标识。

示例:req_demo_004

可能的错误码

HTTP错误码何时出现如何处理
400invalid_request缺 Idempotency-Key;订单号含非法字符;payment_method_data 与 payment_method_id 同时提交;confirm=false 携带卡信息;confirm=true 缺 return_url;收银会话两组身份参数同时提交或都缺;缺少上游要求的 browser_info / billing_details 字段;游标、时间格式、limit 不合法按 error.field 修正后重新提交,不要自动重扣
401unauthenticated通用未带 Authorization;Key 复制不完整;轮换后旧 Key 已过期;Key 被撤销检查凭据,在 商户后台 API Key 页面 核对 Key 状态与环境
403forbidden通用只读 Key 创建退款;getEvent 缺少事件所属业务的读权限;请求来源 IP 不在 Key 的白名单时返回更具体的 ip_not_allowed使用具备所需 scope 的 Key;不要绕过限制
429rate_limited通用商户、Key 维度的频率限制;换 Key 不能绕过商户总限额等待 Retry-After 秒后用原幂等键重试
500internal_error通用—用原幂等键重试或按商户订单号 / 退款号查询;不能换键重扣
502 / 503upstream_unavailable通用上游或平台依赖故障,平台无法确认本次请求是否已生效同上

注意事项

  • 每个币种一条,一次返回、不分页(has_more 恒为 false)。
  • 只有 available 可用于打款;net_position 仅供展示、可为负,不能替代 available。

警告

不同币种的余额不能相加。

这页有帮助吗?