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 TransferCheque
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 WithdrawalBank 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, BANKCOMMChoose 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)
SCBFPS: 7x24Quarterly upgrade (advance notice)
CGBFPS API: 7x24Ad-hoc
ICBCBank-Enterprise Direct: 7x24Saturday 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🟢 NormalDeposit only
CMB🟢 Normal🟢 Normal
CMBC (MS)🟢 Normal🟢 Normal
Airstar🟢 Normal🟢 Normal
EWB🟢 Normal🟢 Normal
CCB🟢 NormalDeposit only
DBS🟢 NormalDeposit only
BANKCOMM🟢 NormalDeposit 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 团队使用