Skip to content

入金规则速查

本页说明

讲什么:入金相关的所有参考数据——状态码、限额、容差、时效、字段含义。本页是唯一信源,其他页面引用而非重复 适合谁:需要查询具体数字/代码的产品经理和运营人员 前置阅读:无,随时查阅 预计阅读:查阅型,按需搜索 负责人:入金产品经理


快速跳转 — 你可能想做的事:

入金状态码

申请状态(Apply Status)

状态码含义说明
0待处理用户已提交,等待银行流水到达和匹配
1处理中已匹配/已确认扣款,正在执行 SBA 入账
2已完成入金成功,资金已到证券账户
3已驳回超时驳回或运营驳回
4已撤回用户主动取消
5已冲正已入账资金被撤回

流水状态(Flow Status)

状态码含义说明
0待处理银行流水刚到达,等待匹配
1已处理已匹配并完成入金
2错误处理失败,需人工干预
3已锁定运营锁定调查中
4在途资金在途未确认
9已删除标记为无效

匹配结果码

结果码含义后续
0不匹配跳过,等下一轮
1辅助匹配写入匹配表,等运营确认
2完全匹配进入自动入账判定

币种与自动入账限额

币种代码单笔自动入账上限每日自动笔数上限
HKD(港币)12,000,00010 笔/用户
USD(美元)2300,00010 笔/用户
CNH(离岸人民币)32,000,00010 笔/用户
JPY(日元)440,000,00010 笔/用户
SGD(新加坡元)5350,00010 笔/用户

边界说明:限额为单笔判断(非累计),使用闭区间(≤),即金额恰好等于限额时仍可自动入账。超过限额不会失败,只是不能自动入账,需运营人工确认。每日 10 笔限制按自然日(00:00~24:00 HKT)计算,不区分交易日。

为什么是这些限额?

币种限额设计依据
HKD 200 万覆盖 99%+ 的正常入金。超过 200 万的入金极少见,且金额越大误匹配的风险和影响越大
USD 30 万约等于 HKD 200 万(按 ~6.5 汇率),保持各币种限额等价
CNH 200 万与 HKD 等额设置
JPY 4000 万约等于 HKD 200 万(按 ~0.05 汇率)
SGD 35 万约等于 HKD 200 万(按 ~5.7 汇率)
每日 10 笔正常用户极少一天入金超过 3 次。10 笔留了充足余量,同时防止异常批量入金
如果需求变更:修改自动入账限额

代码位置deposit/src/app/Business/Match/MatchBase.php(约第 38-44 行)

MAX_AUTO_DEPOSIT_AMOUNT_HKD = 2000000
MAX_AUTO_DEPOSIT_AMOUNT_USD = 300000
MAX_AUTO_DEPOSIT_AMOUNT_CNH = 2000000
MAX_AUTO_DEPOSIT_AMOUNT_JPY = 40000000
MAX_AUTO_DEPOSIT_AMOUNT_SGD = 350000
MAX_AUTO_DEPOSIT_COUNT = 10  // 每日每用户上限笔数

常见变更场景

  • 调高/调低某币种限额 → 修改对应常量值。注意:这会影响所有银行的自动入账判定
  • 调整每日笔数上限 → 修改 MAX_AUTO_DEPOSIT_COUNT
  • 某银行使用不同限额 → 需在该银行的 Match 类中覆写限额检查逻辑(当前所有银行共用同一限额)

匹配容差规则

标准容差

公式:Apply.amount - 容差 ≤ Flow.amount ≤ Apply.amount(流水金额可比申请少最多"容差"元,闭区间)

场景币种容差
本地转账HKD / CNH / JPY0 ~ 20
本地转账USD / SGD0 ~ 3
跨区/跨行HKD / CNH / JPY0 ~ 420
跨区/跨行USD / SGD0 ~ 60

边界说明:差额恰好等于容差值时仍算匹配。例如 HKD 本地容差 20:申请 50,000、流水 49,980 → 匹配成功。跨区容差更大是因为中转行手续费不可控。

各银行特殊容差

