小额支付系统:详细处理逻辑(底层)
小额支付系统:不止看懂还看透,细节里藏精华(附全流程步骤)
想了好久,决定还是写一下小额批量支付系统,尽管这块内容在各个平台被许多大佬普及了很多次了,或许你已经看腻了,或许你也了然于胸了,但是我觉得万事精华在细节。
今天我们从一幅图开始吧。

上图是小额批量支付的时序图,看起来交互还是挺复杂的,实际上上图已经简化了很多细节(太多细节无法只通过图来体现)。
我们今天讲的是批量部分,不讲实时部分。
谁在参与?如何连接?
要想真的了解上面的那账图,必须先了解参与者和接入关系,下面我们展开说说:
接入关系说明
直接接入 NPC 机构:
特许参与者(全部直接接入 NPC):
- 中国银联(作为银行卡跨行交易清算机构)
- 网联清算有限公司(作为非银行支付机构统一清算平台)
- 城银清算服务有限责任公司(原城商行资金清算中心)
- 农信银资金清算中心
- 部分直接参与者(大型商业银行):工、农、中、建、交等全国性银行
- 部分大型股份制银行(招行、浦发、中信等)
这些银行拥有在央行的清算账户,具备直接接入 NPC 的技术能力和资格
通过 CCPC 接入机构:
间接参与者(无央行清算账户):
- 城市商业银行(除少数大型城商行外)
- 农村商业银行
- 农村信用社
- 村镇银行
- 外资银行地方分行 这些机构必须通过代理行(通常是直接参与者或特许参与者)接入系统
部分直接参与者(大型商业银行)也可以同时接入 CCPC,这样可以减轻总行压力,也可以处理区域性监管或业务协调需求,这里不做详细展开。
特殊连接方式:
- 城商行 → 通过「城银清算」→ 直接接入 NPC
- 农信社 → 通过「农信银」→ 直接接入 NPC
- 支付机构(支付宝/微信)→ 通过「网联」→ 直接接入 NPC
- 银行卡交易 → 通过「银联」→ 直接接入 NPC
核心业务类型
小额支付系统的核心业务按处理规则可分为两类,2023 年 10 月央行优化调整(《关于优化小额批量支付系统和网上支付跨行清算系统运行机制的通知》,银发〔2023〕215 号)仅针对第一类业务,这是理解后续流程的关键:

