出金排障
本頁說明
講什麼:出金過程中的常見異常——按"用戶/運營看到什麼症狀"組織,給出排查路徑和處理方式 適合誰:需要處理出金問題的運營人員,需要理解異常流程的產品經理 前置閱讀:出金生命週期預計閱讀:4 分鐘 負責人:出金運營主管
核心要點:出金異常按錯誤碼快速定位——BST 回調超時、通道無法自動選擇(method=null)、銀證授權異常、餘額凍結失敗是最常見的四類問題。
按錯誤碼/狀態碼快速定位
| 錯誤碼/狀態 | 含義 | 跳轉 |
|---|---|---|
回調碼 -5 | 招行/民生 BST 超時 | 場景二 § BST 回調 |
回調碼 -6 | 招行/民生 BST 拒絕 | 場景二 § BST 回調 |
天星 PENDING 超時 | 天星輪詢超時 | 場景二 § 天星輪詢 |
天星 FAILED | 天星指令失敗 | 場景二 § 天星輪詢 |
天星 REFUNDED | BST 入金退款 | 場景八 |
method = null | 系統無法自動選通道 | 場景一 § Confirm 卡住 |
| Mandate ≠ OPEN | 銀證授權異常 | 場景七 |
| 140630xxx | 天星錯誤碼 | 出金數據字典 |
| 凍結類型=2 (CASH_OUT) | 出金凍結 | 場景六 |
| 任務狀態=5 | 出金已沖正 | 場景五 |
完整錯誤碼 → 統一錯誤碼中心
快速診斷:用戶說"錢沒到"
收到用戶反饋"我已經提了出金但錢沒到銀行卡"時,按以下順序排查:
大部分"錢沒到"的原因是審批流程還在進行中——尤其是非 BST 通道的出金,需要運營手動操作多個步驟。
場景一:審批卡在某一步
症狀:出金任務狀態為"處理中",但長時間沒有推進到下一步。
| 卡在哪一步 | 可能原因 | 處理方式 |
|---|---|---|
| Audit | 高風險審核排隊中 | 檢查風控標記原因,審核通過後點擊 NEXT |
| Confirm | 運營未及時處理 / 銀行卡信息需確認 | 驗證銀行卡狀態,確認通道後點擊 NEXT |
| Remittance | 自動出金條件不滿足 / 運營未手動觸發 | 檢查 6 個自動出金條件,手動點擊執行轉賬 |
Confirm 卡住最常見的原因:method = null(系統無法自動選擇通道)。運營需要根據用戶的銀行卡手動選擇合適的出金通道(網銀 / FPS / 手工等),然後才能推進到 Remittance。
場景二:銀行回調失敗
症狀:Remittance 已經執行了 startTransfer(),但銀行回調結果不是成功。
招行 / 民生 BST 回調異常
| 回調碼 | 含義 | 系統處理 | 運營操作 |
|---|---|---|---|
| -5 | 超時 | 自動切換備用 exit_server 重試 | 通常不需要干預,等待重試結果 |
| -6 | 銀行拒絕 | 標記失敗 | 聯繫銀行確認拒絕原因,可能需要換通道重新出金 |
BST 超時(-5)通常是網絡抖動——系統會自動嘗試備用伺服器。如果重試也失敗,運營需要手動確認銀行側狀態:錢是否已經扣出?
天星 BST 輪詢異常
天星不是實時回調,而是系統輪詢獲取結果,因此異常模式不同:
| 異常 | 觸發條件 | 系統處理 | 運營操作 |
|---|---|---|---|
| 輪詢超時 | AsbBstTransfer 10 次輪詢後仍 PENDING | 進入 SyncAsbBstWithdraw 2 小時兜底同步 | 等待,關注告警 |
| 同步超時 | 2 小時同步窗口結束仍 PENDING | 標記異常 | 人工查詢天星 API 確認銀行側狀態 |
| 指令失敗 | 天星返回 FAILED | 釋放凍結資金 | 查看 140630xxx 錯誤碼定位原因 |
關鍵區別:招行/民生的"-5 超時"通常秒級可恢復(切換備用伺服器),天星的輪詢超時可能需要等待最長 2 小時 + 人工介入。
天星錯誤碼 → 出金數據字典 § 天星錯誤碼
網銀 / FPS 回調異常
網銀和 FPS 通道的異步回調週期可能更長。如果長時間沒有回調:
- 檢查銀行側的交易狀態
- 確認出金指令是否成功發送
- 必要時聯繫銀行核實
場景三:自動出金條件不滿足
症狀:BST 通道出金,Remittance 步驟沒有自動執行,需要人工操作。
6 個自動出金條件中任何一個不滿足,系統就會降級為人工模式。常見情況:
| 不滿足的條件 | 表現 | 處理 |
|---|---|---|
| 金額超限 | 大額出金沒有自動執行 | 運營確認金額合理後手動觸發 |
| 每日超 10 筆 | 當天同一用戶多筆出金 | 確認非異常操作後手動觸發 |
| 自動開關關閉 | 某幣種的自動出金被關閉 | 檢查 auto_settings 表,確認是否需要重新開啟 |
| 餘額不足 | 可用餘額小於出金金額 | 通知用戶餘額不足 |
這不是故障
自動出金條件不滿足是正常的安全機制,不是系統故障。運營確認後手動執行即可。
場景四:出金被風控攔截
症狀:用戶在 App 發起出金時被拒絕,或出金任務進入了 Audit 步驟。
黑名單命中
hk-withdraw-blacklist-go 檢查出金目標賬戶是否在黑名單中。命中黑名單的出金會被直接拒絕,不會創建出金任務。
運營處理:
- 確認黑名單命中原因
- 如果是誤報,聯繫風控團隊更新黑名單
- 用戶需要重新發起出金
高風險標記
用戶賬戶被風控標記為高風險時,出金會多一步 Audit 審核。這不是拒絕——審核通過後出金正常進行。
場景五:出金後沖正
症狀:出金已完成(狀態=已完成),但需要把資金追回。
沖正是低頻但影響重大的操作,可能的觸發原因:
| 原因 | 說明 |
|---|---|
| 銀行退回 | 銀行側退回了已匯出的資金 |
| 錯誤出金 | 運營發現出金信息有誤(如出錯了用戶) |
| 風控事後攔截 | 出金完成後風控發現異常 |
沖正流程:
- 運營在 OA 發起沖正(動作:REVERSE)
- 系統檢查當前狀態——只有"已完成"的任務才能沖正
- 執行沖正:更新任務狀態為"已沖正"(5)
- SBA 執行反向資金操作
- 通知用戶出金已撤回
沖正後,任務狀態變為 5(REVERSE)。
場景六:用戶無法發起出金
症狀:用戶在 App 點擊出金時報錯或無法提交。
| 原因 | 用戶看到的 | 錯誤碼 | 解決方式 |
|---|---|---|---|
| 賬戶凍結 | "賬戶異常,無法出金" | — | 檢查凍結類型(CASH_OUT=2),聯繫相關團隊解凍 |
| 出金限制(風控) | "您的賬戶暫時無法出金" | 140670003 | 檢查是否有出金限制標記 |
| 黑名單 | "賬戶被限制提取資金" | — | 確認黑名單原因,聯繫風控團隊 |
| 銀行卡無效 | "銀行卡不存在" | 140670002 | 引導用戶重新綁定銀行卡 |
| 餘額不足 | "證券帳戶餘額不足" | 140670005 | 可能有資金被凍結(貨幣兌換、基金等) |
| 穿倉 | "賬戶存在欠款" | 140670004 | 用戶需補足欠款後才能出金 |
| GDCA 未完成 | "未完成 GDCA" | 140670009 | 引導用戶完成 GDCA 認證 |
| NSS 問卷未完成 | "未完成 NSS 問卷" | 140670008 | 引導用戶完成 NSS 問卷 |
| 不動賬戶/休眠戶 | "休眠戶不支持出金" | 140670006 | 用戶需先激活賬戶 |
| 在線開戶未入金滿額 | "綁卡須轉賬 ≥ 10,000 港元" | 140670011 | 引導用戶先入金滿足門檻 |
| 銀行賬戶未認證 | "銀行賬戶還未通過認證" | — | 引導用戶完成銀行認證 |
| 天星銀證未授權 | "未授權銀證" | — | 僅銀行發起出金場景,引導授權 |
| 大陸銀行卡 | "不支持提取到中國大陸銀行賬戶" | — | 引導用戶使用香港銀行卡 |
| A 股通 CNH 限制 | "CNH 僅支持提取到香港銀行" | — | 選擇香港銀行賬戶出金 |
| 融資可提不足 | "超出現金可提金額" | — | 確認融資保證金要求 |
| Payoneer 限制 | "Payoneer 賬戶不支持出金" | — | 選擇其他銀行卡 |
| 證券帳戶不存在 | "未開通證券帳戶/已銷戶" | 140670007 | 引導用戶開戶 |
凍結類型速查 → 出金規則手冊 § 凍結類型 前置校驗錯誤碼 → 出金數據字典 § 前置校驗錯誤碼
場景七:銀證授權異常
症狀:用戶無法通過 BST 通道出金,或出金卡在 Confirm 步驟提示"銀證授權狀態異常"。
這類異常主要影響天星 BST 通道(Mandate 模型),招行/民生的傳統簽約模式較少出現。
| 異常 | 症狀 | 可能原因 | 處理 |
|---|---|---|---|
| 授權超時 | Mandate 長時間停在 PROCESSING | 銀行處理延遲或通信中斷 | 等待銀行處理;超時後人工查詢天星 API |
| 授權失敗 | Mandate 變為 FAIL | 用戶信息校驗不通過 / 銀行風控 | 查看 140630xxx 錯誤碼,引導用戶重新授權 |
| 授權被取消 | Mandate 變為 CANCEL | 用戶在銀行端取消 | 確認用戶意圖,必要時重新發起授權 |
| 部分市場失敗 | 3 個市場中部分綁定成功 | 某市場的銀證配置異常 | 檢查失敗市場配置,手動補充綁定 |
| 狀態不同步 | 銀行已取消但 moomoo 仍 OPEN | 同步回調丟失 | 手動查詢天星 API 同步最新狀態 |
授權異常 vs 出金異常
授權異常阻止的是所有後續出入金(因為 Mandate 不是 OPEN),而出金異常只影響單筆交易。發現授權異常時應優先處理,避免影響更多交易。
Mandate 狀態碼 → 出金數據字典 § 銀證授權狀態碼
場景八:BST 入金退款(REFUNDED)
症狀:BST 入金已顯示成功到賬,但隨後資金被銀行退回。
這是天星 BST 獨有的異常狀態——REFUNDED。招行/民生的 BST 入金沒有退款機制。
觸發條件:
- 銀行側事後發現交易異常(如合規問題)主動發起退款
- 銀行風控系統事後攔截
系統行為:
- 收到天星 API 返回的 REFUNDED 狀態
- 系統觸發沖正:撤回已入賬到證券帳戶的資金
- 更新入金記錄狀態
- 觸發告警通知運營
運營操作:
- 確認退款原因(查看天星 API 返回的錯誤信息)
- 核實用戶證券帳戶餘額是否已正確回滾
- 通知用戶並說明原因
- 如需重新入金,引導用戶發起新的入金操作
REFUNDED ≠ 入金失敗
入金失敗(FAILED)是指銀行拒絕了入金指令,資金從未到賬。REFUNDED 是入金已經成功後銀行又把錢退回來——系統需要做沖正操作,比處理普通失敗更複雜。
出金排障中絕對不要做的事
- 不要對"處理中"狀態的任務執行沖正——資金可能正在銀行側流轉,強行沖正會導致資金狀態不一致
- 不要在 BST 當日 15:55 截止後重新觸發
startTransfer()——會導致次日重複出金 - 不要手動修改數據庫中的任務狀態碼繞過審批步驟——破壞審計鏈,違反內控要求
- 不要在銀行回調碼為 -5(超時)時立即駁回任務——系統會自動重試,大部分秒級恢復
按通道故障排查
上面按"症狀"排查,這裡補充按"出金通道"分類的常見故障。12 種 method 碼對應的通道詳見 銀行能力矩陣 § 出金方法碼。
BST 銀證出金(method=auto_bs)— 詳細 Runbook
Runbook:BST 出金未到賬
觸發:客戶反映銀證出金已顯示"已完成"但資金未到銀行賬戶
第 1 分鐘 — 確認狀態:
- CRM 出金任務 → 查任務狀態欄位和銀行回調結果
- 招行/民生:回調碼 = -5(超時)→ 系統自動切換備用 server,等待重試結果
- 招行/民生:回調碼 = -6(拒絕)→ 銀行明確拒絕,查看拒絕原因
- 天星:狀態 = PENDING → 輪詢中,等待
AsbBstTransfer完成(最多 10 次)
第 5 分鐘 — 深入排查: 5. 天星輪詢 10 次用盡仍 PENDING → 進入 SyncAsbBstWithdraw 2 小時兜底窗口,此時不要人工操作 6. 天星返回 FAILED → 查看 140630xxx 錯誤碼 → 釋放凍結資金 → 通知用戶 7. 招行/民生重試也失敗 → 確認銀行側資金是否已扣出(關鍵!)
第 15 分鐘 — 升級: 8. 天星 2 小時兜底窗口結束仍未回調 → 嚴重告警,人工查詢天星 API 確認銀行側實際狀態 9. 招行/民生確認資金已扣出但系統未更新 → 聯繫銀行對接人 + 通知技術運維手動同步狀態
中銀 FTS 出金(method=boc / boc_fps / tele_transfer)
| 異常 | 可能原因 | 處理 |
|---|---|---|
| FTS 文件未送達 | SFTP 連接異常或 S14 文件生成失敗 | 檢查 bochk_relay 日誌,確認 SFTP 連通性 |
| 狀態長時間無更新 | S16 回執文件未返回 | 手動登錄中銀 FTS 系統查詢,確認文件狀態 |
| 狀態 F(失敗) | 收款信息有誤或賬戶異常 | 查看錯誤描述,聯繫中銀確認後修正信息重新出金 |
| 狀態 R(退回) | 銀行退回已匯出資金 | 確認退回原因,必要時修正收款信息重新發起 |
| 狀態 C(取消) | 出金被取消 | 確認取消來源(系統/運營/銀行),必要時重新發起 |
| FPS 排除銀行命中 | 收款銀行在 FPS 排除列表中 | 改用 boc(同行)或 tele_transfer(跨境)通道 |
廣發 FPS API(method=cgb_fps_api)
| 異常 | 可能原因 | 處理 |
|---|---|---|
| 狀態碼判斷錯誤 | 2063 和 2065 的同一狀態碼含義相反 | 確認消息類型再判斷 → 廣發狀態碼反轉 |
| 批量降級為單筆 | 2064 批量發送失敗 | 系統自動拆為 2063 單筆重發,檢查降級日誌 |
| SIGN_ERROR | 簽名或驗簽失敗 | 檢查簽名密鑰配置,確認廣發側是否更換了密鑰 |
| A012 重複流水號 | 請求 ID 重複 | 確認是否為重複發送,不可重試 |
| A014 系統繁忙 | 銀行側負載高 | 系統自動重試,持續失敗則等待恢復 |
| UNKNOWN 狀態 | 批量結果無法確認 | 需人工登錄廣發系統查詢確認 |
企業網銀出金(method=hase / hsbc)
| 異常 | 可能原因 | 處理 |
|---|---|---|
| 長時間未操作 | 運營未及時登錄網銀執行轉賬 | 檢查運營排班,確認 Remittance 步驟是否已觸發 |
| 網銀 session 超時 | 銀行網銀登錄過期 | 重新登錄網銀,繼續操作 |
| 轉賬被銀行拒絕 | 金額超限或收款信息有誤 | 核實銀行側限額和收款信息,修正後重新操作 |
渣打 FPS(method=sc)
| 異常 | 可能原因 | 處理 |
|---|---|---|
| Webhook 未收到 | 渣打推送延遲或 endpoint 不可用 | 主動調用 Payment Status 接口查詢實際狀態 |
| FAILED 狀態 | FPS 轉賬失敗 | 查看原因碼,必要時換通道 → 渣打狀態碼 |
| RETURNED 狀態 | 銀行退回轉賬 | 確認退回原因,修正收款信息後重新出金 |
| JWT 認證失敗 | Token 過期(僅 30 秒有效) | 檢查伺服器 NTP 時鐘同步 |
EWB 電匯(method=ewb)
| 異常 | 可能原因 | 處理 |
|---|---|---|
| 到賬時間長 | 跨境電匯通常 1-3 個工作日 | 正常等待,超過 3 日聯繫 EWB 確認 |
| 轉賬被退回 | 收款信息有誤(SWIFT 代碼/賬號等) | 核實收款信息後重新發起 |
CHATS/RTGS(method=chats_rtgs)
| 異常 | 可能原因 | 處理 |
|---|---|---|
| 清算延遲 | CHATS 系統每日有固定清算窗口 | 在清算時間內等待,非工作時間順延至下一工作日 |
| 金額不到賬 | 清算手續費扣減 | 屬正常,告知用戶銀行清算可能產生手續費 |
人工出金(method=manual)
| 異常 | 可能原因 | 處理 |
|---|---|---|
| 長時間處理中 | 運營未手動操作工銀網銀 | 檢查排班和任務分配,手動完成轉賬 |
| 轉賬失敗 | 工銀賬戶餘額不足或收款信息有誤 | 核實後重新操作 |
運營工具清單
| 工具 | 用途 | 所需權限 |
|---|---|---|
| 出金任務列表 | 查看/篩選所有出金任務 | — |
| Audit 審核 | 高風險出金審核 | PERMISSION_CASH_TASKS_OUT_AUDIT |
| Confirm 確認 | 確認銀行卡和通道 | PERMISSION_CASH_TASKS_OUT_CONFIRM |
| Remittance 匯款 | 執行出金轉賬 | PERMISSION_CASH_TASKS_OUT_REMIT |
| 沖正 | 撤回已完成的出金 | — |
| 跟進 | 標記任務為跟進中 | — |
| 轉交 | 將任務轉給其他運營 | — |
| Mandate 狀態查詢 | 查詢銀證授權狀態(天星) | — |
| BST 輪詢狀態 | 查看天星輪詢進度和結果 | — |
監控與告警
系統通過以下機制監控出金異常:
| 監控項 | 方式 | 告警條件 | 告警渠道 |
|---|---|---|---|
| 隊列事件堆積 | cron 每分鐘檢查 | 待處理事件數超過閾值 | 飛書告警 |
| BST 輪詢超時 | 天星 SyncAsbBstWithdraw 兜底 | 2 小時窗口後仍 PENDING | 飛書告警 |
| 自動出金餘額不足 | autoOut() 扣減時判斷 | 餘額 < alarm_amount | 飛書告警 |
| 自動出金餘額熔斷 | autoOut() 扣減時判斷 | 餘額 < stop_amount | 飛書告警 + 自動關閉該幣種自動出金 |
| 天星 Mandate 異常 | 定時狀態同步 | Mandate 狀態非 OPEN 但有出金任務 | 飛書告警 |
| 招行/民生回調異常 | 回調處理 | 回調碼 = -5(超時)或 -6(拒絕) | 飛書告警 |
告警處理優先級
收到告警時按以下優先級處理:
| 優先級 | 告警 | 影響 | 操作 |
|---|---|---|---|
| P0 | 隊列事件堆積 | 所有出金任務卡住不推進 | 檢查隊列消費者進程是否在運行,重啟服務 |
| P0 | 自動出金餘額熔斷 | 該幣種所有 BST 出金降級為人工 | "充值" auto_settings 餘額 + 重新開啟開關 |
| P1 | BST 輪詢超時 | 單筆天星出金狀態不明 | 人工查詢天星 API 確認銀行側狀態 |
| P1 | 招行/民生回調 -6 | 單筆出金被銀行拒絕 | 聯繫銀行確認拒絕原因,可能需換通道 |
| P2 | 餘額報警 | 告知餘額接近熔斷線 | 關注後續出金量,必要時提前"充值" |
| P2 | Mandate 異常 | 影響該用戶後續所有出入金 | 引導用戶重新授權 |
常見誤解
| 誤解 | 事實 |
|---|---|
| "用戶說錢沒到就是系統故障" | 大部分是審批流程還在進行中——尤其是非 BST 通道需要運營手動操作多個步驟。先按診斷流程圖排查任務狀態 |
| "BST 回調超時(-5)就是出金失敗" | 不是。系統會自動切換備用 exit_server 重試,通常秒級恢復。只有重試也失敗才需要人工介入 |
| "自動出金條件不滿足是系統故障" | 是正常的安全機制,不是故障。運營確認金額和操作合理後手動觸發執行即可 |
| "沖正後資金會自動退回用戶銀行卡" | 不會。沖正只是把"已完成"的出金在系統內撤回(狀態改為 REVERSE),資金回到證券帳戶。退回銀行卡是另一個操作 |
讀完之後
| 我想... | 去看 |
|---|---|
| 理解出金完整流程(才能排查卡在哪一步) | 出金生命週期 |
| 看某條規則的詳細解釋 | 出金規則手冊 |
| 看某通道的技術執行細節 | 通道執行手冊 |
| 查回調碼、狀態碼的具體數字 | 出金數據字典 |
| 深入瞭解 BST 銀行異常處理 | 內銀系 BST 總覽 |