不同银行有各自的容差标准。"自动入账容差"用于全自动入账判定,"辅助匹配容差"用于生成候选匹配对供人工确认——后者更宽松。

银行币种自动入账容差辅助匹配容差
中银(BOCHK)HKD0~200~20
中银(BOCHK)USD0~30~3
汇丰(HSBC)HKD0~650~420
汇丰(HSBC)USD0~140~60
工银亚洲HKD0~200~20
工银亚洲USD0~550~55
星展(DBS)HKD0~3500~350
星展(DBS)USD0~500~50
EWBHKD0~420
EWBUSD0~60
EWB 子账户全币种0~400~100
众安子账户HKD0~3500~350
众安子账户USD0~500~50
新加坡工银HKD0~5000~500
新加坡工银USD0~700~70

匹配时间窗口

流水类型匹配窗口适用银行/场景
标准流水流水日期 -3天 ~ +2天大部分银行常规流水
中银流水流水日期 -3天 ~ +4天中银 B2E(流水延迟较大)
实时流水流水到达时间 ~ +2天MT910、银证等实时推送
实时 FPS流水到达时间 -1小时 ~ +2天FPS(允许流水略早于申请)
非实时流水流水日期 -3天 ~ +2天批量导入的历史流水

边界说明:时间窗口中的"天"按自然日计算(非交易日)。"-3天"指 申请日期 - 3 × 24小时,精确到秒。"流水日期"对于实时流水使用到达时间戳(精确到秒),对于批量流水使用交易日期(精确到天,以 00:00:00 为准)。

为什么不同流水类型用不同窗口?

窗口设计依据
标准 -3/+2 天用户可能先申请后转账(最多提前 3 天申请),或先转账后申请(最多延后 2 天申请)。覆盖绝大部分正常操作时序
中银 +4 天B2E 每日仅 3 次拉取 + 2 小时格式转换,流水可能比交易晚 1~2 天进入系统,因此额外放宽 2 天
FPS -1 小时FPS 秒级到账,但用户可能先转账再申请(银行流水比申请早几秒到几十秒)。-1 小时覆盖这种"先转后申"场景
实时 +2 天实时流水精确到秒,用更精准的时间比较而非天级比较,降低同金额同用户多笔入金的误匹配风险

超时与自动驳回配置

申请超时后系统自动处理,分两阶段:先通知(提醒上传凭证),再驳回。天数按 HKEX 交易日计算。

银行入金方式通知天数驳回天数(通知后)
工银/恒生/中银FPS11
工银/恒生/中银网银同行11
工银/恒生/中银网银跨行(HKD)21
工银/恒生/中银网银跨行(USD/CNH)41
工银/恒生/中银ATM21
工银/恒生/中银支票21
汇丰网银同行11
汇丰网银跨行41
EWB所有方式41
众安子账户所有方式不通知10

补充凭证超时:需补充凭证超 20 个交易日未提供 → 自动驳回。凭证已提供但超 10 个交易日无流水 → 自动驳回。

边界说明:超时天数表中的"天"按 HKEX 交易日计算(排除周末和香港公众假期)。补充凭证超时按交易日计算。两种口径不同——入金超时用交易日是因为银行只在交易日处理转账。

如果需求变更:调整超时驳回天数

代码位置deposit/src/app/Business/AutoNoticeReject.php(约第 371-424 行)

超时通知和驳回天数通过 getConfig() 方法按银行和入金方式配置,返回结构为:

[
    'notice_day' => 通知天数,    // 申请创建后多少交易日发通知
    'reject_day' => 驳回天数,    // 通知发出后多少交易日自动驳回
]

常见变更场景

  • 调整某银行某方式的通知天数 → 在 getConfig() 的对应分支中修改 notice_day
  • 调整补充凭证超时 → 搜索 supplement 相关常量(当前:未提供=20 天,已提供无流水=10 天)
  • 新增银行的超时配置 → 在 getConfig() 中添加新的条件分支
  • 关闭某银行的自动通知(如众安子账户模式) → 将 notice_day 设为 null 或特殊标记