关键提醒:两类业务的批量发送逻辑一致,但轧差 + 清算规则有很大差异,下文将按此分类展开。
为什么叫做批量?
其实这里面有两层意思,一个是批量发送(所有业务通用),一个是批量清算(按业务类型区分)。(这里我们选择付款行对接 CCPC 的场景)
批量发送
批量发送又分为两层概念
- 付款行分批次发送请求到 CCPC(按笔数或时间触发)
- CCPC 分批发送到 NPC(与清算场次协同,保障系统稳定)
批量清算
- CCPC 分批轧差,仅负责同城业务及非普通贷记业务的集中轧差
- NPC 分批轧差,异地业务中,非普通贷记业务按场次集中轧差(普通贷记业务实时轧差)
- NPC 分批清算(通过提交至大额支付系统 SAPS 完成实际资金交收)
NPC 负责处理异地业务的轧差,CCPC 负责处理同城业务的轧差;
在每个批量窗口内,系统对通过净借记限额检查的支付指令按付款清算行和收款清算行计算净额,仅对净差额进行后续资金清算,大幅减少实际资金划转规模。
批量时效
付款行多久一次发送到 CCPC
央行虽不规定固定间隔,但通过《支付系统业务管理办法》明确不得过度占用系统资源:
要求银行发送的交易笔数需满足最小笔数值(通常建议每次发送不少于 50 笔,部分银行系统设置为 20 笔),应避免单笔发送,这样违背了小额批量的设计理念。
CCPC 对单家银行的并发连接数,每小时发送包数有上限控制,高频发送需在该上限要求内,防止被一家银行独占区域资源,造成其它行不可用。
目前主流银行的发送频率,以 5 分钟、10 分钟、30 分钟为主,核心处理方式是:
- 优先按笔数触发(如满 50 笔即发送),若 30 分钟内未满足笔数要求,则直接发送,避免过长时间等待。
- 工作日上午 9-11 点、下午 2-4 点是一般是交易高峰期,银行会缩短间隔至 5 分钟,夜间低峰时适当拉长间隔至 1 小时左右
- 同一区域的多家银行会与当地 CCPC 协商发送窗口,避免多家银行同时发送导致 CCPC 节点拥堵,比如杭州的各个银行都在上午 9 点钟集中发送到 CCPC,这样可能造成系统的不稳定。
CCPC 多久发送一次到 NPC
遵循与小额系统轧差场次强绑定 + 央行统一监管 + 区域协同的原则,说人话就是,不是你想多久发一次就多久发一次,而是要和轧差场次绑定的,根据 2023 年 10 月调整,央行明确小额系统工作日标准清算场次为 5 个。
频率: 默认每小时 1 次,峰值可缩至 30 分钟,低峰可延至 2 小时(向央行报备后灵活调整)
限制: 仅发轧差净额包、按时发送、单场次 1 次有效发送
要求: 资金平衡、格式标准、安全传输、双向确认
举例:
- 付款行在 10:30、10:45、10:58 分别向 CCPC 发送了 3 个交易批次,这些交易均属于10:00 场次(10:00-10:59)
- CCPC 在 11:00:00 前完成所有交易的区域轧差,生成净额文件;
- 需在 11:00:00~11:05:00 之间将轧差文件发送给 NPC
错过 10:00 场次,会被 NPC 拒收,则需要将 10:00 场次的交易和下一场次合并提交
NPC 多久进行一次轧差
也是严格遵循央行统一设定的清算场次表,不能随意执行。
标准频率:
- 工作日:5 个固定场次,整点开始,例如:10:00 场次(10:00:00~10:59:59),具体场次为 10:00、11:00、14:00、15:00、16:00(2023 年 10 月调整后取消 9:00 场次)
- 节假日:每日仅 1 场,在系统日切时进行,通常是 16:00 开始
工作日的整点开始,指的是场次时段段的开始时间,节假日的 16:00 开始,是指轧差动作的开始时间
你会发现,CCPC 有 5 分钟的缓冲时间,那么 NPC 不能整点开始啊,怎么办?你观察很仔细,下面我来解释一下:
10:00 场次的完整提交逻辑:
- 10:59:59:10:00 场次结束
- 11:05 前:CCPC→NPC(区域轧差结果)
- 11:10 前:NPC 完成全国汇总轧差
- 11:15 前:NPC→SAPS(全国轧差结果)
NPC 多久清算一次
NPC 清算与轧差场次是强绑定关系,有多少轧差场次,就有多少清算场次
- 工作日:5 场轧差,5 场清算(10:00、11:00、14:00、15:00、16:00),每场轧差结束后,立即启动对应场次的清算(2023 年 10 月调整后取消 9:00、13:00 场次)
- 节假日:1 场轧差,1 场清算(16:00 日切后),轧差完成后一次性清算
轧差是算账场次,清算是付钱场次,算完一场就付一场,场次数量、时间完全同步。普通贷记业务虽实时算账,但 付钱仍需按固定场次集中执行。
小额支付不是 24 小时的吗?
没错,小额支付确实是 7x24 小时的,其实核心是交易提交/接收是 24 小时的,而不是清算的 24 小时不间断。清算必须依赖 NPC 的轧差场次和 SAPS 的资金划转窗口
交易场次和清算场次
- 交易收集场次:24 场/日(每小时 1 场,00:00-00:59、01:00-01:59…),作用是接收银行交易、按时段暂存,全年无休,所有时间提交的交易都能归入对应场次;
- 清算提交场次:工作日 5 场(10:00、11:00、14:00、15:00、16:00),作用是将对应时段的收集场次交易汇总轧差,提交给 NPC 进行清算,节假日 1 场,前面讲过了,这里就不再提了
CCPC 不会把 24 个收集场次的交易都单独提交给 NPC(前面讲过),而是按央行规定,将多个收集场次合并为 1 个清算提交场次,集中轧差后提交。 具体合并规则(例如工作日)

