深色模式
人工匹配指引
本页说明
讲什么:入金流水与申请自动匹配失败后,运营如何手动完成匹配和入账 适合谁:负责入金审核的运营人员 前置阅读:匹配与自动入账 — 先理解自动匹配的逻辑 预计阅读:3 分钟 负责人:入金运营主管
核心要点:人工匹配分为四种场景:辅助匹配(系统推荐但需确认)、完全不匹配(无推荐结果)、超额拦截、无申请流水——每种有不同的操作流程和风险等级。
新人学习路径
如果你刚入职,建议按此顺序阅读运营手册:① CRM 操作地图(熟悉系统界面)→ ② 本页(核心日常工作)→ ③ 出金审批指引 → ④ eDDA 排障指引 → ⑤ 冲正/退款指引 → ⑥ 定时任务与监控
什么时候需要人工匹配
匹配引擎每 3 分钟自动运行一轮。如果满足以下任一条件,流水不会自动入账,需要运营介入:
| 场景 | 匹配引擎输出 | 触发原因 |
|---|---|---|
| 辅助匹配 | 写入匹配表,等运营确认 | 金额在辅助容差范围内但超出自动入账容差 |
| 完全不匹配 | 跳过 | 五维(金额+币种+银行+日期+卡号)比对全部失败 |
| 金额超限 | 匹配成功但不自动入账 | 超过自动入账限额(如 HKD > 200 万) |
| 无申请的流水 | 异常入金列表 | 用户转了钱但没提交申请 |
CRM 导航路径
| 功能 | CRM 路径 | 说明 |
|---|---|---|
| 匹配列表 | 入金管理 → 匹配列表 | 查看辅助匹配待确认记录 |
| 流水列表 | 入金管理 → 流水列表 | 查看所有银行流水,可按银行/状态/日期筛选 |
| 申请列表 | 入金管理 → 入金申请 | 查看所有入金申请,可按 UID/状态/币种筛选 |
| 异常入金 | 入金管理 → 异常入金 | 查看无匹配申请的孤立流水 |
| 入金任务 | 入金管理 → 任务审批 | 确认匹配后生成的入金任务 |
操作流程
Runbook 格式说明
本页操作按标准 Runbook 格式组织。每个操作场景包含:
- 告警/触发 — 什么情况下需要执行此操作
- 判断 — 如何确认问题性质
- 操作 — 具体执行步骤
- 验证 — 操作完成后如何确认成功
一、辅助匹配确认
CRM 路径:入金管理 → 匹配列表 → 筛选"待确认"
- 打开匹配列表,系统已展示匹配引擎推荐的流水-申请配对
- 对每条待确认记录,核对以下字段:
| 检查项 | 流水字段 | 申请字段 | 判断标准 |
|---|---|---|---|
| 金额 | Flow.amount | Apply.amount | 差额在银行容差范围内(各银行标准不同,→ 容差规则) |
| 币种 | Flow.currency | Apply.currency | 必须完全一致 |
| 姓名 | Flow.en_name / Flow.cn_name | 用户注册名 | 允许格式差异(姓名颠倒、空格/逗号差异) |
| 卡号 | Flow.customer_account | Apply.bank_card_number | 尾号一致(跨行转账时中转行可能替换前缀) |
| 日期 | Flow.date | Apply.create_time | 在匹配窗口内(标准 -3~+2 天,中银 ±15 天) |
- 确认无误 → 点击「确认匹配」→ 系统自动创建入金任务并入账
- 有疑问 → 点击「忽略」→ 该匹配对不再自动推荐
二、手动匹配(完全不匹配时)
CRM 路径:入金管理 → 流水列表 + 入金管理 → 入金申请
- 在流水列表(存入资金 → 待处理)找到未匹配的流水,筛选
status = 0 待处理 - 在申请列表(存入资金 → 客户入金指令)找到可能对应的申请,筛选
status = 0 待处理,同币种,相近金额 - 按上方字段对照表逐项比对
- 确认后在流水详情页点击「手动关联」选择对应申请
- 系统自动执行入账
三、异常入金处理(无申请)
CRM 路径:入金管理 → 异常入金
- 查看异常入金列表(
AbnormalDepositJob每 30 分钟自动检测生成) - 系统已通过银行卡号和姓名尝试识别用户,匹配结果展示在列表中
- 处理方式:
- 确认入账 — 代用户创建申请并入账(权限:
ABNORMAL_DEPOSIT_MODIFY) - 挂起 — 等待用户自行提交申请后自动匹配
- 标记跟进 — 联系用户确认意图
- 确认入账 — 代用户创建申请并入账(权限:
匹配决策流程
§ 自动匹配 vs 智能提醒
两套系统并行运行:
| 维度 | 自动匹配 | 智能提醒 |
|---|---|---|
| 功能 | 匹配成功后直接自动入账 | 仅推荐匹配结果,需人工确认 |
| 运行时间 | 有时间窗口(见下表) | 7×24 全天候 |
| 适用场景 | 非开户客户 + 开户非首次入金 | 所有流水 |
| 无姓名流水 | 不支持 | 支持(使用宽松规则) |
| 匹配后动作 | 直接入账(通过风控审核后) | 推荐给运营,等待人工确认 |
自动匹配运行时间窗口:
| 币种 | 自动匹配运行时间 |
|---|---|
| HKD / CNH | 周一 07:00 ~ 周六 10:00 |
| USD | 每日 09:00 ~ 16:00 |
窗口外的流水仅走智能提醒(人工推荐确认)。
§ 匹配规则编码速查
所有银行通用的规则编码:
| 编码 | 含义 | 说明 |
|---|---|---|
| A | 基础匹配条件 | 币种一致、账户有效等基础校验 |
| B1 | 金额完全相等 | 流水金额 = 指令金额,精确匹配 |
| B2 | 海外汇入容差 | 跨境汇款允许中转行扣费:HKD/CNH ≤ 420,USD ≤ 60 |
| B3 | 在线开户首次入金门槛 | 线上开户客户首笔入金最低金额:HKD/CNH ≥ 10,000,USD ≥ 1,500 |
| B4 | 本地近似相等 | HKD/CNH: 0 ≤ 指令金额 - 流水金额 ≤ 20; USD: ≤ 3 |
| C1 | 姓名匹配(严格) | 用于自动入金,要求完整匹配 |
| C2 | 姓名匹配(宽松) | 用于智能提醒,支持模糊匹配 |
| D | 通用校验条件 | 日期窗口、指令状态等通用条件 |
| E | 账号校验 | 仅自动匹配使用,校验流水账号与指令银行卡号的一致性(见下方详细说明) |
| F1 | 地区:香港 | 汇款银行所在地区为香港(基于 SWIFT 或银行提供的地区信息;无地区信息视为不满足) |
| F2 | 地区:曾有授权 | 该账号曾有过成功的银证或 eDDA 授权,可推定所属地区为香港 |
规则 E(账号校验)的完整逻辑
规则 E 按以下优先级逐条尝试,任一命中即视为匹配:
- BankCode + 账号完全一致 — 指令账号(含银行代码前缀)与流水账号完全相同
- 多 BankCode 匹配 — 若同一银行有多个代码,逐个尝试,优先使用系统配置的第一个
- 仅账号(不含 BankCode)一致 — 去除银行代码前缀后账号相同
- 工银特殊规则 — 去掉工银账号尾号后,按规则 1/2 匹配
- 中银 14 位校验 — BankCode + 账号必须为 14 位,非 14 位视为不匹配(排除中银智能账户)
- 信用卡排除 — 账号长度 > 15 位且不以
621299开头 → 视为信用卡,不匹配(621299开头为招行 16 位账号,不误判)
规则 F1/F2 的使用场景
F1 和 F2 仅在线上开户客户 + 未生效银行卡入金场景下使用,与 B3 配合判断入金来源是否为香港银行账户。典型的完整规则组合:A & B1 & C1 & D & E & B3 & (F1 | F2)。
§ 中银流水类型路由表
中银流水根据转账类型和是否有付款人姓名进入不同匹配路径:
有姓名的流水(支持自动入金):
| 转账类型 | 摘要前缀 | 自动匹配规则 |
|---|---|---|
| Transfer | FPS* | A & B1 & C1 & D & E |
| Transfer | E-BANKING TRANSFER* | A & B1 & C1 & D & E |
| Transfer | CHATS* | A & B4 & C1 & D & E |
| Transfer | REMIT IN* | A & B2 & C1 & D & E |
| Transfer | 其他 | A & B4 & C1 & D & E |
| Transfer Transaction | CBS TRANSFER* / 其他 | A & B4 & C1 & D & E |
无姓名的流水(不支持自动入金,仅智能提醒):
| 转账类型 | 智能提醒规则 |
|---|---|
| Transfer (CBS TRANSFER*) | A & B4 & D |
| Interest | A & B4 & D |
| Clearing Cheque / Cheque Clearing | A & B4 & D |
| Returned Cheque | A & B4 & D |
| ATM Transfer | A & B4 & D |
| 其他 | A & B4 & D |
注意
- 转账类型和摘要均不区分大小写
- 线上开户客户若银行卡尚未审批通过,以上所有自动匹配规则需额外增加 B3(在线开户首次入金门槛) 和 F1 | F2(地区校验)
§ 自动审批风控规则
自动匹配成功后,以下风控规则可能将入金升级为人工审核:
| 风控规则 | 触发条件 | 处理方式 |
|---|---|---|
| 多牛牛号冲突 | 一条流水匹配到多个不同牛牛号的指令 | 不自动审批,等待人工处理 |
| 限频 | 同一牛牛号当天有多条不同金额指令,前 10 笔自动审批,第 11 笔起 | 转人工审批 |
| 限额 | 单笔超过限额 | 自动匹配后转人工审核 |
自动审批限额:
| 币种 | 自动审批限额 |
|---|---|
| HKD | 200 万 |
| USD | 30 万 |
| CNH | 200 万 |
§ 开户入金特殊规则
香港线上开户客户有额外限制:
| 规则 | 说明 |
|---|---|
| 首次入金最低金额 | HKD 10,000 / CNH 10,000 / USD 1,500 |
| 额外匹配校验 | 未生效银行卡入金在标准规则上额外增加 B3(银行卡验证) |
| 开户可用 eDDA | 仅 HSBC eDDA 可用于开户入金(App 内实时完成授权) |
| 开户不可用 eDDA | 恒生 eDDA 不可用于开户入金(需在银行 App 授权,非实时) |
| 首次入金后 | 客户只能使用首次入金的同一张银行卡进行后续出入金 |
§ 入金指令管理
入金指令的 5 种创建方式:
| 创建方式 | 触发场景 | 说明 |
|---|---|---|
| 转账按钮 | 客户在入金页点击"我已转账" | 最常见,客户手动提交 |
| eDDA 自动 | 客户发起 eDDA 扣款 | 系统自动创建指令 |
| BST 应用端 | 客户在 moomoo App 发起银证入金 | 系统自动创建指令 |
| BST 银行端 | 银行端发起入金,资金流水到达后 | 系统在流水到达后才创建指令 |
| CRM 手动 | 业务人员在 CRM 直接创建 | 用于特殊补录场景 |
特殊指令操作:
| 操作 | 说明 | 风险等级 |
|---|---|---|
| 紧急入金 | 强制将指令与流水匹配,甚至无流水直接入账 | ⚠️ 极高——等同于直接给客户加钱 |
| 指令锁定 | 锁定异常/不合规指令,阻止自动匹配和其他人员处理 | 低 |
| 指令驳回 | 缺少入金凭证或非同名入金,退回客户重新提交 | 低 |
| 指令自动驳回 | 不同银行和入金方式按指令年龄/时间自动驳回 | 无(系统自动) |
§ 灰度发布对匹配的影响
新匹配规则上线时按灰度策略逐步放量:
| 阶段 | 时间范围 | 灰度比例 |
|---|---|---|
| 第一阶段 | 发布当天 ~ 次日 12:00 | 每小时前 2 笔流水走新规则 |
| 第二阶段 | 次日 12:00 ~ 16:10 | 每小时前 10 笔流水走新规则 |
| 第三阶段 | 次日 16:10 后 | 全量走新规则 |
运营影响
灰度期间部分流水会绕过自动匹配,需关注人工匹配量是否异常上升。
升级路径
升级链路:运营人员 → 入金产品经理 → 后端开发 → 银行对接人
| 场景 | 一线处理 | 升级条件 | 升级对象 |
|---|---|---|---|
| 金额差异 > 辅助容差 | 联系用户确认差额来源 | 用户无法解释 | → 入金产品经理 |
| 姓名完全不同 | 联系用户确认 | 可能是代付 / 他人转账 | → 合规团队 |
| 同一流水匹配多个用户 | 逐个确认 | 无法确定归属 | → 入金产品经理 + 风控 |
| 流水堆积超 50 条 | 检查采集服务 | 采集服务异常 | → 后端开发 / 技术运维 |
| 连续 3 轮匹配率下降 | 检查容差配置是否变更 | 系统配置问题 | → 入金产品经理 |
| 银行接口异常 | 确认银行侧公告 | 银行侧问题需协调 | → 银行对接人 |
判断清单
拿到一条未匹配流水时,按顺序检查:
1. 金额:Flow.amount 与 Apply.amount 差异是否在容差范围内?
→ 容差标准见:入金规则速查 § 匹配容差规则
2. 币种:Flow.currency 和 Apply.currency 是否一致?
→ 不一致通常需要驳回申请
3. 姓名:Flow.en_name 是否与用户注册英文名匹配?
→ 注意格式差异("CHAN TAI MAN" vs "Tai Man Chan")
4. 卡号:Flow.customer_account 尾号是否与 Apply.bank_card_number 一致?
→ 跨行转账时中转行可能替换卡号
5. 日期:Flow.date 是否在 Apply 创建日期的匹配窗口内?
→ 标准窗口:-3 天 ~ +2 天(中银 B2E 使用独立的 ±15 天窗口)
6. 中银卡号:银行报表解析后的账号首位如果是 `/`,系统会自动去除后入库
→ 核对时注意原始账号可能带 `/` 前缀常见驳回理由
| 情况 | 推荐驳回码 | 操作 |
|---|---|---|
| 凭证看不清 | 1(信息不清楚) | 要求补充凭证 |
| 银行账户信息缺失 | 4 | 要求补充银行信息 |
| 证券账户异常 | 5 | 升级至账户团队 |
| 多笔重复申请 | 8(重复申请) | 保留一笔,驳回其余 |
| 超时未收到资金 | 9(超时) | 系统通常自动驳回 |
| 转账人与申请人不一致 | 14(账户不一致) | 联系用户确认 |
完整驳回原因码 → 入金规则速查 § 驳回原因码
所需权限
| 权限 | 用途 |
|---|---|
CASH_IN_APPLY_VIEW | 查看入金申请 |
CASH_IN_FLOW_VIEW | 查看银行流水 |
CASH_IN_TASK_APPROVAL | 确认匹配、通过/驳回入金 |
ABNORMAL_DEPOSIT_MODIFY | 处理异常入金(无申请的流水) |
CASH_IN_APPLY_MODIFY | 修改申请信息后重新匹配 |
处理时效 SLA
| 场景 | 目标响应时间 | 说明 |
|---|---|---|
| 辅助匹配确认 | 1 小时 | 工作时间内收到匹配通知后 |
| 异常入金处理 | 2 小时 | 工作时间内异常入金产生后 |
| 手动匹配 | 4 小时 | 用户反馈"钱没到"后 |
| 流水堆积告警 | 15 分钟 | 任何时间,7×24 |
如果需求变更:调整人工匹配的流程或规则
代码位置:
- 匹配列表 API:
deposit/src/app/Http/Controllers/MatchController.php - 手动匹配操作:
deposit/src/app/Business/Match/ManualMatch.php(如存在) - 异常入金检测:
deposit/src/app/Jobs/AbnormalDepositJob.php
常见变更场景:
- 修改辅助匹配展示的字段 → 调整匹配列表 API 的返回字段
- 修改异常入金检测逻辑 → 调整
AbnormalDepositJob中的检测条件 - 新增批量确认功能 → 在 MatchController 中添加批量操作接口
- 修改驳回原因码选项 → 调整
deposit/src/app/Common/RejectReason.php中的枚举
各银行匹配特性速查
详细匹配规则见 银行能力矩阵 § 入金匹配规则,这里补充运营日常匹配时需要特别注意的银行差异。
| 银行 | 金额容差 (HKD) | 日期窗口 | 姓名规则 | 运营特别注意 |
|---|---|---|---|---|
| 中银 | 本地 -20, 跨境 -420 | ±15 天 | 不校验 | particulars 可能无法识别入金方式,需手动选择 |
| 汇丰 | 常规 -420, 自动 -65 | -3~+2 天 | 不校验 | 银行账号需去前缀匹配;自动入账容差更严格 |
| 恒生 | -20 | -3~+2 天 | 不校验 | 按流水类型分别匹配,注意区分不同类型 |
| EWB | -420 | -3~+2 天 | 不校验 | "Other Deposit" 类型只看金额,不看其他维度 |
| 建银 | -20 | -3~+4 天 | 精确匹配 | 英文姓名必须一致,注意姓名顺序和拼写 |
| 星展 | -350(自动) | -3~+2 天 | 不校验 | 子账户需历史校验,新子账户首笔需人工确认 |
| BST | 精确 | 实时 | — | 直连通道,无需流水匹配 |
| 工银 | — | — | — | 银企直联流水采集,匹配规则标准 |
| 交行/BANKCOMM | -300 HKD / -45 USD / -300 CNH | -7~+4 天 | 不校验 | 子账户匹配优先,容差较大 |
最容易出问题的三家
- 中银——particulars 识别失败是最常见的匹配失败原因(运营需手动选入金方式)
- 建银——姓名精确匹配导致拒绝率较高(注意姓名顺序)
- 星展——新子账户首笔入金不会自动入账(需人工确认)
读完之后
| 我想... | 去看 |
|---|---|
| 了解自动匹配的五维逻辑 | 匹配与自动入账 |
| 查容差数值、超时配置、驳回码 | 入金规则速查 |
| 排查更多入金异常场景 | 入金排障 |
| 查错误码和状态码 | 统一错误码中心 |
这个页面有帮助吗?