深色模式
冲正/退款指引
核心要点:冲正是将已入账/已汇出的资金追回的反向操作,风险高且不可撤销——操作前必须确认银行侧状态,防止资金状态不一致。
冲正 vs 退款
| 术语 | 方向 | 含义 |
|---|---|---|
| 入金冲正 | 证券账户 → 用户银行 | 已入账的资金被撤回(如银行 chargeback、错误入账) |
| 出金冲正 | 用户银行 → 证券账户 | 已汇出的资金被追回(如银行退回、错误出金) |
| BST 退款 (REFUNDED) | 入金成功后银行退回 | 天星 BST 独有——银行事后发起退款 |
三者的共同点:都涉及已完成交易的反向资金操作,影响重大、不可二次撤销。
入金冲正
Runbook:入金冲正
触发:收到银行 chargeback / 发现错误入账 / 风控事后拦截 判断:确认申请状态=已完成(2),账户余额充足 操作:按下方步骤执行冲正 验证:按"冲正后验证步骤"逐项确认
前置条件
- 入金申请状态必须为
2(已完成) - 需要权限:
CASH_IN_TASK_REVERSE - 正在处理中(状态 1)的申请不允许冲正
操作步骤
- 在 OA 找到目标入金申请
- CRM 路径:存入资金 → 已处理 → 找到对应入金任务 → 点击"冲正"
- 确认冲正原因:
- 银行退款 (chargeback) — 银行方面要求退回资金
- 错误入账 — 匹配错误,入账到了错误用户
- 风控拦截 — 入账后风控发现异常
- 点击「冲正」发起操作
- 系统执行:
- 更新申请状态为
5(已冲正) - SBA 执行反向 Procedure(从证券账户扣回资金)
- 如果是通过绑卡入金的,同步解绑银行卡
- 发送通知告知用户
- 更新申请状态为
冲正前核查清单
执行冲正前,逐项确认以下事项:
| # | 检查项 | CRM 字段 / 查看方式 | 通过条件 |
|---|---|---|---|
| 1 | 申请状态 | Apply.status | = 2(已完成),非处理中 |
| 2 | 账户可用余额 | 证券账户查询 | ≥ 冲正金额(用户可能已用于交易) |
| 3 | 有无在途出金 | 出金任务列表筛选同 UID | 无处理中的出金任务(避免余额冲突) |
| 4 | 有无持仓占用 | 持仓查询 | 确认冲正后余额仍足够覆盖持仓保证金 |
| 5 | 冲正原因确认 | 运营判断 | 明确且可追溯的冲正理由(chargeback/错误入账/风控) |
| 6 | 大额确认 | Apply.amount | 超过 HKD 50 万建议先冻结账户再操作 |
冲正后验证步骤
冲正操作执行后,确认以下状态已正确更新:
| # | 验证项 | 预期结果 |
|---|---|---|
| 1 | 申请状态 | Apply.status = 5(已冲正) |
| 2 | SBA Procedure | 反向 Procedure 执行成功(查 SBA 日志) |
| 3 | 证券账户余额 | 已扣减冲正金额 |
| 4 | 银行卡绑定 | 如果是绑卡入金,银行卡已解绑 |
| 5 | 用户通知 | 冲正通知已发送(App 推送 + 消息中心) |
风险提示
冲正前必须确认
- 用户证券账户是否有足够余额(如果用户已经用入金资金交易/出金,余额可能不足)
- 冲正操作不可撤销——执行后无法再恢复
- 如果涉及大额资金,建议先冻结账户再操作
出金冲正
Runbook:出金冲正
触发:银行退回资金 / 发现错误出金 / 风控事后拦截 判断:确认任务状态=已完成(4),资金已实际汇出 操作:按下方步骤执行冲正 验证:确认任务状态=已冲正(5),SBA 反向操作成功
前置条件
- 出金任务状态必须为
4(已完成) - 资金已实际汇出到银行
操作步骤
- 在 OA 找到目标出金任务
- 确认冲正原因:
- 银行退回 — 银行侧退回了已汇出的资金
- 错误出金 — 出金信息有误(如出错了用户)
- 风控事后拦截 — 出金完成后风控发现异常
- 发起冲正(动作:REVERSE)
- 系统执行:
- 更新任务状态为
5(REVERSE) - SBA 执行反向资金操作
- 通知用户出金已撤回
- 更新任务状态为
银行退回场景
银行退回资金是出金冲正最常见的触发原因。可能的情况:
- 收款账户信息错误(账号/户名不匹配)
- 收款银行拒绝入账
- 跨境汇款被中转行退回
收到银行退回通知后:
- 确认退回资金已到达公司账户
- 执行出金冲正
- 通知用户,引导重新发起出金(如需更正银行信息)
BST 入金退款(REFUNDED)
Runbook:BST 退款
触发:收到天星 API REFUNDED 状态告警 判断:确认退款原因(天星 API 错误信息) 操作:核实余额回滚 → 通知用户 → 引导重新入金 验证:证券账户余额已正确扣减,用户已收到通知
这是天星 BST 独有的异常状态——招行/民生没有退款机制。
触发条件
- 银行侧事后发现交易异常(合规问题)主动发起退款
- 银行风控系统事后拦截
系统行为
- 收到天星 API 返回的 REFUNDED 状态
- 系统自动触发冲正:撤回已入账到证券账户的资金
- 更新入金记录状态
- 触发告警通知运营
运营操作
- 确认退款原因(查看天星 API 返回的错误信息)
- 核实用户证券账户余额是否已正确回滚
- 通知用户并说明原因
- 如需重新入金,引导用户发起新的入金操作
REFUNDED vs FAILED
- FAILED — 银行拒绝入金指令,资金从未到账,无需冲正
- REFUNDED — 入金已成功后银行退回,系统需执行冲正,更复杂
冲正操作对比
| 入金冲正 | 出金冲正 | BST 退款 | |
|---|---|---|---|
| 触发方 | 运营主动 | 运营主动 / 银行退回 | 银行自动 |
| 资金方向 | 从证券账户扣回 | 退回到证券账户 | 从证券账户扣回 |
| 前置状态 | 已完成(2) | 已完成(4) | 已完成 |
| 结果状态 | 已冲正(5) | 已冲正(5) | REFUNDED |
| 涉及银行 | 所有 | 所有 | 仅天星 |
| 权限 | CASH_IN_TASK_REVERSE | — | 系统自动 |
流水退款操作
流水退款与任务冲正不同——它只标记银行流水状态,不影响证券账户余额。适用于银行流水尚未匹配入账的场景。
Runbook:流水退款
触发:孤立流水无法匹配 / 银行确认误转 / 错误流水需清理 判断:确认 Flow.status = 0(待处理),确认流水不应入账 操作:在 OA 对流水执行退款标记 验证:Flow.result = 3(RESULT_REFUND)
操作入口
| 操作 | OA 路径 | 适用场景 |
|---|---|---|
| 单笔退款 | 流水列表 → 选中 → 退款 | 对单条流水标记退款 |
| 批量退款 | 流水列表 → 批量选择 → 批量退款 | 月末清理多条无法匹配的流水 |
| 解锁退款 | 流水列表 → 已锁定流水 → 解锁并退款 | 调查完成后确认需退款的锁定流水 |
操作后验证
| # | 验证项 | 预期结果 |
|---|---|---|
| 1 | 流水处置结果 | Flow.result = 3(RESULT_REFUND) |
| 2 | 流水状态 | Flow.status = 1(已处理) |
| 3 | 证券账户余额 | 不变(流水退款不影响证券账户) |
流水退款 ≠ 资金退回
流水退款只是系统内部标记——银行侧的资金退回需要另行联系银行处理。标记退款后应通知银行关系团队安排实际退款。
退款管理模块
退款管理是独立于冲正的业务流程,用于处理需要将资金退还给客户的场景(如三方转账退款、不合规入金退款等)。
退款 vs 冲正
| 维度 | 退款 | 入金冲正 |
|---|---|---|
| 触发方 | 客服/客户发起 | 运营发起 |
| 影响 | 退还客户资金到银行 | 扣回已入账资金 |
| 流程 | 三步审核制 | 单步操作 |
| CRM 模块 | 退款管理 | 存入资金 → 已处理 |
三步流程
第一步:登记退款
| 维度 | 说明 |
|---|---|
| 触发 | 客服收到客户退款请求 |
| 操作 | CRM → 退款管理 → 退款列表 → 登记退款 |
| 内容 | 通过流水记录登记退款;关联相关入金指令;补充退款凭证材料 |
| 验证 | 退款记录状态变为"待审核" |
第二步:审核退款
| 维度 | 说明 |
|---|---|
| 触发 | 退款列表中出现待审核记录 |
| 操作 | CRM → 退款管理 → 退款列表 → 审核 |
| 判断 | 审核退款材料是否完整合规 |
| 通过 | 退款记录状态变为"待处理" |
| 不通过 | 退回客服,要求补充材料或重新联系客户 |
第三步:退款处理
| 维度 | 说明 |
|---|---|
| 触发 | 退款列表中出现待处理记录 |
| 操作 | CRM → 退款管理 → 退款转账 → 导出退款转账文件 |
| 执行 | 业务人员手动处理退款转账(文件制) |
| 验证 | 退款完成后标记状态为"已处理";确认客户银行账户收到退款 |
退款转账是文件制
退款转账通过导出文件、上传网银的方式执行(与普通出金类似),不是系统自动转账。需要按照出金相同的双人授权流程完成。
退款操作要点
| 要点 | 说明 |
|---|---|
| 退款与流水退还不同 | 退款管理涉及实际资金退还给客户;流水退还(reversal-guide § 流水退款操作)仅标记流水状态,不退还资金 |
| 退款时效 | 退款从登记到客户收到资金通常需要 3~5 个工作日(含审核+银行处理时间) |
| 跨境退款 | 跨境转账退款可能产生额外手续费,需提前告知客户 |
| 清算日影响 | 冲正和退款会影响 T+1 结算报表。避免在清算日下午 16:00 后发起冲正/退款——跨清算日的资金变动会导致当日结算金额变化,需通知清算团队手工调整 |
冲正失败处理
常见失败原因与处理
| 失败原因 | 表现 | 处理方式 | 预计恢复时间 |
|---|---|---|---|
| 证券账户余额不足 | SBA 返回余额不足错误 | 冻结账户 → 联系用户释放资金 → 重试 | 数小时~数天 |
| SBA 服务异常 | Procedure 超时或系统错误 | 确认 SBA 服务状态 → 服务恢复后重试 | 分钟~小时 |
| 原 Procedure 状态异常 | PROCEDURE_STATUS_END_OK 校验不通过 | 人工核实原入金 SBA 记录 → 手工补偿 | 需开发协助 |
分步 Runbook:冲正失败恢复
第 1 分钟 — 确认失败现象
- 冲正按钮点击后,Apply.status 是否仍为 2(未变为 5)?
- 查看 OA 返回的错误信息
第 2~5 分钟 — 定位原因 3. 查 SBA 日志,搜索对应的 Task ID 4. 确认 CashDepositReverse Procedure 的执行结果 5. 如果是余额不足:查用户可用余额和持仓占用
第 5~15 分钟 — 恢复操作 6. 余额不足:
- 冻结用户账户(防止继续交易/出金)
- 联系用户说明情况
- 等用户卖出持仓 / 出金到账后,重新冲正
- SBA 异常:
- 确认 SBA 服务已恢复
- 重新点击冲正
- Procedure 异常:
- 不要反复重试
- 收集下方"升级信息清单"中的信息
- 升级到入金开发团队
超过 15 分钟未恢复 → 升级到技术运维值班人员
升级开发时需提供的信息
冲正失败需升级开发时,一次性提供以下信息(减少来回沟通):
| # | 信息 | 获取方式 |
|---|---|---|
| 1 | Apply ID / Task ID | CRM 入金/出金任务详情页顶部 |
| 2 | SBA Task ID | 任务详情页 → SBA 记录区域 |
| 3 | Procedure 名称和执行状态 | SBA 日志中搜索 Task ID |
| 4 | 错误信息截图 | CRM 冲正操作返回的报错页面 |
| 5 | 用户当前可用余额 | 证券账户查询页 |
| 6 | 操作时间(精确到分钟) | 告警时间或操作时间 |
| 7 | 是否有在途出金/持仓占用 | 出金任务列表 + 持仓查询 |
冲正时效参考
| 操作 | 正常耗时 | 说明 |
|---|---|---|
| 入金冲正(余额充足) | 秒级 | SBA Procedure 通常几秒完成 |
| 入金冲正(余额不足) | 数小时~数天 | 取决于用户配合释放资金的速度 |
| 出金冲正 | 秒级 | 资金退回证券账户 |
| BST REFUNDED | 分钟级 | 系统自动执行 |
| 银行侧实际退款 | 1~5 工作日 | 取决于银行和转账类型 |
批量冲正
当需要对多笔入金执行冲正(如批量错误入账):
- 在 OA 入金列表筛选目标申请
- 确认每笔申请都满足冲正前置条件(逐笔检查余额)
- 使用批量操作功能(
/deposit/batchwith action=reverse) - 注意:批量冲正是逐笔执行的——如果某笔失败(如余额不足),不影响其他笔的冲正
- 冲正完成后,逐笔确认 Apply.status = 5
如果需求变更:修改冲正流程
代码位置:
- 入金冲正:
deposit/src/app/Business/Deposit.php:877-935(reverse() 方法) - 出金冲正:
withdraw/src/app/Business/Tasks/Handler/Reverse.php - SBA 反向 Procedure:
deposit/src/app/Business/SOA/SBA/Deposit.php:309—turnAround('CashDepositReverse') - 冲正中间件:
deposit/src/app/Business/Tasks/Deposit.php:276-287
常见变更场景:
- 冲正前增加审批步骤 → 在冲正逻辑前添加审批检查(当前冲正是直接执行,无二次审批)
- 冲正后不自动解绑银行卡 → 移除 reverse() 中的解绑逻辑
- 增加冲正金额上限 → 在冲正前置校验中添加金额检查
- 冲正通知模板修改 → 调整通知服务的消息模板
详细变更指南 → 入金变更指南 § 修改冲正流程 产品视角的退款机制 → 退款与冲正
读完之后
| 我想... | 去看 |
|---|---|
| 排查入金冲正的完整场景 | 入金排障 |
| 排查出金冲正和银行退回 | 出金排障 |
| 了解天星 REFUNDED 技术细节 | 内银系 BST 总览 |
| 查冻结类型和出金规则 | 出金规则手册 |
| 查状态码和错误码 | 统一错误码中心 |
| 了解三种退款机制的产品逻辑 | 退款与冲正 |
| 查冲正相关的状态码和 API | 入金规则速查 § 冲正参考数据 |
| 了解 CRM 各模块操作 | CRM 操作地图 |
| 了解 eDDA 扣款失败处理 | eDDA 排障指引 |
这个页面有帮助吗?