17:00-23:59 属于夜间低峰期,交易笔数少,自动归入次日业务,与次日 00:00-09:59 的交易场次合并,对应次日 10:00 清算提交场次
举个栗子
付款行是北京建行,收款行有招商、平安、浙商 3 家银行,在 10:00-10:05 之间共 10 笔交易(含 8 笔普通贷记业务 +2 笔定期贷记业务)。
一、第一步:批量提交
付款行(建行)→ CCPC 的提交方式:批量提交
建行采用定时批量打包的方式提交给所在地的 CCPC(比如建行北京分行 → 北京 CCPC)
交易汇总:
- 3 笔普通贷记 +1 笔定期贷记(同城:招商北京分行,同一北京 CCPC 覆盖范围)
- 5 笔普通贷记 +1 笔定期贷记(异地:平安上海分行、浙商杭州分行,分属其他 CCPC 覆盖)
批量打包: 建行将这 10 笔交易按小额系统统一格式打包成一个批量业务报文,报文中包含每笔交易的关键信息(付款行清算号、收款行清算号、金额、用途等)。
批量提交: 建行一次性将这个「批量报文」提交给北京 CCPC.
后面为了方便理解,我们假设 10:05:01 到 10:59:59 秒没有再发生交易
第二步:CCPC 的分类处理机制
北京 CCPC 收到建行的批量报文后,先分类筛选,再按业务类型差异化处理,具体流程:
1:业务分类(同城/异地 + 业务类型)
CCPC 先根据收款行的清算行归属地」,把批量报文中的 10 笔交易分成两类:
- 同城业务:4 笔(3 笔普通贷记 +1 笔定期贷记),收款行招商北京分行归属北京 CCPC
- 异地业务:6 笔(5 笔普通贷记 +1 笔定期贷记),收款行平安上海、浙商杭州分属其他 CCPC
2:同城业务处理
- 3 笔普通贷记业务:CCPC 实时轧差(10:06 完成),计算建行北京对招商北京净应付 6 万元,净额暂存待 10:00 场次清算
- 1 笔定期贷记业务:CCPC 暂存至 10:59 场次结束后集中轧差,计算净应付 2 万元,与普通贷记净额同步参与 10:00 场次清算
- 资金划转:10:05 后通过同城清算渠道完成资金到账(与 10:00 场次清算节奏同步),无需发送到 NPC
3:异地业务预处理
- 5 笔普通贷记业务:北京 CCPC 验证建行净借记限额充足、报文格式合规后,按收款清算行拆分为 2 个批量包(平安上海 3 笔、浙商杭州 2 笔);
- 1 笔定期贷记业务:同样完成限额和格式验证,按收款行(平安上海)生成独立批量包,暂存待定时转发.
第三步:CCPC 请求 NPC
北京 CCPC 不会收到异地业务就立刻发 NPC,而是等下一个定时窗口,批量发送本窗口内所有银行的异地业务报文——比如除了建行的 5 笔普通贷记批量包,还会汇总北京地区其他银行(如北京银行、华夏银行)同一窗口内的异地普通贷记业务包,一次性转发至 NPC,避免高频单点传输造成的系统压力
非普通贷记业务(如建行的 1 笔定期贷记),CCPC 会按固定场次窗口转发,比如 11:00 前(属于 10:00 场次的提交缓冲期 11:00-11:05)统一汇总本场次内所有非普通贷记异地业务,批量发送至 NPC
第四步:NPC 的轧差机制
1、接收全国异地报文
NPC 会收集同一定时窗口内(普通贷记为 10:05-10:10,非普通贷记为 10:55-11:00)来自全国所有 CCPC 的异地批量报文:
- 普通贷记窗口(10:05-10:10):除了北京 CCPC 发送的建行 → 平安、浙商 5 笔交易,还会收到上海 CCPC 发送的工行上海 → 平安上海 8 笔交易、杭州 CCPC 发送的农行杭州 → 浙商杭州 6 笔交易、广州 CCPC 发送的招行广州 → 平安上海 3 笔交易等
- 非普通贷记窗口(10:55-11:00):接收北京 CCPC 发送的建行 → 平安 1 笔定期贷记,以及其他 CCPC 发送的同场次非普通贷记业务报文
2:汇总净额
NPC 的轧差是以清算行为单位的,一般都是总行,而非具体分行,核心是去明细、留净额:
-
普通贷记业务轧差(实时触发):
筛选: 从全国普通贷记异地报文中,提取所有付款清算行=建行总行的交易
分类: 按收款清算行拆分——建行总行对平安总行的交易(含北京 CCPC3 笔合计 4 万元、广州 CCPC 转平安上海的关联交易 2 万元,总金额 6 万元)、建行总行对浙商总行的交易(含北京 CCPC2 笔合计 3 万元、杭州 CCPC 转浙商杭州的关联交易 1 万元,总金额 4 万元)
轧差: 计算建行总行对每一家收款清算行的净应付金额,最终生成两笔净额记录——建行总行 → 平安总行:净应付 6 万元;建行总行 → 浙商总行:净应付 4 万元。
-
非普通贷记业务轧差(场次集中触发):筛选: 10:00 场次结束后(10:59),提取全国范围内付款清算行=建行总行的非普通贷记异地交易
分类: 仅涉及建行总行 → 平安总行 1 笔定期贷记,金额 1.5 万元轧差: 直接生成净额记录——建行总行 → 平安总行:净应付 1.5 万元
NPC 只记录清算行对的净额,不关心具体分行的逐笔明细,比如建行北京 → 平安上海、招行广州 → 平安上海的交易,最终都会汇总为付款行总行 → 平安总行的净额,大幅减少清算数据量,提升系统处理效率.
3:净额校验与反馈
NPC 完成轧差后,会对所有清算行对净额进行资金平衡校验,即确保所有付款净额合计=所有收款净额合计,校验通过后进行后续操作:
- 普通贷记业务:10:15 前向全国相关 CCPC 批量反馈轧差结果,北京 CCPC 收到后同步至建行,建行即可确认交易轧差成功,待清算;
- 非普通贷记业务:11:00 前完成校验并反馈,建行在 11:05 前收到轧差结果
五、第五步:清算执行
定时集中资金划转,所有异地业务的轧差净额,会统一归入 NPC 的 10:00 场次清算队列,与全国其他银行的异地业务净额汇总后,执行最终资金清算:
1、11:10 前:NPC 生成全国异地业务清算净额总指令,包含所有清算行对的净应付/净应收金额(如建行总行净应付 11.5 万元=6 万 +4 万 +1.5 万,平安总行净应收 7.5 万元=6 万 +1.5 万,浙商总行净应收 4 万元)
2、11:15 前:NPC 将清算总指令提交至大额支付系统(SAPS),SAPS 作为央行资金清算核心,直接操作各银行总行在央行的清算账户:
- 从建行总行清算账户中扣除 11.5 万元;
- 向平安总行清算账户划入 7.5 万元;
- 向浙商总行清算账户划入 4 万元;
3、清算完成后:SAPS 向 NPC 返回清算成功确认,NPC 再同步至全国各 CCPC,CCPC 最终反馈至各发起行和接收行
4、到账通知:平安上海分行、浙商杭州分行收到总行清算资金后,同步将资金划入对应收款人账户,并向收款人发送到账通知。

浙公网安备 33010602011771号