XD-OP-14 · DOC

到账账号与收款分配(查询接口)

一个商家可绑定多个到账账号,收款方式支持单账号全额、按顺序轮流与比例分账;API 只读查询当前分配,写面在商家后台。

小豆支付开放平台是面向已有自有系统的商家的支付接入服务:通过服务器对服务器的接口,把支付宝与微信收款接进商家自己的系统,并以签名事件通知回传支付状态;资金由持牌支付公司收付结算。个人也能申请:主体类型选「个人」,身份证 + 本人银行卡即可完成商户进件。央行持牌机构清算,安全可靠的个人和企业支付接口。

这一篇给需要在自己后台看清「钱进了哪个账户、按什么规则分配」的商家。收款账户的设置在商家后台完成;商家 API 侧只提供一个只读查询接口,用它把「有哪些到账账号、当前怎么分」展示到你自己的系统里。

1. 先理解三件事

名词含义
到账账号一份实名主体+一个银行账户的组合。一个商家可以绑定多个到账账号(例如几家门店、几家不同主体的公司各一个账户)
参与收款你从已绑定的到账账号里,勾选一组「参与收款」的账号——只有它们会参与收款分配
收款方式这组账号怎么分这笔钱:全部进一个账号(单账号)、按顺序轮流(轮询)或按比例分账(比例分账,2–4 个参与账号)

每个到账账号最多绑定一个银行账户;同一张银行卡不能绑到两个到账账号上。账号的绑定与增补走的是进件(实名审核)主链,审核通过后才会出现在列表里。

2. 查询接口

GET /api/open/v1/settlement/accounts

项值
成功200
失败400 401 403 429 503
请求体无
幂等面无(只读,不改任何状态)

示例响应(200):

{
  "requestId": "req_你的请求号",
  "sellerType": "INDIVIDUAL_BUSINESS",
  "accounts": [
    {
      "applicationId": "APP-…",
      "subjectName": "某某小吃店",
      "merchantId": "商户号",
      "bankName": "某某银行",
      "cardLast4": "8888",
      "state": "ACTIVE",
      "eligible": true,
      "inPool": true,
      "isPrimary": true
    }
  ],
  "routing": {
    "enabled": true,
    "mode": "ROUND_ROBIN",
    "order": ["APP-…", "APP-…"],
    "activeApplicationId": null,
    "ratios": null,
    "unavailablePolicy": "REJECT",
    "revision": 3,
    "updatedAt": "2026-10-14T02:00:00.000Z"
  },
  "limits": { "maxPoolSize": 4 }
}

比例分账示例(200,节选):

{
  "routing": {
    "enabled": true,
    "mode": "RATIO",
    "order": ["APP-…A", "APP-…B"],
    "activeApplicationId": null,
    "ratios": [
      { "applicationId": "APP-…A", "shareBps": 6000 },
      { "applicationId": "APP-…B", "shareBps": 4000 }
    ],
    "unavailablePolicy": "REJECT",
    "revision": 4,
    "updatedAt": "2026-10-17T02:00:00.000Z"
  }
}

ratios 是配置面快照(你保存的设置),不是每一单的实时重算结果。实际生效腿按每单可用账号与 unavailablePolicy 决定:REJECT(默认)整单拒绝;RENORMALIZE 按剩余账号重新归一(极端情况下生效腿可只剩 1 条、达到 10000bps),该单快照会记录归一化结果。

响应字段:

