Skip to content

BANKCOMM (Bank of Communications)

About This Page

What: BANKCOMM channel-side interface specification + moomoo-side adaptation logic Audience: PMs understanding integration details / developers locating code / operations understanding bank characteristics Prerequisites: Bank Capability MatrixReading time: 4 minutes Owner: Deposit & Withdrawal Product Team

Key takeaway: BANKCOMM is a standard deposit channel using API statement collection mode.


Capability Overview

CapabilitySupportedProtocol/ChannelCore Service
Deposit Statement CollectionAPI scheduled pushBankFlow standard message
Deposit MatchingSub-account + BOCO cross-border standardBankcommMatch.php
Auto-deposit
Withdrawal
eDDA/eDDI
BST

BANKCOMM is a deposit-only channel — it collects statements via API, uses sub-account + BOCO cross-border standard for match recommendations, but does not support auto-deposit or withdrawal. All match results require operations manual confirmation before crediting.


Core Parameters Quick Reference

ParameterValueDescription
IMPORT_BANK_ID21System bank identifier (BANKCOMM)
TransType203Deposit transaction type
Matching EngineBankcommMatchSub-account + BOCO cross-border standard
Auto-deposit❌ Not supportedAssisted match recommendation only
Withdrawal❌ Not supported

Deposit: API Statement Collection

Collection Method

BANKCOMM provides statement data via scheduled API push. Unlike BOCHK's B2E active pull, BANKCOMM proactively pushes new statements to moomoo on a schedule. The system receives and converts them to standard BankFlow message format.

Data Flow

Statement Field Mapping

Channel-Side Fieldmoomoo-Side FieldDescription
Statement accountsub_account_noSub-account number, used for matching
Transaction amountamountDeposit amount
Transaction currencycurrencyHKD/USD
Transaction datetx_dateTransaction occurrence date
Transaction sequencetx_seqUnique identifier, used for deduplication
Payer infopayer_infoRemitter name and account

Deduplication Mechanism

The system deduplicates based on the sub_account_no + tx_seq + currency + tx_date composite unique key, preventing duplicate statement entries from repeated API pushes.


Matching Rules: BankcommMatch

What is the BOCO Cross-Border Standard

BOCO stands for Bank of China Overseas cross-border standard. Although the name originates from the BOC system, this standard has been reused for all cross-border deposit matching scenarios, including BANKCOMM.

Core characteristics of the BOCO standard:

  • Wider date window: Cross-border remittance transit time is unpredictable, requiring larger date tolerance
  • Larger amount tolerance: Intermediary banks may deduct fees, causing actual received amount to differ from remitted amount
  • Adapts to cross-border uncertainty: Overall design goal is to reduce matching failures caused by cross-border remittance delays and fees

Matching Dimensions

BankcommMatch uses three-dimensional matching: sub-account verification + amount tolerance + date window.

1. Sub-Account Verification

DimensionRuleDescription
Sub-accountStatement account must be in user's historical sub-account listQueried via SubAccountSDK

BANKCOMM deposit statements are linked to users via sub-account numbers. The system maintains a historical sub-account list for each user. During matching, it first verifies whether the account in the statement belongs to a user's sub-account. Only statements that pass sub-account verification proceed to amount and date matching.

SubAccountSDK Call Logic
SubAccountSDK::getSubAccountList($user_id)
→ Returns list of all BANKCOMM sub-accounts bound to user
→ Checks bank_flow.sub_account_no IN list

2. Amount Tolerance (BOCO Cross-Border Standard)

CurrencyTolerance RangeDescription
HKDCRM - 300 ≤ Statement ≤ CRMAllows intermediary bank fees up to 300 HKD
USDCRM - 45 ≤ Statement ≤ CRMAllows intermediary bank fees up to 45 USD

CRM refers to the user-submitted deposit application amount (CRM = Customer Request Money).

Why is the tolerance so large? BANKCOMM deposit scenarios are primarily cross-border remittances. Cross-border transfers pass through one or more intermediary banks, each potentially charging fees. These fees are unknown at remittance time, requiring larger amount tolerance to cover this uncertainty:

  • HKD 300 tolerance covers scenarios of 1-2 intermediary banks each charging 100-150 HKD
  • USD 45 tolerance roughly corresponds to HKD 300 at exchange rate

