星展 DBS
本頁說明
講什麼:星展銀行的 API 流水採集、子賬戶優先匹配模式、SubAccountSDK 集成的完整業務規則 適合誰:需要了解星展對接細節的產品經理 前置閱讀:銀行能力矩陣預計閱讀:4 分鐘 負責人:入金產品經理
核心要點:星展的核心特點是子賬戶優先匹配——每個用戶有獨立的 DBS 子賬戶,入金先按子賬戶精確匹配再走通用邏輯。
能力總覽
| 能力 | 支持情況 | 協議/通道 | 核心服務 |
|---|---|---|---|
| 入金流水採集 | ✅ | API 定時拉取 | 標準 BankFlow 採集 |
| 子賬戶入金 | ✅ | SubAccountSDK | DbsMatch 子賬戶匹配 |
| 出金 | ❌ | — | — |
| eDDA/eDDI | ❌ | — | — |
| FPS | ❌ | — | — |
| 銀證 BST | ❌ | — | — |
星展是子賬戶匹配模式的典型代表——匹配邏輯圍繞子賬戶歸屬展開,用戶必須有子賬戶歷史記錄才能匹配。HKD 自動入賬容差高達 -350,是所有銀行中最寬的自動入賬容差。
渠道接口概覽
| 維度 | 說明 |
|---|---|
| Protocol | API |
| 數據採集 | 定時拉取 |
| 子賬戶管理 | SubAccountSDK |
| IMPORT_BANK_ID | 16 (DBS) |
| TransType | 208 |
| 匹配引擎 | DbsMatch |
入金:API 流水採集
採集方式
星展通過標準 API 接口提供流水數據,系統定時拉取後寫入統一的 BankFlow 格式。
數據流
API 接口字段
星展的流水數據基於通用 BankFlow 格式,包含以下關鍵字段:
| 字段 | 說明 | 用途 |
|---|---|---|
| transaction_id | 交易唯一標識 | 去重唯一鍵 |
| transaction_date | 交易日期 | 日期窗口匹配 |
| value_date | 起息日 | 輔助日期參考 |
| currency | 幣種 | 幣種匹配條件 |
| amount | 交易金額 | 金額容差匹配 |
| payer_name | 付款人姓名 | 姓名精確匹配 |
| payer_account | 付款人銀行賬號 | 子賬戶匹配核心字段 |
| beneficiary_account | 收款賬號 | moomoo 收款賬戶標識 |
| transaction_type | 交易類型 | 區分轉入/轉出 |
| remarks | 交易備註 | 補充信息 |
關鍵字段
payer_account(付款人銀行賬號)是 DBS 匹配的核心字段——系統用它去 SubAccountSDK 查詢是否屬於某個用戶的已分配子賬戶。
匹配規則 (DbsMatch)
核心特徵:子賬戶優先匹配
星展採用子賬戶優先匹配模式——與其他銀行先看金額/姓名不同,星展首先檢查流水賬號是否在用戶的子賬戶列表中。只有子賬戶檢查通過,才進入後續的金額和姓名匹配。
| 維度 | 規則 | 說明 |
|---|---|---|
| 自動入賬 | ✅ 已啟用 | 子賬戶+金額+姓名全部通過時自動入賬 |
| 前置條件 | 子賬戶歷史檢查 | 必須通過 SubAccountSDK 驗證 |
| 幣種匹配 | 必須一致 | 流水幣種 = 申請幣種 |
| 姓名匹配 | 英文精確匹配 | 自動入賬條件之一 |
| 日期窗口 | -3 ~ +2 天 (daySimilar) | 標準日期規則 |
金額容差
| 場景 | HKD 容差 | USD 容差 |
|---|---|---|
| 自動入賬 | CRM - 350 ≤ 流水 ≤ CRM | CRM - 50 ≤ 流水 ≤ CRM |
CRM-350 HKD 是所有銀行中最寬的自動入賬容差
為什麼這麼大? 星展的子賬戶入金通常涉及跨行轉賬,中間可能經過多個中轉行,每個中轉行可能收取手續費。由於子賬戶本身已經證明了資金歸屬(只有持有該子賬戶的用戶才能轉入),系統可以放心使用更大的容差來覆蓋不確定的手續費。
SubAccountSDK 子賬戶體系
SubAccountSDK 是子賬戶管理的核心組件,負責維護用戶與子賬戶的映射關係:
| 功能 | 說明 |
|---|---|
| 子賬戶分配 | 為每個用戶分配唯一的 DBS 子賬戶號 |
| 歸屬查詢 | 根據銀行賬號反查所屬用戶 |
| 歷史記錄 | 維護用戶的子賬戶使用歷史 |
| 跨銀行支持 | 同一 SDK 同時服務 DBS、SCB 等子賬戶銀行 |
子賬戶匹配的核心邏輯:
完整匹配邏輯
| 條件組合 | 匹配結果 | 說明 |
|---|---|---|
| 幣種匹配 + 子賬戶歷史存在 + 姓名精確 + 金額在容差內 | 自動入賬 (Deposit Match) | 最理想情況,系統自動完成入賬 |
| 幣種匹配 + 子賬戶歷史存在 | 普通匹配 | 子賬戶本身證明資金歸屬 |
| 幣種匹配 + 子賬戶歷史不存在 | 不匹配 | 無法確認資金歸屬 |
| 幣種不匹配 | 不匹配 | 基礎條件不滿足 |
為什麼子賬戶存在就能返回普通匹配? 子賬戶是分配給特定用戶的唯一賬號。如果流水的付款賬號在某用戶的子賬戶列表中,即使金額或姓名不完全匹配(可能因手續費扣減或姓名格式差異),也可以合理推斷這筆錢屬於該用戶。運營人員只需做最終確認。
匹配條件詳解
| 條件 | 檢查方法 | 自動入賬 | 普通匹配 |
|---|---|---|---|
| 幣種 | 直接比較 | ✅ 必須 | ✅ 必須 |
| 子賬戶歸屬 | SubAccountSDK 查詢 | ✅ 必須 | ✅ 必須 |
| 姓名 | 英文精確匹配 | ✅ 必須 | ❌ 不要求 |
| 金額 | amountSimilarForAuto | ✅ 必須 | ❌ 不要求 |
| 日期 | daySimilar (-3~+2) | ✅ 必須 | ❌ 不要求 |
定時任務
| 任務 | 頻率 | 說明 |
|---|---|---|
| 流水採集 | 定時拉取 | 從星展 API 獲取最新流水 |
| match:dbs | 每 3 分鐘 | 執行星展流水匹配 |
與其他子賬戶銀行對比
星展不是唯一支持子賬戶的銀行,以下是子賬戶銀行的橫向對比:
| 維度 | 星展 DBS | EWB 子賬戶 | 渣打 SCB |
|---|---|---|---|
| bank_id | 16 | 38 | — |
| 匹配引擎 | DbsMatch | EwbSubAccountMatch | — |
| 子賬戶 SDK | ✅ SubAccountSDK | ❌ 獨立邏輯 | ✅ SubAccountSDK |
| 自動入賬 | ✅ | ✅ | — |
| HKD 自動入賬容差 | -350 | -40 | — |
| USD 自動入賬容差 | -50 | ❌ 不支持 | — |
| 子賬戶檢查 | 前置條件 | 隱含在匹配中 | 前置條件 |
| 無子賬戶時 | 不匹配 | 不匹配 | — |
DBS 容差為什麼遠大於 EWB 子賬戶? EWB 子賬戶以本地 HKD 轉賬為主,手續費低;DBS 子賬戶涉及更多跨行轉賬場景,中轉費用不確定性更高。
子賬戶入金全流程
從用戶視角看,DBS 子賬戶入金的完整流程如下:
需求變更指引
| 變更需求 | 改動位置 | 說明 |
|---|---|---|
| 修改自動入賬容差 | DbsMatch.php → amountSimilarForAuto() | 調整 HKD -350 / USD -50 閾值 |
| 修改子賬戶匹配邏輯 | DbsMatch.php → SubAccountSDK 調用 | 調整子賬戶歸屬驗證規則 |
| 新增子賬戶來源 | SubAccountSDK 配置 | 添加新的子賬戶分配渠道 |
| 啟用輔助姓名匹配 | DbsMatch.php → 改為 nameSimilar() | 從精確匹配改為相似匹配 |
| 修改日期窗口 | DbsMatch.php → daySimilar() | 調整 -3~+2 天範圍 |
| 新增支持幣種 | DbsMatch.php → 幣種判斷 + 容差配置 | 添加新幣種的匹配規則 |
| 修改匹配頻率 | deposit/doc/crontab.sh → match:dbs | 調整 cron 間隔 |
| 子賬戶分配策略變更 | SubAccountSDK → 分配邏輯 | 修改子賬戶號的生成/分配規則 |
監控與告警
| 告警項 | 觸發條件 | 嚴重度 | 處理步驟 |
|---|---|---|---|
| 子賬戶 API 連接超時 | SubAccountSDK 請求超時 | 🟡 中 | 檢查網路連通性,確認星展 API 是否正常 |
| 流水採集延遲 | API 返回數據滯後 | 🟡 中 | 確認查詢時間範圍,必要時手動補採 |
| 子賬戶不匹配 | 流水賬號與系統記錄不一致 | 🔴 高 | 核實子賬戶映射關係,手動修正 |
SubAccountSDK 接口詳情
流水查詢接口
| 字段 | 類型 | 必填 | 描述 |
|---|---|---|---|
sub_account_id | string | ✅ | 星展子賬戶 ID |
start_date | string | ✅ | 查詢起始日期。格式 YYYY-MM-DD |
end_date | string | ✅ | 查詢結束日期。格式 YYYY-MM-DD |
currency | string | ❌ | 幣種過濾。取值 HKD / USD |
流水響應字段
| 字段 | 類型 | 描述 |
|---|---|---|
transaction_id | string | 交易唯一 ID |
transaction_date | datetime | 交易日期時間 |
amount | decimal | 交易金額 |
currency | string | 幣種 |
balance_after | decimal | 交易後餘額 |
payer_name | string | 付款人姓名 |
payer_account | string | 付款人賬號 |
reference | string | 交易參考號 |
自動入賬 vs 普通匹配
星展的匹配規則區分兩種模式:
| 維度 | 自動入賬 | 普通匹配 |
|---|---|---|
| 金額容差 (HKD) | -350 | -420 |
| 金額容差 (USD) | -50 | -60 |
| 日期窗口 | -3~+2 天 | -3~+2 天 |
| 子賬戶校驗 | ✅ 必須校驗歷史 | ❌ 不校驗 |
| 人工確認 | 不需要 | 需要 |
| 適用場景 | 小額常規入金 | 大額或首次入金 |
子賬戶歷史校驗
自動入賬要求該子賬戶歷史上至少有一筆成功入金記錄。新開子賬戶的首筆入金不會自動入賬,需要運營人工匹配確認。
讀完之後
| 我想... | 去看 |
|---|---|
| 看星展在各銀行中的位置 | 銀行能力矩陣 |
| 了解匹配引擎的完整邏輯 | 匹配與自動入賬 |
| 看另一家子賬戶銀行(EWB) | EWB |
| 對比渣打的子賬戶入金 | 渣打 SCB |
| 查 TransType 和 Bank ID 對照 | 入金規則速查 |