Skip to content

Bank Capability Matrix ​

About This Page

What: A single table overview of each bank's Deposit/Withdrawal/eDDA/FPS/BST capabilities, matching rule quick reference, and deposit/withdrawal method code mapping Audience: Product managers who need to quickly check what a given bank supports Prerequisites: None, consult anytime Reading time: Reference-style, search as needed Owner: Deposit & Withdrawal Product Team


Capability Matrix ​

BankDeposit StatementsWithdrawal RemittanceeDDA/eDDIFPS/BST
BOCHKB2EFTS-FPS
HSBCMT910Online BankingeDDA + eDDI-
Hang Seng HASEHang Seng StatementsOnline BankingeDDA + eDDI-
SCB-FPS-FPS
CGB-FPS API-FPS
ICBCBank-Enterprise Direct---
CMBBSTBST-BST
CMBC (MS)BSTBST-BST
AirstarAPIAPI-BST
EWBCSVWire Transfer--
CCBAPI---
DBSAPI---
BANKCOMMAPI---
ZASub-account---

Channel Classification: The 13 banks are divided into three categories by integration method — BST Channels (CMB/CMBC/Airstar, real-time bidirectional transfers), eDDA/Online Banking Channels (HSBC/Hang Seng, direct debit deposit + online banking withdrawal), FPS/Wire Transfer/Other (BOCHK/SCB/CGB etc., each with independent protocols). The sidebar is organized by these groups.


Integration Protocol Quick Reference ​

BankProtocol TypeTransportCore Service
BOCHKB2E (Bank-to-Enterprise)HTTP POST (XML)bochk_flow_go (Go)
BOCHK WithdrawalFTS (Fund Transfer)SFTP S14/S16 (XML)bochk_relay (Python)
HSBCMT910 (SWIFT)SFTP + GPG Encryptionhsbc_bank_flow_service (Python)
HSBC eDDIeDDA/eDDI APISRPC (Protobuf)sba_hsbc_eddi (Python)
Hang Seng eDDIeDDA/eDDI APISRPC (Protobuf)sba_hase_eddi (Python)
SCBREST APIHTTPS (JSON)scb_service (Go)
CGBFPS MessageHTTPS (XML)cgb_fps_service (Go)
ICBCBank-Enterprise DirectHTTPS + RSA (JSON)icbc_be_relay (Python)
CMBSocket BinaryDedicated TCP (GB18030)cmb_stock_trans (Python)
CMBCSocket BinaryDedicated TCP (GB18030)ms_stock_bank_transaction (Python)
AirstarREST APIHTTPS (JSON)airstar_service (Go)
EWBFile ImportCSV—
CCBREST APIHTTPS (JSON)—
DBSREST APIHTTPS (JSON)—

Deposit Matching Rules Quick Reference ​

When a bank statement arrives, the system needs to match it against the user's deposit application. Each bank has different matching tolerances:

BankAmount Tolerance (HKD/CNH)Amount Tolerance (USD)Date WindowSpecial Rules
BOCHKLocal -20, Cross-border -420Local -3, Cross-border -60+/-15 daysFPS/Online Banking exact match, CHATS -20, Cross-border inward -420
HSBCStandard -420, Auto -65Standard -60, Auto -14No fixed windowMatch by bank card number + amount, no date constraint
Hang Seng-20 (WY/Default) / Exact (ATM/GT/ZP/BP)-3-3~+2 (WY) / Batch time (ATM/GT)Match separately by statement type
EWB-420-60No fixed windowMatch by currency + name + amount, no date constraint
CCB-20-3-3~+4 daysEnglish name exact match
DBS-350 (auto-deposit)-50 (auto-deposit)No fixed windowSub-account history verification takes priority, no date constraint
ICBC-420 (auto) / -20 (CHATS)-60 (auto) / -3+/-15 daysDual old/new matching paths in parallel
BST (3 banks)Exact matchExact matchReal-timeDirect connection, no statement matching needed

Amount Tolerance Explained: "-20" means CRM application amount - 20 <= bank statement amount <= CRM application amount. The deduction is for bank fees, so the statement amount is only allowed to be less than the application amount, never more.

Detailed Date Window Rules (from MatchRule.php)
Rule NameWindowFormulaUsed By
daySimilar-3~+2 daysStatement date - 3 <= Application date <= Statement date + 2Hang Seng (WY/ZP/Default)
daySimilarBoc-3~+4 daysStatement date - 3 <= Application date < Statement date + 4CCB
———HSBC, EWB, and DBS matching logic does not include date window validation.
daySimilarRealTimeSame day~+2 daysStatement time <= Application date <= Statement day + 2Real-time push banks
daySimilarRealTimeFps-1 hour~+2 daysStatement time - 1h <= Application date < Statement day + 2FPS
BOC Custom+/-15 daysApplication date - 15 < Statement date < Application date + 15BOCHK

Withdrawal Method Code Mapping ​

The withdrawal system uses the method field to determine which channel to use. The 12 method codes are:

Method CodeNameCorresponding BankChannel Type
manualICBC TransferICBCManual Processing
auto_bsBST (Bank-Securities Transfer)CMB/CMBC/AirstarBST Auto
checkCheque Transfer—Cheque
tele_transferBOCHK Cross-border WireBOCHKCross-border Wire
bocBOCHK Same-bank WithdrawalBOCHKFTS Same-bank
haseHang Seng Online Banking WithdrawalHang SengCorporate Online Banking
hsbcHSBC Online Banking WithdrawalHSBCCorporate Online Banking
boc_fpsBOCHK FPS WithdrawalBOCHKFPS
cgb_fps_apiFPS API (CGB)CGBFPS API
ewbEWB Wire TransferEWBWire Transfer
chats_rtgsCHATS/RTGS Withdrawal—Bank Clearing
scSCB Online Banking WithdrawalSCBFPS
Method Groups (Method.php)
GroupMeaningIncluded Methods
allEBankMethodAll electronic withdrawalsmanual, boc, hase, hsbc, boc_fps, cgb_fps_api, chats_rtgs, sc
allTeleMethodWire transfer typestele_transfer, ewb
allSetMethodConfigurable methodsAll 9 except auto_bs, ewb, tele_transfer
allTabMethodVisible in admin panelallSetMethod + ewb + tele_transfer