Comparison with Local Transfer Tolerance

Local banks (e.g., BOCHK FPS) typically have HKD tolerance of only -20, since local transfers have no intermediary bank fees. BANKCOMM's -300 is a typical value among cross-border banks.

3. Date Window (BOCO Window)

DimensionRangeDescription
Date WindowApplication date -7 ~ +4 daysThe widest date window among all banks

Why -7 ~ +4 days?

This is the widest date window among all banks, for three reasons:

  1. Long cross-border transit time: Funds from mainland BANKCOMM to Hong Kong may take 2-5 business days, potentially longer during holidays
  2. Users submit applications early: Some users submit deposit applications before remitting, so the system needs to look back 7 days
  3. Bank processing delays: Bank-side may delay crediting due to compliance reviews, so the system needs to look forward 4 days
Comparison with Other Banks' Date Windows
BankDate WindowScenario
BANKCOMM-7 ~ +4 daysCross-border remittance (widest)
BOCHK+/-15 daysLocal + cross-border (largest absolute value, but symmetric)
SCB-3 ~ +2 daysLocal transfer (standard window)

Matching Flow

Why Auto-Deposit is Not Supported

BANKCOMM doesn't support auto-deposit because:

  1. High cross-border complexity: Intermediary bank fee amounts are uncertain, match confidence is lower than local transfers
  2. Limited sub-account information: Sub-account number and amount alone cannot achieve 100% certainty matching like BST
  3. Risk control requirements: Cross-border deposits involve anti-money laundering compliance, requiring operations manual confirmation of remittance source

Therefore, BankcommMatch results are only presented as recommendations to operations, who manually confirm before crediting.


Bilateral Feature Matrix

FunctionChannel-Side (BANKCOMM)moomoo-SideField MappingDescription
Statement CollectionAPI scheduled pushBankFlow standard messageDirect mappingBANKCOMM pushes, moomoo receives
Sub-account ManagementProvides sub-account infoSubAccountSDKsub_account_noMatching prerequisite
MatchingBankcommMatch.phpSub-account + BOCO standardThree-dimensional matching
Auto-deposit❌ Not supportedManual confirmation only
Withdrawal❌ Not supported
ReconciliationProvides reconciliation filesManual reconciliationNo automated reconciliation

Exception Scenarios

Common Exceptions

Exception ScenarioManifestationHandling
API push delayStatements arrive late, users complain about slow depositsWait for next push; contact BANKCOMM in urgent cases
Sub-account not in listStatement cannot match to any userCheck if user has bound that sub-account; manually add if necessary
Amount difference exceeds toleranceIntermediary bank fees abnormally highOperations manually verify then credit
Duplicate statementsSame statement pushed multiple timesSystem auto-deduplicates, no action needed
Date exceeds windowRemittance in transit exceeds 7 daysOperations manual match; expand window query if necessary

Exception Escalation Path

Discover exception → Operations self-check (sub-account/amount/date)
                   → Developer involvement (BankcommMatch logs)
                   → Bank investigation (contact BANKCOMM liaison)

Operations Guide

Daily Operations

OperationFrequencyDescription
Review match recommendation listDailyConfirm or reject BankcommMatch recommendations
Check unmatched statementsDailyInvestigate if users report deposits not arrived
Sub-account maintenanceAs neededUpdate when users add or change sub-accounts

Deposit Review Key Points

When operations confirm BANKCOMM deposit matches, pay attention to:

  1. Verify sub-account ownership: Confirm the sub-account number in the statement actually belongs to that user
  2. Verify amount reasonableness: Whether fee deduction is within normal range (HKD typically 50-200)
  3. Verify remitter information: Whether remitter name matches the user themselves (AML requirement)
  4. Watch for large deposits: Deposits exceeding certain thresholds require additional review

Scheduled Tasks

TaskFrequencyDescription
Statement CollectionAPI push triggeredReceive BANKCOMM-pushed statement data
match:bankcommScheduled executionExecute BankcommMatch matching
Sub-account SyncDailySync user's latest sub-account information

Change Guide

