Frequently Asked Questions
Page Info
What: High-frequency general questions about the deposit and withdrawal system — mechanism-level questions not limited to any specific bank Audience: All readers — quickly understand "why the system is designed this way" Prerequisites: Onboarding GuideReading time: 3 minutes Owner: Deposit & Withdrawal Product Team
Key takeaway: Auto-deposit requires all 5 preconditions to be met simultaneously (amount, currency, time window, bank card, match quality). If any one is not met, it downgrades to manual review — this is a safety valve, not a block.
General Questions
Why did money arrive but not auto-deposit?
Auto-deposit requires all 5 preconditions to be met simultaneously. If any one is not met, it downgrades to manual review (safety valve, not a block):
| # | Condition | Common Failure Reasons |
|---|---|---|
| 1 | Amount within auto-deposit limit | HKD > 2M / USD > 300K |
| 2 | Statement not manually marked as rejected | Operations has flagged this statement |
| 3 | Within auto-processing time window | Outside business hours, 2412 reconciliation pause window (08:55-09:00, 16:05-16:10) |
| 4 | One statement maps to only one user | Amount/name matches multiple users |
| 5 | User's daily auto-deposits do not exceed 10 | Already 10 auto-deposits on the same day |
Additionally, the matching engine itself requires all five dimensions — amount + currency + name + date + card number — to match.
→ See Matching & Auto-deposit for details
Why does the matching engine run every 3 minutes instead of real-time?
The matching engine uses a database polling model — each run performs a full table scan of all pending records, comparing each one across five dimensions. 3 minutes is the experience-based balance between "user perception" and "database load". Cron configuration:
*/3 * * * * match:boc # BOCHK
*/3 * * * * match:hangseng # Hang Seng
*/3 * * * * match:hsbc # HSBC
*/3 * * * * match:main icbc-new # ICBC
*/3 * * * * match:ccbasia # CCB
*/3 * * * * match:ewb # EWBWhy do amount tolerances differ across banks?
| Bank | Auto-deposit Tolerance | Assisted Match Tolerance | Reason |
|---|---|---|---|
| General Standard | HKD -20 / USD -3 | Same | Local same-bank fee ceiling |
| HSBC | HKD -65 / USD -14 | HKD -420 / USD -60 | Fees deducted directly from received amount |
| DBS | HKD -350 / USD -50 | Same | Sub-account transfer intermediary fees |
| EWB Sub-account | HKD -40 | HKD -100 | Cross-border sub-account fees |
| Cross-border (BOCO) | HKD -300 / USD -45 | Same | Uncontrollable correspondent bank deductions |
| ICBC REMIT | USD -55 | — | Wire transfer intermediary fees |
Why is auto-deposit tolerance stricter than assisted matching? To prevent incorrect crediting when amount differences are large — it's better to have operations confirm (Stripe uses a similar strategy).
Why does withdrawal need multi-layer approval but deposit doesn't?
| Deposit | Withdrawal | |
|---|---|---|
| Fund Direction | Money flows into company account | Money flows out of company account |
| Core Mechanism | Matching ("whose money is this") | Approval ("can this money be released") |
| Error Consequences | Reversal can recover funds (money is in our hands) | Once remitted, very hard to recover |
| Safety Mechanisms | Five-dimensional matching + 5 auto-conditions | Three-step approval + 6 auto-conditions + three-tier limits |
If the 6 auto-withdrawal conditions are not met, does that mean withdrawal fails?
No. Failing the conditions only downgrades from "auto-withdrawal" to "manual approval" — operations can still execute after confirmation. The 6 conditions are a safety valve, not a blocker.
Looking for a Specific Bank's Questions?
Specific rules for each bank's deposit/withdrawal/matching/exceptions/limits/timeliness are in the corresponding bank pages:
| Bank | Page | Key Features |
|---|---|---|
| BOCHK | BOCHK | B2E statement collection, FPS matching, cross-border tolerance |
| HSBC | HSBC | MT910 real-time statements, eDDA/eDDI direct debit, token bucket rate limiting |
| Hang Seng | Hang Seng | eDDA/eDDI direct debit, SM2 signatures, pessimistic lock serialization |
| CMB | CMB | BST bank-securities, SM2 Socket, CNH restrictions |
| MS | MS | BST bank-securities, CNH not supported |
| Airstar | Airstar | REST API BST, REFUNDED mechanism, three-tier limits |
| SCB | SCB | FPS collection, Webhook withdrawal |
| CGB | CGB | FPS collection, API batch withdrawal |
| ICBC | ICBC | B2E direct connect, no unique transaction ID, T-1 late statements |
| DBS | DBS | Sub-account matching, high tolerance |
| EWB | EWB | CSV/BAI2 files, dual-engine matching |
| CCB | CCB | BOCO standard matching |
| Bank of Communications | BANKCOMM | Sub-account + BOCO matching |
Cross-bank comparison → Bank Capability Matrix
Troubleshooting FAQ
Deposit
Q: User says FPS deposit has been waiting a long time without crediting. How to troubleshoot?
A: FPS deposit involves three channels (BOCHK/SCB/CGB). Troubleshooting steps:
- Confirm which bank the user transferred to (BOCHK FPS / SCB FPS / CGB FPS)
- Check if bank statement has been collected into the system
- If statement collected but not matched — check if the particulars field can identify the deposit method (most common with BOCHK)
- If statement not collected — check the status of the corresponding bank's collection service
- Detailed troubleshooting → Deposit Troubleshooting / Symptom Quick Reference
Q: eDDA debit suddenly failed, it was working fine before?
A: Most common cause is insufficient balance leading to bank auto-cancelling authorization (Hang Seng specific):
- After Hang Seng returns BRC_8I1 (insufficient balance) multiple consecutive times, it may automatically cancel eDDA authorization
- When user tops up and tries again, they receive FP2414 (authorization not found)
- Solution: Guide user to re-sign eDDA authorization
- HSBC does not auto-cancel, but may enter "dormant" state (MPP02038)
Q: BST deposit succeeded but funds were returned?
A: This is the REFUNDED mechanism unique to Airstar BST. It does not occur with CMB/MS:
- Bank discovers an anomaly after the fact (compliance/risk control) and proactively refunds
- System automatically triggers a reversal operation
- See Withdrawal Troubleshooting § REFUNDED for details
Withdrawal
Q: Withdrawal has been "processing" for a long time. What's happening?
A: Withdrawals go through Audit → Confirm → Remittance three-step approval. Common reasons for being stuck:
- Stuck at Audit: High-risk review queued, awaiting risk control team review
- Stuck at Confirm:
method=null— system cannot auto-select channel, operations needs to manually choose - Stuck at Remittance: Auto-withdrawal conditions not met (amount over limit / over 10 per day, etc.), requires operations to manually trigger
- Non-BST channels (internet banking/FPS) inherently require operations to manually execute multiple steps
Q: Why is Airstar withdrawal slower than CMB/MS?
A: Different mechanisms:
- CMB/MS: Real-time callback, typically completes in seconds. Timeout (-5) auto-switches to backup server
- Airstar: Polling mode — system initiates then polls 10 times for result, with a 2-hour fallback sync after timeout
- Worst case: Airstar withdrawal may take 2+ hours to confirm final status
Q: User's withdrawal was rejected. How to handle?
A: Check the rejection source:
- Audit rejection: High-risk transaction flagged by risk control, contact risk control team to confirm reason
- Bank rejection: Look up the bank's error code → Unified Error Code Center
- Blacklist hit: Withdrawal target account is on blacklist, contact risk control team to confirm if false positive
After Reading
| I want to... | Go to |
|---|---|
| Understand matching engine detailed logic | Matching & Auto-deposit |
| Look up tolerances, timeouts, status codes | Deposit Rules Reference |
| Look up withdrawal approval and limit rules | Withdrawal Rules Manual |
| Check processing time windows and maintenance windows | Deposit Rules Reference § Auto-processing Time Windows |
| Compare bank capabilities | Bank Capability Matrix |