沖正/退款指引
核心要點:沖正是將已入帳/已匯出的資金追回的反向操作,風險高且不可撤銷——操作前必須確認銀行側狀態,防止資金狀態不一致。
沖正 vs 退款
| 術語 | 方向 | 含義 |
|---|---|---|
| 入金沖正 | 證券帳戶 → 用戶銀行 | 已入帳的資金被撤回(如銀行 chargeback、錯誤入帳) |
| 出金沖正 | 用戶銀行 → 證券帳戶 | 已匯出的資金被追回(如銀行退回、錯誤出金) |
| BST 退款 (REFUNDED) | 入金成功後銀行退回 | 天星 BST 獨有——銀行事後發起退款 |
三者的共同點:都涉及已完成交易的反向資金操作,影響重大、不可二次撤銷。
入金沖正
Runbook:入金沖正
觸發:收到銀行 chargeback / 發現錯誤入帳 / 風控事後攔截 判斷:確認申請狀態=已完成(2),帳戶餘額充足 操作:按下方步驟執行沖正 驗證:按「沖正後驗證步驟」逐項確認
前置條件
- 入金申請狀態必須為
2(已完成) - 需要權限:
CASH_IN_TASK_REVERSE - 正在處理中(狀態 1)的申請不允許沖正
操作步驟
- 在 OA 找到目標入金申請
- CRM 路徑:存入資金 → 已處理 → 找到對應入金任務 → 點擊「沖正」
- 確認沖正原因:
- 銀行退款 (chargeback) — 銀行方面要求退回資金
- 錯誤入帳 — 匹配錯誤,入帳到了錯誤用戶
- 風控攔截 — 入帳後風控發現異常
- 點擊「沖正」發起操作
- 系統執行:
- 更新申請狀態為
5(已沖正) - SBA 執行反向 Procedure(從證券帳戶扣回資金)
- 如果是通過綁卡入金的,同步解綁銀行卡
- 發送通知告知用戶
- 更新申請狀態為
沖正前核查清單
執行沖正前,逐項確認以下事項:
| # | 檢查項 | CRM 欄位 / 查看方式 | 通過條件 |
|---|---|---|---|
| 1 | 申請狀態 | Apply.status | = 2(已完成),非處理中 |
| 2 | 帳戶可用餘額 | 證券帳戶查詢 | ≥ 沖正金額(用戶可能已用於交易) |
| 3 | 有無在途出金 | 出金任務列表篩選同 UID | 無處理中的出金任務(避免餘額衝突) |
| 4 | 有無持倉佔用 | 持倉查詢 | 確認沖正後餘額仍足夠覆蓋持倉保證金 |
| 5 | 沖正原因確認 | 運營判斷 | 明確且可追溯的沖正理由(chargeback/錯誤入帳/風控) |
| 6 | 大額確認 | Apply.amount | 超過 HKD 50 萬建議先凍結帳戶再操作 |
沖正後驗證步驟
沖正操作執行後,確認以下狀態已正確更新:
| # | 驗證項 | 預期結果 |
|---|---|---|
| 1 | 申請狀態 | Apply.status = 5(已沖正) |
| 2 | SBA Procedure | 反向 Procedure 執行成功(查 SBA 日誌) |
| 3 | 證券帳戶餘額 | 已扣減沖正金額 |
| 4 | 銀行卡綁定 | 如果是綁卡入金,銀行卡已解綁 |
| 5 | 用戶通知 | 沖正通知已發送(App 推送 + 訊息中心) |
風險提示
沖正前必須確認
- 用戶證券帳戶是否有足夠餘額(如果用戶已經用入金資金交易/出金,餘額可能不足)
- 沖正操作不可撤銷——執行後無法再恢復
- 如果涉及大額資金,建議先凍結帳戶再操作
出金沖正
Runbook:出金沖正
觸發:銀行退回資金 / 發現錯誤出金 / 風控事後攔截 判斷:確認任務狀態=已完成(4),資金已實際匯出 操作:按下方步驟執行沖正 驗證:確認任務狀態=已沖正(5),SBA 反向操作成功
前置條件
- 出金任務狀態必須為
4(已完成) - 資金已實際匯出到銀行
操作步驟
- 在 OA 找到目標出金任務
- 確認沖正原因:
- 銀行退回 — 銀行側退回了已匯出的資金
- 錯誤出金 — 出金資訊有誤(如出錯了用戶)
- 風控事後攔截 — 出金完成後風控發現異常
- 發起沖正(動作:REVERSE)
- 系統執行:
- 更新任務狀態為
5(REVERSE) - SBA 執行反向資金操作
- 通知用戶出金已撤回
- 更新任務狀態為
銀行退回場景
銀行退回資金是出金沖正最常見的觸發原因。可能的情況:
- 收款帳戶資訊錯誤(帳號/戶名不匹配)
- 收款銀行拒絕入帳
- 跨境匯款被中轉行退回
收到銀行退回通知後:
- 確認退回資金已到達公司帳戶
- 執行出金沖正
- 通知用戶,引導重新發起出金(如需更正銀行資訊)
BST 入金退款(REFUNDED)
Runbook:BST 退款
觸發:收到天星 API REFUNDED 狀態告警 判斷:確認退款原因(天星 API 錯誤資訊) 操作:核實餘額回滾 → 通知用戶 → 引導重新入金 驗證:證券帳戶餘額已正確扣減,用戶已收到通知
這是天星 BST 獨有的異常狀態——招行/民生沒有退款機制。
觸發條件
- 銀行側事後發現交易異常(合規問題)主動發起退款
- 銀行風控系統事後攔截
系統行為
- 收到天星 API 返回的 REFUNDED 狀態
- 系統自動觸發沖正:撤回已入帳到證券帳戶的資金
- 更新入金記錄狀態
- 觸發告警通知運營
運營操作
- 確認退款原因(查看天星 API 返回的錯誤資訊)
- 核實用戶證券帳戶餘額是否已正確回滾
- 通知用戶並說明原因
- 如需重新入金,引導用戶發起新的入金操作
REFUNDED vs FAILED
- FAILED — 銀行拒絕入金指令,資金從未到帳,無需沖正
- REFUNDED — 入金已成功後銀行退回,系統需執行沖正,更複雜
沖正操作對比
| 入金沖正 | 出金沖正 | BST 退款 | |
|---|---|---|---|
| 觸發方 | 運營主動 | 運營主動 / 銀行退回 | 銀行自動 |
| 資金方向 | 從證券帳戶扣回 | 退回到證券帳戶 | 從證券帳戶扣回 |
| 前置狀態 | 已完成(2) | 已完成(4) | 已完成 |
| 結果狀態 | 已沖正(5) | 已沖正(5) | REFUNDED |
| 涉及銀行 | 所有 | 所有 | 僅天星 |
| 權限 | CASH_IN_TASK_REVERSE | — | 系統自動 |
流水退款操作
流水退款與任務沖正不同——它只標記銀行流水狀態,不影響證券帳戶餘額。適用於銀行流水尚未匹配入帳的場景。
Runbook:流水退款
觸發:孤立流水無法匹配 / 銀行確認誤轉 / 錯誤流水需清理 判斷:確認 Flow.status = 0(待處理),確認流水不應入帳 操作:在 OA 對流水執行退款標記 驗證:Flow.result = 3(RESULT_REFUND)
操作入口
| 操作 | OA 路徑 | 適用場景 |
|---|---|---|
| 單筆退款 | 流水列表 → 選中 → 退款 | 對單條流水標記退款 |
| 批量退款 | 流水列表 → 批量選擇 → 批量退款 | 月末清理多條無法匹配的流水 |
| 解鎖退款 | 流水列表 → 已鎖定流水 → 解鎖並退款 | 調查完成後確認需退款的鎖定流水 |
操作後驗證
| # | 驗證項 | 預期結果 |
|---|---|---|
| 1 | 流水處置結果 | Flow.result = 3(RESULT_REFUND) |
| 2 | 流水狀態 | Flow.status = 1(已處理) |
| 3 | 證券帳戶餘額 | 不變(流水退款不影響證券帳戶) |
流水退款 ≠ 資金退回
流水退款只是系統內部標記——銀行側的資金退回需要另行聯繫銀行處理。標記退款後應通知銀行關係團隊安排實際退款。
退款管理模組
退款管理是獨立於沖正的業務流程,用於處理需要將資金退還給客戶的場景(如三方轉帳退款、不合規入金退款等)。
退款 vs 沖正
| 維度 | 退款 | 入金沖正 |
|---|---|---|
| 觸發方 | 客服/客戶發起 | 運營發起 |
| 影響 | 退還客戶資金到銀行 | 扣回已入帳資金 |
| 流程 | 三步審核制 | 單步操作 |
| CRM 模組 | 退款管理 | 存入資金 → 已處理 |
三步流程
第一步:登記退款
| 維度 | 說明 |
|---|---|
| 觸發 | 客服收到客戶退款請求 |
| 操作 | CRM → 退款管理 → 退款列表 → 登記退款 |
| 內容 | 通過流水記錄登記退款;關聯相關入金指令;補充退款憑證材料 |
| 驗證 | 退款記錄狀態變為「待審核」 |
第二步:審核退款
| 維度 | 說明 |
|---|---|
| 觸發 | 退款列表中出現待審核記錄 |
| 操作 | CRM → 退款管理 → 退款列表 → 審核 |
| 判斷 | 審核退款材料是否完整合規 |
| 通過 | 退款記錄狀態變為「待處理」 |
| 不通過 | 退回客服,要求補充材料或重新聯繫客戶 |
第三步:退款處理
| 維度 | 說明 |
|---|---|
| 觸發 | 退款列表中出現待處理記錄 |
| 操作 | CRM → 退款管理 → 退款轉帳 → 導出退款轉帳檔案 |
| 執行 | 業務人員手動處理退款轉帳(檔案制) |
| 驗證 | 退款完成後標記狀態為「已處理」;確認客戶銀行帳戶收到退款 |
退款轉帳是檔案制
退款轉帳通過導出檔案、上傳網銀的方式執行(與普通出金類似),不是系統自動轉帳。需要按照出金相同的雙人授權流程完成。
退款操作要點
| 要點 | 說明 |
|---|---|
| 退款與流水退還不同 | 退款管理涉及實際資金退還給客戶;流水退還(reversal-guide § 流水退款操作)僅標記流水狀態,不退還資金 |
| 退款時效 | 退款從登記到客戶收到資金通常需要 3~5 個工作日(含審核+銀行處理時間) |
| 跨境退款 | 跨境轉帳退款可能產生額外手續費,需提前告知客戶 |
| 清算日影響 | 沖正和退款會影響 T+1 結算報表。避免在清算日下午 16:00 後發起沖正/退款——跨清算日的資金變動會導致當日結算金額變化,需通知清算團隊手工調整 |
沖正失敗處理
常見失敗原因與處理
| 失敗原因 | 表現 | 處理方式 | 預計恢復時間 |
|---|---|---|---|
| 證券帳戶餘額不足 | SBA 返回餘額不足錯誤 | 凍結帳戶 → 聯繫用戶釋放資金 → 重試 | 數小時~數天 |
| SBA 服務異常 | Procedure 逾時或系統錯誤 | 確認 SBA 服務狀態 → 服務恢復後重試 | 分鐘~小時 |
| 原 Procedure 狀態異常 | PROCEDURE_STATUS_END_OK 校驗不通過 | 人工核實原入金 SBA 記錄 → 手工補償 | 需開發協助 |
分步 Runbook:沖正失敗恢復
第 1 分鐘 — 確認失敗現象
- 沖正按鈕點擊後,Apply.status 是否仍為 2(未變為 5)?
- 查看 OA 返回的錯誤資訊
第 2~5 分鐘 — 定位原因 3. 查 SBA 日誌,搜尋對應的 Task ID 4. 確認 CashDepositReverse Procedure 的執行結果 5. 如果是餘額不足:查用戶可用餘額和持倉佔用
第 5~15 分鐘 — 恢復操作 6. 餘額不足:
- 凍結用戶帳戶(防止繼續交易/出金)
- 聯繫用戶說明情況
- 等用戶賣出持倉 / 出金到帳後,重新沖正
- SBA 異常:
- 確認 SBA 服務已恢復
- 重新點擊沖正
- Procedure 異常:
- 不要反覆重試
- 收集下方「升級資訊清單」中的資訊
- 升級到入金開發團隊
超過 15 分鐘未恢復 → 升級到技術運維值班人員
升級開發時需提供的資訊
沖正失敗需升級開發時,一次性提供以下資訊(減少來回溝通):
| # | 資訊 | 獲取方式 |
|---|---|---|
| 1 | Apply ID / Task ID | CRM 入金/出金任務詳情頁頂部 |
| 2 | SBA Task ID | 任務詳情頁 → SBA 記錄區域 |
| 3 | Procedure 名稱和執行狀態 | SBA 日誌中搜尋 Task ID |
| 4 | 錯誤資訊截圖 | CRM 沖正操作返回的報錯頁面 |
| 5 | 用戶當前可用餘額 | 證券帳戶查詢頁 |
| 6 | 操作時間(精確到分鐘) | 告警時間或操作時間 |
| 7 | 是否有在途出金/持倉佔用 | 出金任務列表 + 持倉查詢 |
沖正時效參考
| 操作 | 正常耗時 | 說明 |
|---|---|---|
| 入金沖正(餘額充足) | 秒級 | SBA Procedure 通常幾秒完成 |
| 入金沖正(餘額不足) | 數小時~數天 | 取決於用戶配合釋放資金的速度 |
| 出金沖正 | 秒級 | 資金退回證券帳戶 |
| BST REFUNDED | 分鐘級 | 系統自動執行 |
| 銀行側實際退款 | 1~5 工作日 | 取決於銀行和轉帳類型 |
批量沖正
當需要對多筆入金執行沖正(如批量錯誤入帳):
- 在 OA 入金列表篩選目標申請
- 確認每筆申請都滿足沖正前置條件(逐筆檢查餘額)
- 使用批量操作功能(
/deposit/batchwith action=reverse) - 注意:批量沖正是逐筆執行的——如果某筆失敗(如餘額不足),不影響其他筆的沖正
- 沖正完成後,逐筆確認 Apply.status = 5
如果需求變更:修改沖正流程
程式碼位置:
- 入金沖正:
deposit/src/app/Business/Deposit.php:877-935(reverse() 方法) - 出金沖正:
withdraw/src/app/Business/Tasks/Handler/Reverse.php - SBA 反向 Procedure:
deposit/src/app/Business/SOA/SBA/Deposit.php:309—turnAround('CashDepositReverse') - 沖正中介軟體:
deposit/src/app/Business/Tasks/Deposit.php:276-287
常見變更場景:
- 沖正前增加審批步驟 → 在沖正邏輯前添加審批檢查(當前沖正是直接執行,無二次審批)
- 沖正後不自動解綁銀行卡 → 移除 reverse() 中的解綁邏輯
- 增加沖正金額上限 → 在沖正前置校驗中添加金額檢查
- 沖正通知模板修改 → 調整通知服務的訊息模板
詳細變更指南 → 入金變更指南 § 修改沖正流程 產品視角的退款機制 → 退款與沖正
讀完之後
| 我想... | 去看 |
|---|---|
| 排查入金沖正的完整場景 | 入金排障 |
| 排查出金沖正和銀行退回 | 出金排障 |
| 了解天星 REFUNDED 技術細節 | 內銀系 BST 總覽 |
| 查凍結類型和出金規則 | 出金規則手冊 |
| 查狀態碼和錯誤碼 | 統一錯誤碼中心 |
| 了解三種退款機制的產品邏輯 | 退款與沖正 |
| 查沖正相關的狀態碼和 API | 入金規則速查 § 沖正參考數據 |
| 了解 CRM 各模組操作 | CRM 操作地圖 |
| 了解 eDDA 扣款失敗處理 | eDDA 排障指引 |