跳到正文
PayHub开发者文档

查询账务流水

契约 v1.0.0

listBalanceTransactions
GET/v1/balance-transactions
所需权限finance:read

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

查询脱敏的余额流水。每条流水是一个余额桶的增减:amount 为有符号整数,正数增加该桶,负数减少; 桶间转移表现为同一 ledger_transaction_id 下一减一增的两条流水。同时给出业务发生时间 occurred_at 与记账时间 booked_at。 以 booked_at 作为创建时间:按 booked_at 倒序、同一时间再按 id 倒序稳定排序,created_gte、created_lt 作用于 booked_at; 迟到的事实按实际记账时间出现,不改写历史流水。

请求头

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

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

查询参数

名称类型必填说明
currency
string否

按币种过滤。

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

示例:USD

bucket
string否

按余额桶过滤。

  • pending
  • available
  • reserve
  • risk_hold
  • refund_pending
  • payout_pending
  • merchant_receivable
  • 将来可能新增取值;不认识的状态不要当作成功。

示例:available

source_type
string否

按来源业务类型过滤,例如 payment、refund、dispute、settlement。

约束:长度 1–64

示例:payment

source_id
string否

按来源业务对象 ID 过滤。

约束:长度 1–64

示例:pay_demo_001

limit
integer否

每页条数,默认 20,最大 100。

约束:1–100默认 20

cursor
string否

上一页响应中的 next_cursor。不透明字符串,客户端不得解析或拼接;须与首页使用相同的过滤条件。

约束:长度 1–512

created_gte
string(date-time)否

创建时间下界(含),带时区的 ISO 8601。

示例:2026-09-23T00:00:00Z

created_lt
string(date-time)否

创建时间上界(不含),带时区的 ISO 8601。

示例:2026-09-24T00:00:00Z

请求示例

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

需要替换的占位符

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

说明

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

响应

账务流水列表。

一次桶间转移:同一 ledger_transaction_id 下一减一增两条流水
{
  "data": [
    {
      "id": "btx_demo_002",
      "type": "funds_released",
      "source_type": "payment",
      "source_id": "pay_demo_001",
      "bucket": "available",
      "amount": 9650,
      "currency": "USD",
      "occurred_at": "2026-09-25T00:00:00Z",
      "booked_at": "2026-09-25T00:00:02Z",
      "ledger_transaction_id": "ltx_demo_001"
    },
    {
      "id": "btx_demo_001",
      "type": "funds_released",
      "source_type": "payment",
      "source_id": "pay_demo_001",
      "bucket": "pending",
      "amount": -9650,
      "currency": "USD",
      "occurred_at": "2026-09-25T00:00:00Z",
      "booked_at": "2026-09-25T00:00:02Z",
      "ledger_transaction_id": "ltx_demo_001"
    }
  ],
  "has_more": false,
  "next_cursor": null,
  "request_id": "req_demo_031"
}

响应字段

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

名称类型必填说明
data
array<BalanceTransaction>必填
id
string必填

流水号。

示例:btx_demo_001

type
string必填

记账类型,例如 payment_captured(支付成功入账)、refund_reserved(退款占用)、settlement_reserved(结算占用)、funds_released(资金释放);须容忍新增取值。

示例:payment_captured

source_type
string必填

来源业务对象类型,例如 payment、refund、dispute、settlement、payout、payout_return(退汇)、adjustment。

示例:payment

source_id
string必填

来源业务对象 ID。

示例:pay_demo_001

bucket
string必填

余额桶:pending、available、reserve、risk_hold、refund_pending、payout_pending、merchant_receivable。

  • pending
  • available
  • reserve
  • risk_hold
  • refund_pending
  • payout_pending
  • merchant_receivable
  • 将来可能新增取值;不认识的状态不要当作成功。

示例:available

amount
integer(int64)必填

有符号金额,最小货币单位:正数增加该桶,负数减少该桶。

示例:9650

currency
string必填

币种。

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

示例:USD

occurred_at
string(date-time)必填

业务发生时间。

示例:2026-09-23T09:05:00Z

booked_at
string(date-time)必填

记账时间;迟到事实不伪造为按时到达。

示例:2026-09-23T09:05:01Z

ledger_transaction_id
string必填

关联的账务交易(凭证)号;桶间转移的两条流水共用同一个号。

示例:ltx_demo_001

has_more
boolean必填

是否还有下一页。

示例:false

next_cursor
string可为空必填

下一页游标;没有下一页时为 null。

示例:null

request_id
string必填

本次请求的唯一标识。

示例:req_demo_005

可能的错误码

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通用上游或平台依赖故障,平台无法确认本次请求是否已生效同上

注意事项

  • amount 有符号:正数增加该余额桶,负数减少;桶间转移是同一 ledger_transaction_id 下一减一增两条流水。
  • 同时给出 occurred_at(发生)与 booked_at(记账);created_gte / created_lt 作用于 booked_at。
  • 迟到的事实按实际记账时间出现,不改写历史流水。
这页有帮助吗?