注意

  • 天数按 HKEX 交易日计算(排除周末和公众假期),交易日历维护在 deposit/config/ 目录
  • 修改通知天数会影响用户收到的推送消息时机
  • 驳回后系统会自动发送驳回通知给用户(驳回原因码=9 超时)

自动处理时段

方式营业时段暂停期
BST 银证周一 08:00 ~ 周五 16:00
eDDA(汇丰/恒生)周一 07:00 ~ 周六 10:00
天星银证工作日营业时间
FPS与 BST 类似
匹配引擎7×24(每 3 分钟)自动入账受上述时段限制

每日 16:00~16:10 为账户对账暂停期,所有自动入金处理暂停。

自动入账处理时段(按币种)

不同币种的自动入账开始时间不同——USD 晚于其他币种 2 小时开始,避免美元清算时段干扰:

币种开始时间结束时间周六说明
HKD07:00次日 04:00到 09:55 关闭覆盖港股交易日全时段
USD09:01次日 04:00到 09:55 关闭晚于 HKD,避免美元清算干扰
CNH07:00次日 04:00到 09:55 关闭同 HKD
JPY07:00次日 04:00到 09:55 关闭同 HKD
SGD07:00次日 04:00到 09:55 关闭同 HKD

非处理时段内的流水仍会被匹配引擎匹配,但不会触发自动入账——降级为辅助匹配等运营确认。

配置位置:deposit/src/app/Business/DepositConfigNew.php(USD 特殊开始时间约第 440 行,周六关闭约第 498 行)

2412 暂停窗口(适用所有自动入账):

暂停时段原因影响范围
08:55 ~ 09:00开盘前对账所有自动入账暂停
16:05 ~ 16:10收盘后对账所有自动入账暂停

配置位置:deposit/src/app/Business/DepositConfigNew.php:603-641

eDDA 银行维护窗口:

银行维护时段影响
恒生周日 00:00 ~ 08:30不接受 eDDI 请求
汇丰周日 00:00 ~ 12:00不接受 eDDI 请求

维护时段内提交的 eDDI 指令进入 Blank 状态,下个工作时段自动激活。详见 eDDA 代扣入金 § 处理时段


处理时效参考

方式最快典型最慢
eDDA数分钟~5 分钟数小时(银行侧延迟)
BST 银证~10 分钟~10 分钟下一交易日(非营业时段)
天星银证~10 分钟~10 分钟下一交易日
FPS 转数快3 分钟3~5 分钟下一匹配周期
网银同行2 小时2 小时当日
网银跨行2 天2~3 天4 天(外币)
ATM/柜台2 小时2 小时次交易日 11:00
缴付账单2 小时2 小时次交易日
支票2 天2~3 天3 天
海外汇款3 天5 天5+ 天

各银行流水到达时效

各银行流水的采集方式、协议、到达时效和采集服务的完整对比 → 银行流水采集 § 汇总对比表


驳回原因码

代码含义典型场景
1信息不清楚凭证/信息无法辨认
2网银信息缺失网银转账缺少必要信息
3ATM 信息缺失ATM 凭证缺少必要信息
4银行账户信息缺失缺少银行账户信息
5证券账户异常用户账户状态有问题
6交易被取消银行侧取消了交易
7申请被合并多笔申请合并处理
8重复申请系统检测到重复入金
9超时长时间未收到资金
10其他(港区)香港地区其他原因
11其他(大陆)大陆地区其他原因
12其他(海外)海外地区其他原因
14账户不一致转账人与申请人不一致
15转账信息不足转账凭证信息不完整

入金方式代码

代码Key中文名模式
1bst银证转账Direct
2atmATM/柜台Push
3fpsFPS 转数快Push
4bp缴付账单Push
5ebank网银转账Push
6check支票Push
7subAccount海外汇款Push
8eddaeDDA 恒生Pull
9eddaHSBCeDDA 汇丰Pull
10bstAsb天星银证Direct

入金类型(Deposit Type)

