编辑导语:如今随着互联网的不断发展,资金账户等等都会用互联网的方式进行操作,比如资金调拨,把一部分账户的资金转移到另一个账户中去使用,在这一个操作需要注意什么?本文作者分享了关于资金调拨系统的设计方法论,我们一起来了解一下。
大家可能对资金调拨不太陌生,但是对调拨系统可能就接触的少了;那么什么是资金调拨系统呢?其实就是系统化实现资金账户之间资金的转移过程的系统,可大可小,可简可繁,一个拥有四五百个备付金账户的支付机构,这些账户之间资金调拨频率和体量是巨大的。
今天我们就聊一聊资金调拨系统的设计方法,以及需要关注的设计点。
一、资金调拨
我们都知道一个企业,支付机构,银行等都会用于多个银行资金账户;每个账户都会有不同的用途,每个账户中也会有不同体量的资金;当然每个账户中的资金的利息以及其他收益率也是不同的;所以基于业务需要开通了众多资金账户,又基于利益需要或者合规需要又将资金按照一定规则存放于不同的资金账户。
这样就会在一些场景下需要将一些账户的资金转到另一些账户中去使用,这个转移资金的业务就是调拨业务。
二、为什么要调拨
调拨系统的建立一个是基于调拨频率和调拨效率的需要,另一个就是可以实现全线上化的资金监控和管理;例如支付机构,会在一家银行开通备付金监管户,在其他很多银行开通备付金收付户以及备付金汇缴户。
基于监管需要资金日终会向上归集到监管户,日间又基于出款业务需要,将资金调拨至各个备付金收付户;因为账户数量多,调拨频繁,可能几分钟就需要调拨一次;那么人工处理是不现实的,这时就需要基于具体资金账户的资金需要通过系统完成资金的自动调拨。
三、调拨的方式
最原始的就是可以通过人工做调拨:比如资金同事到对公户网银平台,操作资金转账,将资金划拨至另一个公司名下的账户里,或者一个集团子公司名下的对公账户里;这种模式多用于资金调拨频率低,资金账户数量少的情况,一般的企业基本人工调拨即可满足业务的需要。
另一种就是系统自动调拨:就如2中提到的场景,基于出款需要或者其他业务需要实现系统化的自动调拨;当然调拨系统也可以是一个简单的调拨收后台,由人工提交调拨单据,发起调拨请求;另一种就是完全基于业务实际资金需要自动调拨申请;比如基于实际出款的总量,来决定目标出款账户资金余额是否充足,不充足时需要调拨多少,要从哪个账户调拨资金等系统处理。
四、资金调拨系统概述
调拨系统就是接受业务系统的调拨申请,完成调拨的判断以及调拨的发起;并记录所有调拨的业务数据的资金处理系统。
下面是一个比较通用的调拨业务架构:
调拨的请求来自各业务方,比如出款业务,还款业务,归集业务,或者其他的需要划拨资金的业务。
业务方将要发生的业务封装成调拨请求,发送调拨系统;调拨系统来判断该次需不需要进行资金调拨。
这个过程需要去查询出款账户的资金余额是否充足;预计其他资金预留规则综合得到需要调拨的资金数量。
然后生成调拨单据;基于调拨通道的限额情况对调拨单据进行拆单处理,然后生成调拨记录。
最后发起调拨打款申请完成调拨。
五、资金账户管理
资金账户管理其实就是维护所有可以参与的账户信息;一个是为了获得调拨需要的账户信息,另一个就是资金安全需要,仅允许在账户管理里存在的账户才能执行调拨业务;其他账户不允许作为调拨收款账户。
六、调拨通道管理
因为资金调拨的金额一般都比较大,一般的通道是无法满足的;所以就需要签约一些大额通道;比如银企直联,银行直签的巨额通道;我接过的一些超大额像单笔10亿,日累计50亿的通道,可以满足业务需要。
对于一般企业来说银企直联就可以满足需要。
七、调拨预留规则
基于业务需要判断资金调拨金额的时候其实还要考虑其他情况,比如调拨收款账户需要保留一定的资金量,不能全部用完,也就是有一个存量规则。
还有一种情况对比高频调拨出款的账户,比如一个支付机构的用于出款的备付金账户,可能每5分钟就需要一次批量出款,每5分钟就需要进行一次资金调拨;在如此高频率的调拨场景下如果预设一个底线存量那也是没问题的;但是考虑到资金的利用效率,以及收益情况。
另一个原因就是降低调拨频次,我们可以设定为30分钟调拨一次;因为每5分钟有一次出款批次,为了保证金资金充足,我们就需要基于一定的算法来保证金30分钟内的每次出款的资金充足;这时候,我们就需要一个合理的算法来计算每次调拨需要为接下来的30分钟的出款预留资金;我们假设这个预留资金为Ax,x代表调拨的场次。
这里不过多介绍如何计算,大家可以思考一下这个算法,我们可以再交流群沟通,假设我们得出的每个场次的调拨资金为 Mx。
八、调拨金额计算
基于上面的假设我们就知道了每次调拨应该调拨多少资金了,假设业务第2场次要从“招行1001账户”出款10亿,此时请求到调拨系统。
出款需求:chukuan=10亿。
此时通过招商查询接口查询到此时的账户余额是9亿,并且查询到账户在第2场次后要预留资金量为5亿。
所以本次是需要调拨资金的,告诉业务方账户余额不足请等待调拨结果。
这时计算需要调拨的资金量:xudiaobo=10亿-9亿+5亿=6亿,所以需要调拨的资金量是6亿人民币。
查询获得给该账户调拨的账户是存管户2001,生成调拨单。
由于通道限额单笔是5亿,所以需要对调拨单进行拆单。
九、账户调拨关系模型
该模式就是决定哪个账户往哪个账户调拨,利用出款账户来查询要从哪个账户调拨资金。
十、调拨发起
主要是业务发起以及人员从后台直接发起;所以需要向外提供调拨申请接口,后台需要调拨申请管理功能;这个就不过多介绍了,相信大家都能设计出来,认真思考一下吧。
十一、调拨审核
这个基于实际需要不同类型的调拨请求需不需要审核,视情况而定,人工提交的调拨申请肯定是需要审核的。
十二、调拨记录
调拨记录主要是调拨申请记录、调拨单记录、调拨子单记录、调拨打款记录、调拨审批记录等。
调拨单记录:
调拨子单记录:
十三、调拨出款
生成调拨子单以后,调用打款中心的调拨通道发起资金划拨申请;基于通道返回的结果变更调拨单的打款状态;并且将最后的调拨结果告知业务方,以便业务方进行下面的业务流程。
十四、调拨异常的处理
一般的异常就是调拨没有收到通道侧的最终反馈,这个就需要人工干预去查看资金有没有调拨完成;另一个就是调拨失败,这时候就需要一个失败重新出款的操作流。