银企直连的清算故事
企业资金系统常规的业务一般会有收款核销,付款,资金对账和账户余额管理等。如果企业规模庞大,还会有诸如多级资金池,大额资金划拨和供应链金融等高级业务。这些业务都有一个共同点,就是涉及大量与银行交互的信息。因此当业务量足够大时,企业常常会与银行建立直连通道,集成两边的系统做交易信息的自动化处理。作为系统的技术实施者,有必要了解关联系统的资金样貌,本文就银行间的信息循环做个笔记。
在开始前,先用通俗地列一列待会经常会提起的几个常用的概念。
人行,也就是中国人民银行,国内交易体系的大哥,给银行提供交易清算系统,监管资金等。
大小额交易系统,人行其中两个核心支付系统(大额支付系统/小额批量支付系统),这个系统05年上线,承载了历史到现在以来主要的境内支付业务,5万以下的走小额系统,5万以上的走大额系统,这个系统虽然几乎是实时交易系统,但无法实时反馈跨行之间的真实入账情况。
超级网银,人行另一个核心支付系统,这个系统比较新,能做到实时入账,但是金额有限制。
-
清算,其实是两个动作,清分和结算。
清分是指人行统计一定时间段内各系统成员的汇总数据,诸如金额,笔数之类的。
结算则是指清分统计出来的数据完成资金转移。
-
信息流和资金流,这是互联网金融领域常用的两个词,为了区分系统指令行为和实际资金行为而定义。
信息流:系统提交指令,该指令完成整个集成体系内的所有操作所走过的行为和路径。比如咱们系统调用银行付款接口的过程。
资金流:实际资金转移的行为,比如上面所说的人行结算过程。
境内转账
接下来进入正文,清算系统在处理交易请求时其实并非真的直接把钱转出去,而是划分为记账和物理资金转移过程。我们习惯以信息流和资金流两个视角来描述清算系统处理交易的过程。
我们以招行浦发两行的转账过程为例,省略各种手续费,用最简单的场景讲解一下银行们与清算系统交互的过程。
图中所示的场景是指,招行和浦发之间分别有人做10CNY,15CNY,12CNY的三笔转账,其中10,15金额的是从招行账户付款到浦发账户的,12金额的则是从招行账户从浦发账户收款的。这三笔可能是通过手机app转账,atm转账或者企业银企直连转账各种渠道完成的。如果是通过app或者atm转账,银行会自行选择是通过大小额还是超网交易,如果是企业直连,大多数银行允许企业指定清算系统路径。
这个场景三次交易的信息流都是一样的,具体流程如下
客户端(app/atm/银企直连等)发起一个交易指令信息到付款方银行核心交易系统,该交易信息一般包括最基础的收付方银行,账号,金额等
银行交易系统接受到这条信息后经过一系列处理,比如补录联行号,指定清算路径等,向人行清算系统发起交易指令
如果付方银行成功提交交易指令,针对收付方的该笔账会被人行记下,同时付方银行会为账户生成一条交易流水。否则交易以失败结束;
-
如果付方银行成功提交交易流水后,收到了收方银行因无法入账回退的钱(这个时间取决于收方银行,可能是一天,也可能是几天),则交易再次重置为失败并且付方银行会为付方账号生成一条反向的入账流水。
到这里整个交易的信息流就已经完成了。在这些步骤完成后,客户端用户,也就是交易账户户主是能够看到自己的银行账户发生了余额和流水的变动历史的。
接下来就是资金流
到了每天一个固定时间,人行会发起统一定时清算,当清算过程在招行浦发债务上发现三笔交易,招行需要向浦发支付一共10+15-12=23元时,人行就会从招行备付金账户转移实际的23元资金到浦发备付金账户上。每个银行的备付金账户是非常重要的,需要有专门的人计算并充值该账户的合理金额,保证每天银行有足够的金额可以完成清算资金转移。
跨境转账
跨境转账是指不同国家的银行直接往来划账。
跨境转账的话涉及到的清算系统就非常多了,目前接触到的有
香港的RTGS全额结算系统
欧洲的SEPA单一欧元支付区
美国的FEDWIRE美国联邦储备银行系统
美国的ACH自动清算中心
这里没办法一一将所有本地清算体系详细展开,这里介绍下跨国转账的信息流和资金流。
目前SWIFT机构承担了大部分的跨国交易信息流。SWIFT机构本身不是一个清算系统,它包含了众多的银行成员,而SWIFT负责把交易信息在成员之间传递。
资金流:
这次我们先讲资金流。上面在聊到境内清算体系内资金流的时候,咱们是通过人行备付金账户来转钱解决资金流问题的。那现在的情况是两个交易对手处于不同的国家,那钱怎么给对方?这里引入了代理行的概念。代理行的作用是该银行在交易两国都开设有分行,由这个具有跨国自由结算能力的银行作为资金结算渠道来解决这个问题。而这个图的例子则是,代理行就是收方银行在付方国家的分行。
那现在的资金流就是,
付方银行与代理银行通过本国清算系统结算资金;
代理银行与收款银行通过自己分行系统结算;
实际上的代理行可能并非如图中一定存在,并且只有一个。假设跨国双方交易对手都是同一家银行,那么代理行就不需要了;假设跨国双方在对方本地都没有开设分行,那么还需要第三方具备这个条件的银行作为整个链路中转。
另外,跨国交易经常会发生不同币种的交易。这里还涉及购汇的问题,每个国家对外币的控制政策都不尽相同,像咱们国家每次购汇需要向外汇局申请备案,同时,每人每年只有5万美元的额度。这里也没办法展开了解了。
信息流:
一个清算体系内部的信息流大体模式跟境内的一致,我们关注跨国增加的部分。
首先跨国交易需要的信息就比境内交易要复杂一些。如,
这里引入了SWIFT组织。SWIFT组织给每个成员都编了一个11位的swift code(4位银行代码+两位国家代码+两位地区代码+3位分行代码),走SWIFT交易这个信息必不可少。
一些特殊地区特殊币种,特别是欧洲欧元,一般会使用IBAN国际银行账号来代替常规的银行账号,如果这个账号需要而不提供,会产生高额的手续费。
美国需要9位的RoutingNumber作为具体银行的路由信息,香港需要3位银行代码+3位分行代码来路由银行信息。
接下来是信息流传递过程:
客户发起跨国交易指令到付方银行核心交易系统;
付方银行把交易信息提交到SWIFT;
SWIFT检测交易信息并确认路由信息,找到代理行后转发信息;
代理行通过SWIFT再次转发到国外的分行通知当地分行收款;
结束
到这里为止就介绍完了境内和跨国的交易信息流和资金流过程。整个清算体系是一个非常复杂的过程,种类多参与者多,特别是跨国间的交易还涉及了众多的第三方机构,政策等因素。作为技术的实施者,我也希望尽可能地完备产品知识,特别是跨国这一块众多的细节,能让系统的风险在业务层面上降到最低。