深色模式
银行卡与出金授权
本页说明
讲什么:银行卡状态和认证如何影响出金、account_type 如何决定可用出金通道、BST 授权对出金的前提要求、首次出金认证流程、通道路由与银行卡的关系、出金相关的银行卡异常排查 适合谁:需要理解"用户为什么无法出金"的产品经理和运营 前置阅读:出金方式总览预计阅读:5 分钟 负责人:出金产品经理
核心要点:用户能用哪种方式出金,取决于银行卡的三个维度——status(卡是否生效)、verify(是否已认证)、account_type(是否有 BST 位)。BST 出金还额外要求 Mandate 状态为 OPEN。理解这三道门槛,是排查"用户无法出金"的关键。
快速跳转 — 你可能想做的事:
- 用户看不到 BST 出金选项?→ 出金通道与卡类型的关系
- 用户首次出金被拦截?→ 卡认证与首次出金
- BST 出金不可用?→ BST 授权与出金
- 系统是怎么选出金通道的?→ 通道路由与银行卡
- 出金相关的银行卡问题?→ 出金相关的银行卡异常
出金的三道门槛
用户发起出金前,系统依次检查银行卡的三个维度。任一不通过,出金都无法继续:
| 门槛 | 检查字段 | 通过条件 | 不通过表现 |
|---|---|---|---|
| 1. 卡状态 | status | = 1(已生效) | "银行卡不存在"或无法选择该卡 |
| 2. 卡认证 | verify | = 2(已认证)或非首次出金 | "银行账户还未通过认证",要求上传凭证 |
| 3. 通道授权 | account_type + Mandate | BST 通道需含 BST 位 + OPEN | 不显示 BST 选项,或 Confirm 步骤拦截 |
入金 vs 出金的银行卡要求差异
入金对银行卡要求较宽松——未认证的卡(verify=0)可以正常入金。 出金要求更严——首次出金到未认证卡时会被拦截,必须先完成认证。这是因为出金涉及资金流出,反洗钱合规要求确认收款账户属于本人。
出金通道与卡类型的关系
银行卡的 account_type 直接决定用户可用的出金通道:
| account_type | 含义 | 可用出金方式 | 说明 |
|---|---|---|---|
| 1 | Regular(仅普通) | 网银、FPS、CHATS、电汇等 | 绑卡默认状态,不含 BST |
| 3 | Regular + BST | 上述 + 银证出金 | 完成银证签约后获得 |
| 5 | Regular + eDDA | 网银、FPS、CHATS、电汇等 | eDDA 位对出金无影响(eDDA 仅用于入金) |
| 7 | 全能力 | 与 account_type=3 相同 | eDDA 位不增加出金能力 |
关键区别:对入金来说,account_type 的每一位都有意义(Regular / BST / eDDA 各自开启不同入金通道)。但对出金来说,只有 BST 位(bit 1)有实质影响——eDDA 是代扣通道,只用于入金,出金走的是企业网银通道(hase / hsbc),与 eDDA 授权无关。
出金通道的银行卡要求
| 通道 | account_type 要求 | 额外要求 | 备注 |
|---|---|---|---|
auto_bs(银证) | 含 BST 位(2/3/6/7) | Mandate = OPEN | 唯一的全自动通道 |
hsbc(汇丰网银) | Regular 即可 | 无 | 运营操作企业网银转账 |
hase(恒生网银) | Regular 即可 | 无 | 运营操作企业网银转账 |
boc_fps(中银 FPS) | Regular 即可 | 无 | 半自动 |
cgb_fps_api(广发 FPS) | Regular 即可 | 无 | 半自动 |
sc(渣打) | Regular 即可 | 无 | 半自动 |
tele_transfer(跨境电汇) | Regular 即可 | bank_swift 必填 | 非港银行自动选此通道 |
chats_rtgs | Regular 即可 | 无 | 港内大额(≥100 万) |
boc(中银同行) | Regular 即可 | 无 | 人工操作 |
manual(工银手工) | Regular 即可 | 无 | 人工操作 |
运营排查要点
用户反馈"看不到 BST 出金选项"时,排查路径:
- 查
bank_card.account_type——含 BST 位的值:2、3、6、7 - 查 Mandate 状态——必须为 OPEN(2)
- 如果
account_type不含 BST 位 → 银证签约未完成,引导用户完成签约 - 如果 Mandate 不是 OPEN → 参考 BST 授权与出金
BST 授权与出金
BST(银证转账)是出金中唯一的全自动通道。使用 BST 出金的前提是银证授权状态为 OPEN。
Mandate 状态对出金的影响
| Mandate 状态 | 含义 | 能否 BST 出金 | 运营关注点 |
|---|---|---|---|
| 0 CLOSE | 未授权 | 否 | 用户需发起授权 |
| 1 PROCESSING | 授权中 | 否 | 等待银行确认 |
| 2 OPEN | 已授权 | 是 | 正常状态 |
| 3 WAITING | 等待首笔入金 | 否 | 线上开户专用,入金成功后自动转 OPEN |
| 4 FAIL | 授权失败 | 否 | 检查 reject_code |
| 5 CANCEL | 已取消 | 否 | 用户可重新发起 |
只有 OPEN(2) 才能使用 BST 出金——这是排查"BST 出金不可用"的第一步。
三家 BST 银行的出金差异
| 维度 | 招行 / 民生 | 天星 |
|---|---|---|
| 出金指令 | Socket 双向链路实时推送 | REST API + 两阶段轮询 |
| 到账时效 | 秒级 | 快速轮询 ~50 秒 + 兜底同步最长 2 小时 |
| CNH 出金 | 不走 BST(协议未覆盖,留给运营手工选) | 支持(无限制) |
| 银行发起出金 | 支持(用户在银行 App 操作转出) | 支持 |
| 市场粒度 | 每个市场单独签约 | 一次授权自动绑定 3 市场 |
CNH 限制:招行/民生不走 BST
这是一个重要的边界条件:招行/民生 + 离岸人民币 CNH = 不走 BST。
原因:招行和民生的银证接口协议层面未覆盖 CNH 币种的自动转账。系统在通道路由时检测到这个组合后,会将 method 设为 null,留给运营手动选择其他通道(通常是网银或 FPS)。
天星不受此限制——天星的银证接口支持 CNH。
Confirm 步骤的授权校验
出金审批的 Confirm 步骤会强制校验 BST 授权状态:
Confirm 步骤逻辑:
if method == auto_bs:
检查 Mandate 状态
if status ≠ OPEN → 拒绝推进,提示"银证授权状态异常"
if status == OPEN → 通过,推进到 Remittance如果 Confirm 卡住且提示授权异常 → 排查 Mandate 状态,详见 出金排障 § 银证授权异常。
完整 BST 授权技术细节 → 银行卡与授权 § BST 银证授权 BST 通道执行细节 → 通道执行手册 § BST
卡认证与首次出金
银行卡认证(verify)是出金独有的门槛——入金不检查认证状态,但首次出金到未认证卡时会被拦截。
认证状态
| verify 值 | 含义 | 对出金的影响 |
|---|---|---|
| 0 | 未认证 | 首次出金被拦截,要求上传凭证 |
| 1 | 认证中 | 出金等待认证完成 |
| 2 | 已认证 | 无限制 |
自动认证(不需要用户操作)
以下场景会自动将卡标记为已认证(verify=2),用户无需额外操作:
| 场景 | 来源代码 | 原理 |
|---|---|---|
| BST 银证签约成功 | bst | 银行侧已验证身份 |
| eDDA 授权成功 | edda | 银行侧已验证身份 |
| 香港线上开户入金成功 | hk_online | 入金流水已验证卡号归属 |
实际意义:如果用户先通过 BST 或 eDDA 入金,卡已自动认证,出金时不会被拦截。只有用户通过网银/FPS/ATM 等方式入金后、首次向该卡出金时,才会触发手动认证。
首次出金认证流程
为什么要认证
反洗钱合规要求确认收款账户属于用户本人。出金意味着资金从受监管的证券账户流出,所以合规门槛比入金更高。
通道路由与银行卡
系统通过 calcMethod() 根据银行卡属性自动选择出金通道:
路由决策使用了银行卡的以下字段:
| 字段 | 路由中的作用 |
|---|---|
account_type | 判断是否含 BST 位 → 决定能否走银证通道 |
bank_code | 判断是招行/民生/天星中的哪家 → 决定 CNH 限制 |
area | 判断银行是否在香港 → 非港银行走跨境电汇 |
bank_swift | 跨境电汇必填,缺失会导致出金失败 |
currency_type | 卡必须支持出金币种,否则拒绝 |
method = null 时运营怎么选
当系统无法自动确定通道时,运营在 Confirm 步骤手动选择,优先级:同行转账 > FPS > CHATS/RTGS > 支票。详见 出金方式总览 § method = null 时的 fall-through 逻辑。
其他银行卡限制
除了上述三道门槛,出金还有一些银行卡相关的限制条件:
| 限制 | 检查字段 | 表现 | 说明 |
|---|---|---|---|
| 大陆银行卡 | area = cn | "不支持提取到中国大陆银行账户" | 系统直接拦截 |
| A 股通 CNH | 币种 + 银行地区 | "CNH 仅支持提取到香港银行" | 仅 CNH + 非港银行 |
| Payoneer 账户 | 银行类型 | "Payoneer 账户不支持出金" | 业务限制 |
| 第三方卡 | third_party_flag = 1 | 出金受额外限制 | 非本人卡需额外审核 |
| 币种不匹配 | currency_type 位图 | "银行账户币种与出金币种不一致" | 如 currency_type=1 的卡不支持 USD 出金 |
| SWIFT 缺失 | bank_swift 为空 | 跨境电汇失败 | 历史数据问题,运营补充 |
| 在线开户未入金 | status = 0 | "绑卡须转账 ≥ 10,000 港元" | 待审核卡不可出金 |
出金相关的银行卡异常
以下是与出金直接相关的银行卡异常场景——完整的银行卡异常列表参见 银行卡与授权 § 异常场景。
| # | 场景 | 表现 | 排查步骤 | 运营处理 |
|---|---|---|---|---|
| 1 | BST 出金不可用 | 用户看不到银证出金选项 | ① 查 account_type 是否含 BST 位(2/3/6/7)② 查 Mandate 状态是否为 OPEN(2) | account_type 缺位 → 签约未完成;Mandate 非 OPEN → 引导重新授权 |
| 2 | 首次出金被拦截 | 提示"银行账户还未通过认证" | ① 查 verify 字段 ② 查是否有待审核凭证 | 引导用户上传银行对账单;或运营 ManualVerify |
| 3 | 待审核卡无法出金 | 在线开户卡不可用 | ① 查 status 是否为 0 ② 查首笔入金是否成功 ③ 查 TakeEffect 是否执行 | 入金已成功但卡未生效 → 手动 BatchTakeEffect |
| 4 | Confirm 卡住 | BST 出金停在 Confirm 步骤 | 查 Mandate 状态——不是 OPEN 则 Confirm 无法推进 | 引导用户重新完成银证授权 |
| 5 | 币种不支持 | 出金时提示币种不匹配 | 查 currency_type 位图(HKD=1, USD=2, CNH=4) | 引导用户绑定支持该币种的银行卡 |
| 6 | SWIFT 缺失 | 跨境电汇出金失败 | 查 bank_swift 是否为空 | 运营 UpdateBankCard 补充 SWIFT |
| 7 | 第三方卡限制 | third_party_flag=1 出金受限 | 查 third_party_flag 是否误标记 | 误标记 → UpdateThirdPartyFlag 修正 |
常见误解
| 误解 | 事实 |
|---|---|
| "eDDA 授权了就能用 eDDA 出金" | eDDA/eDDI 只用于入金(从用户银行扣款)。出金走的是企业网银通道(hase / hsbc),与 eDDA 授权无关。account_type 的 eDDA 位不增加任何出金能力 |
| "绑卡就能出金" | 绑卡只是第一步。首次出金到该卡还需要通过认证(verify=2);走 BST 通道还需要银证授权为 OPEN。三道门槛缺一不可 |
| "BST 签约了就一定走 BST" | 不一定。招行/民生 + CNH 出金即使有 BST 签约也不走 BST(协议未覆盖),系统会将 method 设为 null 由运营手动选通道 |
| "卡认证失败 = 出金被拒" | 不是同一件事。认证是针对银行卡本身("这张卡是不是你的"),只在首次出金到该卡时检查。出金被拒可能有很多其他原因(余额不足、风控拦截等) |
读完之后
| 我想... | 去看 |
|---|---|
| 了解出金的完整生命周期 | 出金生命周期 |
| 看 BST 通道的执行细节 | 通道执行手册 § BST |
| 了解入金侧的绑卡与授权 | 银行卡绑定与入金授权 |
| 看银行卡的完整数据模型 | 银行卡与授权 |
| 用户无法出金怎么排查 | 出金排障 § 用户无法发起出金 |
| BST 授权出了问题 | 出金排障 § 银证授权异常 |
这个页面有帮助吗?