代码类型说明
1NORMAL标准流程——流水匹配后自动入账
2PRE_APPROVAL预审批——用于线上开户场景
3ABNORMAL异常模式——运营在流水系统中手工创建
4TRANS_AUTO自动审批——前端精确匹配后自动审批
5HIGH_RISK高风险——命中风控规则,需人工审核
11NORMAL_HOLD冻结模式——先冻结再入账
21STOCK_HOLD股票定投冻结模式——eDDI 入金后冻结,预留给股票定投扣款
31FUND_PURCHASE_HOLD基金申购冻结模式——eDDI 入金后冻结,预留给基金申购

HOLD 类型说明:代码 11/21/31 统称为 HOLD 类型(HOLD_LIST = [11, 21, 31])。这些类型的入金到账后资金被系统冻结,预留给对应的投资操作。冻结释放时机由投资侧系统控制,非入金系统管辖。

配置位置deposit/src/app/Common/EddiDepositType.php


通知类型

代码类型触发场景
1普通入金通知入金完成
2线上开户绑卡通知线上开户首次入金绑卡成功
3绑卡后入金通知线上开户绑卡后的入金完成
4大陆预开户通知大陆预开户入金到账

核心字段说明

申请关键字段(Apply)

字段业务含义
uid用户 ID(牛牛号),决定申请存入哪张分表
amount用户申请入金金额
real_amount实际到账金额,可能因手续费低于申请金额
currency币种:HKD / USD / CNH
deposit_method入金方式代码(见上表)
status申请状态(0~5,见上表)
export_bank_id付款银行 ID(用户侧)
import_bank_id收款银行 ID(公司侧)
bank_card_number用户银行账号,匹配引擎用来做卡号比对
area付款银行地区:HK / CN / OS
notice_type通知类型(1~4,见上表)
deal_type处理方式:bst(银证)/ eddi(eDDA/eDDI 代扣)/ auto(脚本自动)/ manual(人工)
supplement_status凭证补充状态:0=不需要 / 1=待补充 / 2=已补充
reject_reason驳回原因(见驳回原因码表)
expected_time预计完成时间
founder创建者 ID,0=用户自行发起,>0=运营代创建

流水关键字段(Flow)

字段业务含义
trans_type银行/交易类型代码,决定流水存入哪张分表
amount实际入账金额
currency币种
en_name汇款人英文名,匹配引擎用来做姓名比对
cn_name汇款人中文名
customer_account汇款人银行账号,匹配引擎用来做卡号比对
date到账日期(YYYYMMDD),匹配引擎用来做日期比对
type转账类型(柜台/网银/FPS 等)
status流水处理状态(0~9,见上表)
uid匹配到的用户 ID,初始为 0
apply_id匹配到的申请 ID,初始为 0
abnormal异常标识:0=正常 / 1=异常流水

匹配关键字段(Match)

字段业务含义
flow_id关联的流水 ID
apply_id关联的申请 ID
uid用户 ID
status匹配状态:0=待确认 / 1=已确认 / 2=已忽略

匹配表是临时表——匹配确认或入账完成后,记录会被清理以保持表大小。


数据库分片策略

入金系统涉及的核心表按以下规则分片:

分片规则分片键示例
applysuid % 100用户 IDapplys_42 = uid 尾数为 42 的用户
flows{trans_type}_{YYYYMM}银行类型 + 月份flows_218_202604 = 2026年4月汇丰流水
tasks(id / 1000) % 100任务 IDtasks_05
setup_eddis不分片全量存储
hsbc_eddis / hs_eddis不分片全量存储
matches不分片(临时表)匹配完成后定期清理
配置位置
  • Apply 分表逻辑:deposit/src/app/Business/Apply.phptable() 方法
  • Flow 分表逻辑:deposit/src/app/Business/Flow.php:80CREATE_WHEN_TABLE_NOT_FOUND 配置

定时任务速查

所有入金相关的 Cron 任务汇总:

匹配相关

任务名频率银行关联页面
match:ccbasia每 3 分钟建银亚洲匹配引擎
match:ewb每 3 分钟EWB匹配引擎
match:boc每 3 分钟中银匹配引擎
match:hangseng每 3 分钟恒生匹配引擎
match:hsbc每 3 分钟汇丰匹配引擎
match:main icbc-new每 3 分钟工银匹配引擎
match:main za-sub-account每 3 分钟众安匹配引擎