字段含义
sellerType你的主体类型(COMPANY / INDIVIDUAL_BUSINESS / PERSONAL)
accounts[].applicationId到账账号的标识。用它和 routing.order 里的值对齐,不要当成银行卡号
accounts[].subjectName主体名称(企业为营业执照名称;个人为展示用名)
accounts[].merchantId商户号(收款账户的对外编号;未开通时为 null)
accounts[].bankName / cardLast4银行名称与银行卡尾号 4 位(完整卡号不通过任何接口对外,见第 4 节)
accounts[].stateACTIVE(可收) / PENDING(审核或开通中) / INACTIVE(已失效)
accounts[].eligible当前是否可被收款命中(审核完备、状态正常才是 true)
accounts[].inPool是否在你当前的「参与收款」集合里
accounts[].isPrimary是否主账号(承载经营资格的账号)
routing.enabled收款分配功能是否已开通生效
routing.modeSINGLE=全部进一个账号;ROUND_ROBIN=按 order 顺序轮流;RATIO=按 ratios 比例分账
routing.order参与收款的账号(勾选顺序=轮询顺序;比例分账时与 ratios 同集合)
routing.activeApplicationId单账号方式的收款目标(null 表示按 order 的第一个)
routing.ratios比例分账的配置面明细:{ applicationId, shareBps }[];参与账号 2–4 个,每项 0 < shareBps < 10000,合计恒为 10000bps;非 RATIO 方式为 null
routing.unavailablePolicy参与账号暂时不可用时的策略:REJECT=整单拒绝(默认);RENORMALIZE=按剩余账号继续
routing.revision / updatedAt收款设置的版本号与最近保存时间
limits.maxPoolSize「参与收款」账号数上限

3. 分配的边界(重要)

  • 一单一结、随单冻结:一笔订单在创建时就确定了它走哪个账号,之后不再改变。修改收款方式只影响之后新建的订单——已创建(包括未支付)的订单仍按创建当时的分配执行。
  • 不可用即跳过,绝不静默改道:某个参与账号暂时不可用时,轮询会跳过它;如果目标账号都不可用,订单会被拒绝,而不是悄悄换一个账户收——不会出现「钱进了你没预期的账户」。
  • 退款按原订单快照发起回退:退款按原订单创建时冻结的收款分配快照回退,与当前设置无关;实际到账路径以支付服务方原交易与分账合同为准。

4. 关于卡号与商户号

  • 查询接口(以及所有对外接口)只返回银行卡尾号 4 位,完整卡号不对外下发。
  • 商户号与主体名称按账号明文展示——这是给你在自有后台做对账与展示用的。
  • 这一类信息属于你的账户隐私:不要拼进买家可见的页面,也不要写进日志或截图里外发。

5. 设置在哪里做

收款方式(哪些账号参与、顺序、单账号目标、不可用时的策略)的唯一设置入口是商家后台的「店铺设置 → 到账账号」页;每次保存会生成新的设置版本(响应里的 revision),并在页面上明确提示「从下一笔新订单开始生效,此前订单不变」。

商家 API 不提供任何修改收款方式的接口——这是有意为之:资金去向的变更应当有人在后台确认。用本篇的查询接口把结果同步到你的系统即可。

6. 常见问题

「比例分账」怎么设置、怎么算? 在商家后台「店铺设置 → 到账账号」选择比例分账并填写各账号比例即可:参与账号 2–4 个,配置面每项 shareBps 满足 0 < shareBps < 10000,合计恒为 10000bps;保存后从下一笔新订单生效。查询接口返回配置面的 ratios 快照;单笔实际生效腿由该单可用账号与 unavailablePolicy 决定(REJECT 整单拒绝;RENORMALIZE 按剩余账号归一)。

为什么某个账号的 eligible 是 false? 该账号的实名审核、业务开通或账户状态还没完备(或已失效)。它仍会出现在列表里(方便你解释「为什么这笔没进这个账户」),但不会被收款命中。

轮询是「按金额」还是「按笔数」? 按订单轮流:每新建一笔订单消耗一个位置,与金额无关。未支付的订单同样占位。

我可以让某一笔订单指定收款账号吗? 不可以。分配规则在后台统一设置、对全部新订单生效;下单接口不接受「本单收款账号」参数。

内容源:open-platform/docs/14-settlement-accounts.md · 最后更新 2026-10-17 下载本文 .md 在 GitHub 查看