Change RequirementModification LocationDescription
Modify amount toleranceBankcommMatch.php → BOCO tolerance parametersAdjust HKD/USD tolerance thresholds
Modify date windowBankcommMatch.phpdaySimilarBoco()Adjust -7~+4 day range
Enable auto-depositBankcommMatch.php → add depositInstance returnRequires risk control impact assessment
Modify sub-account logicBankcommMatch.phpSubAccountSDKAdjust sub-account query and verification logic
Add supported currencyBankcommMatch.php → BOCO tolerance tableAdd new currency tolerance configuration
Adjust matching frequencydeposit/doc/crontab.shmatch:bankcommAdjust cron interval
Modify push receiving logicStatement receiving service → BankFlow conversion logicAdapt to BANKCOMM API changes

Enabling Auto-Deposit Requires Caution

If business requires enabling auto-deposit:

  1. Assess cross-border matching false positive risk
  2. May need to add name matching dimension
  3. Requires consultation with risk control team
  4. Recommend grayscale validation on small traffic first

Comparison with Other Cross-Border Banks

DimensionBANKCOMMCGBBOCHK Cross-border
Deposit MethodAPI pushFPS statement collectionB2E API pull
Matching StandardBOCO cross-borderLocal standardLocal + cross-border dual standard
HKD Amount Tolerance-300-20-420 (cross-border) / -20 (local)
Date Window-7 ~ +4 days-3 ~ +2 days+/-15 days
Auto-deposit
Withdrawal✅ (FTS/FPS)

Code Location Quick Reference

ModulePathDescription
Matching Enginedeposit/src/app/Business/Match/BankcommMatch.phpCore matching logic
BOCO ToleranceBankcommMatch.php → BOCO tolerance parametersAmount tolerance configuration
BOCO DateBankcommMatch.phpdaySimilarBoco()Date window logic
Sub-account QuerySubAccountSDKUser sub-account list query
Scheduled Tasksdeposit/doc/crontab.shmatch:bankcomm scheduling

Monitoring & Alerts

Alert ItemTrigger ConditionSeverityHandling Steps
API connection timeoutBANKCOMM API unresponsiveMediumCheck network, confirm BANKCOMM-side service status
BOCO date offsetStatement date inconsistent with BANKCOMM system dateMediumConfirm BOCO date conversion rules, check timezone
Duplicate statement collectionSame statement collected multiple timesMediumCheck deduplication logic, confirm statement unique identifier

API Interface Field Details

Statement Query Request

FieldTypeRequiredDescription
acct_nostringBANKCOMM account number
start_datestringQuery start date. BOCO format
end_datestringQuery end date. BOCO format
currencystringCurrency filter

Statement Response Fields

FieldTypeDescription
txn_datestringTransaction date (BOCO format, needs conversion)
txn_amountdecimalTransaction amount
balancedecimalBalance after transaction
txn_typestringTransaction type code
counterpartystringCounterparty information
narrativestringTransaction summary

Comparison with CCB/DBS BOCO

BANKCOMM, CCB, and DBS all use similar API statement collection models but differ in implementation details:

DimensionBANKCOMMCCBDBS
Interface ProtocolREST API (JSON)REST API (JSON)SubAccountSDK
Date FormatBOCO standardBOCO standardISO 8601
Name MatchingNot requiredExact matchNot required
Amount Tolerance (HKD)-300-20-350 (auto)
Date Window-7~+4 days-3~+4 days-3~+2 days
Sub-account✅ Supported❌ Not supported✅ Supported
Multi-currencyHKD / USD / CNHHKD / USDHKD / USD
Withdrawal Capability❌ Deposit only❌ Deposit only❌ Deposit only

Common Characteristics of These Three Banks

All three banks currently only have deposit statement collection integrated, without withdrawal support. Users needing to withdraw must use other bank channels (such as BST, corporate online banking, FPS, etc.).


After Reading

I want to...Go to
See BANKCOMM's position among all banksBank Capability Matrix
Understand the full matching engine logicMatching & Auto-Deposit
Understand BOCO standard applied at other banksBOCHK
Look up TransType and Bank ID referenceDeposit Reference
See other deposit-only banksCCB, ICBC
Was this page helpful?

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