监控相关

任务名频率职责关联页面
monitor:flow-monitor每 30 分钟流水堆积告警入金排障
abnormal-deposit:search每 30 分钟孤立流水扫描入金排障
abnormal-deposit:update-status每 3 分钟异常入金状态更新入金排障

对账相关

任务名频率职责关联页面
bank_reconciliation:generate16:15 每日当日对账报告
bank_reconciliation:generate --date=yesterday USD09:05 每日昨日 USD 对账
crmbos_reconciliation:generate每小时CRM-BOS 系统间对账
配置位置

所有 Cron 定义:deposit/doc/crontab.sh


银行通道类型代码(TransType)

代码银行类型
101民生银证银证
102招行银证银证
201恒生银行直连
202工银亚洲直连
204民生银行直连
205招商银行直连
203交通银行 BANKCOMM直连
206建银亚洲直连
207VELO 银行直连
208星展银行直连
209ANZ 银行直连
217EWB 子账号直连
218汇丰 MT910直连
219渣打子账号直连
220新加坡工银子账户 SGICBC_SUBACC直连
221众安银行直连
301中银银企 B2E直连
302恒生 eDDA/eDDI(入金代扣)eDDA
303汇丰 eDDA/eDDI(入金代扣)eDDA
304天星银证银证
401DWOLLA美股 Dwolla 入金
501US_IPO美股打新资金回流
502INC_FT_TRANSINC 富途资金互转

注意:eDDA(授权)和 eDDI(扣款指令)都是入金协议,不涉及出金。恒生/汇丰的出金通道是企业网银转账。


退款与冲正参考数据

冲正相关状态码

数据对象字段冲正相关值含义
Apply(申请)status5已冲正——已入账资金被撤回
Task(任务)statusREVERSE任务已冲正
Flow(流水)result3(RESULT_REFUND)流水标记为退款(不影响证券账户)

冲正 API 端点

API方法用途权限
/deposit/reversePOST单笔入金任务冲正CASH_IN_TASK_REVERSE
/deposit/batch (action=reverse)POST批量入金任务冲正CASH_IN_TASK_REVERSE
/flow/refundPOST单笔流水退款标记CASH_IN_FLOW_HANDLE
/flow/refund-batchPOST批量流水退款标记CASH_IN_FLOW_HANDLE
/flow/unlock (is_refund=1)POST解锁流水并标记退款CASH_IN_FLOW_HANDLE

冲正前置条件速查

操作前置状态权限其他要求
任务冲正Apply.status = 2(已完成)CASH_IN_TASK_REVERSE证券账户余额 ≥ 冲正金额
流水退款Flow.status = 0(待处理)CASH_IN_FLOW_HANDLE
解锁退款Flow.status = 3(已锁定)CASH_IN_FLOW_HANDLE
冲正相关代码位置
  • 任务冲正入口:deposit/src/app/Business/Deposit.php:877-935reverse()
  • SBA 反向编排:deposit/src/app/Business/SOA/SBA/Deposit.php:309turnAround('CashDepositReverse')
  • 冲正中间件:deposit/src/app/Business/Tasks/Deposit.php:276-287reverseMiddleware()
  • 流水退款:deposit/src/app/Business/BankFlow.php:674-724refund()
  • 解锁退款:deposit/src/app/Business/BankFlow.php:1639-1695unlock()
  • Apply 状态常量:deposit/src/app/Business/Apply.phpSTATUS_REVERSE = 5
  • Task 状态常量:deposit/src/app/Classes/Task/Status.phpREVERSE = 5
  • Flow 结果常量:deposit/src/app/Business/BankFlow.phpRESULT_REFUND = 3

完整的退款机制说明 → 退款与冲正 运营操作步骤 → 冲正/退款指引


读完之后

我想...去看
了解某条规则的业务含义匹配与自动入账
看 eDDA 授权/扣款错误码eDDA 代扣入金
按症状排查入金问题入金排障
推动入金参数变更入金变更指南
查更多术语和缩写术语表
了解退款和冲正机制退款与冲正
这个页面有帮助吗?

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