Deposit Bank ID Quick Reference ​

The deposit system identifies bank sources via import_bank_id:

Bank IDBankNotes
7CMBBST deposit
8Hang Seng HASEStatement deposit + eDDI Direct Debit
9BOCHKB2E statements
10ICBCBank-Enterprise Direct statements
11HSBCMT910 statements + eDDI Direct Debit
13CMBC (MS)BST deposit
15CCBAPI statements
16DBSAPI statements
21BANKCOMMAPI statements
12SCBFPS withdrawal statements
34EWBCSV file import
38EWB Sub-accountSub-account CSV
55AirstarBST API

Choose a Bank by Scenario ​

The matrix above shows "what does a bank support". The table below reverses it: "what do I need to do and which banks are available".

I need...Available Banks / ChannelsRecommendedReason
FPS instant depositBOCHK FPS, SCB, CGBBOCHKBroadest user coverage, auto statement collection
eDDA auto direct debit depositHSBC, Hang SengHSBCLarge user base, high OTP security level
BST real-time bidirectional transferCMB, CMBC, AirstarAirstarOnly one supporting online account opening + Mandate authorization
Auto withdrawal (no manual ops)CMB/CMBC/Airstar BST (auto_bs), CGB FPS API (cgb_fps_api)BSTMost mature, all three already live
Large withdrawal (>HKD 1M)Corporate online banking (hase/hsbc), CHATS/RTGSCorporate Online BankingNo per-transaction limit, but requires manual operations
Cross-border withdrawal to MainlandBOCHK cross-border wire (tele_transfer), EWB wire (ewb)BOCHKFTS direct connection, high automation
Sub-account independent depositDBS, EWBDBSAPI auto-collection, EWB requires CSV import
Lowest integration cost pilotEWB (CSV file import)EWBZero development effort, pure file import
Statement collection only (no withdrawal)ICBC, CCB, DBS, BANKCOMM—Choose based on user demographics

Operations Quick Reference: Service Hours & Maintenance Windows ​

BankDeposit Service HoursWithdrawal Service HoursScheduled Maintenance Window
BOCHKB2E: 3 times daily (AM/PM/Evening)FTS: Business daysSunday 02:00~06:00
HSBCMT910: 7x24 real-time pushOnline Banking: Business daysAd-hoc (advance email notification)
Hang Seng HASEStatements: Business daysOnline Banking: Business daysSunday early morning (advance notice)
SCB—FPS: 7x24Quarterly upgrade (advance notice)
CGB—FPS API: 7x24Ad-hoc
ICBCBank-Enterprise Direct: 7x24—Saturday 23:00~Sunday 06:00
CMBBST: Business days 07:00~next day 04:00BST: Business days 07:00~15:55Sunday early morning
CMBC (MS)BST: Business days 07:00~next day 04:00BST: Business days 07:00~15:55Sunday early morning
AirstarBST API: Business days 08:00~22:00BST API: Business days 09:00~15:55Ad-hoc
EWBCSV: Business daysWire Transfer: Business days—

Impact of Maintenance Windows

During maintenance, deposit statements may be delayed and withdrawal instructions may fail to send. When encountering "timeout" alerts within maintenance windows, first confirm whether it falls within the maintenance period before deciding whether to escalate.


Channel Operational Status ​

Manually updated. Operations updates this table when channel anomalies are detected; restored to normal when service recovers.

BankDeposit StatusWithdrawal StatusRecent AnomalyNotes
BOCHK🟢 Normal🟢 Normal——
HSBC🟢 Normal🟢 Normal——
Hang Seng HASE🟢 Normal🟢 Normal——
SCB🟢 Normal🟢 Normal——
CGB—🟢 Normal——
ICBC🟢 Normal——Deposit only
CMB🟢 Normal🟢 Normal——
CMBC (MS)🟢 Normal🟢 Normal——
Airstar🟢 Normal🟢 Normal——
EWB🟢 Normal🟢 Normal——
CCB🟢 Normal——Deposit only
DBS🟢 Normal——Deposit only
BANKCOMM🟢 Normal——Deposit only

If Requirements Change: Onboarding a New Bank

When adding a new bank, update the following locations (in order):

#FileAction
1This page banks/matrix.mdAdd a row to the Capability Matrix, Integration Protocol, and Bank ID tables
2banks/ directoryCreate a new standalone bank page (follow existing page structure)
3docs/.vitepress/config.mtsAdd entry to sidebar Part 3
4appendix/error-codes.mdAdd error code section for the bank
5ops/monitoring.mdIf there are cron jobs/statement collection, add monitoring entries
6deposit/matching.mdIf the bank has deposit matching, add bank-specific rules
7withdraw/channels.mdIf the bank has withdrawal channels, add channel execution instructions
8guide/glossary.mdAdd entry to Bank ID table

After Reading ​

I want to...Go to
Deep dive into a specific bankClick the bank name link in the matrix table above
Understand the full matching engine logicMatching & Auto-Deposit
See withdrawal channel execution detailsChannel Execution Manual
Look up error codes and status codesUnified Error Code Center
Check cron jobs and monitoring for each bankCron Jobs & Monitoring
Was this page helpful?

内部业务文档 · 仅限 moomoo 团队使用