本文主要讲述了国际汇款系统的记账原理以及账户体系的设计框架与结构。
一、为什么要做账户体系
原则上,如果你的系统不是转接系统,那么在使用上是会用到账户的。(转接系统指的是,系统本身不过账,商户端提交信息,系统解析后组成报文转发至渠道侧,由渠道方直接给商户结算,系统只记录信息流)
在国际汇款产品中,账户既是资金流转的载体,也是财务核算的工具。所以,账户体系的设计是整个核心系统的底层基础,是核心系统在基础金融服务的基础上,为用户提供对于资金收、付、管的服务。
二、账户到底能干嘛
账户体系的设计,主要依据于账户在系统中的作用。一般系统中,账户常用的用途有:
记录客户在系统中的交易余额增减
记录账务流水的历史
帮助自有平台完成会计账记录与核算
三、系统的记账原理
上面说了账户的用途主要是作为财务核算的工具,那么我们来看一下,系统是如何记账的?
为提高交易性能(尤其是交易量很大的2C类产品),我们常常在设计系统的时候,将交易与账务分离,以提高交易处理的性能和效率。所以,记账一般分为2步:
支付完成后同步记流水账(单边记账);
异步通知会计系统记会计账(复式记账)。
账务处理
用户触发交易,交易系统生成一条交易流水,并在付款成功后,将交易流水发送至账务系统,生成一条记账请求。
账务系统为每笔交易分配账务流水号,并调用计费服务,算出商户的交易手续费。系统进行实时生成一条流水账,流水账里会包含交易流水号、产品、交易类型,交易金额、币种、交易主体等。账务系统采用单边记账的方式,记流水账,同时更新账户余额。
会计处理
账务系统记账完成后,系统会定时通过批处理的方式将将流水账发送至会计系统,并触发写事件组件来存放一笔交易下的所有事件记录,并调用事先维护好的事件分录,从而“拼成”会计传票,即会计分录。
会计系统采用复式记账的方式,记会计账,同时更新会计余额。(详细的会计记账方式,日后在会计系统中分享给大家)
会计记账完毕后,每日日终进行会计系统会进行试算平衡检查,保证记账准确性。另外,对账系统也会对账务系统和会计系统的余额进行对账。
注:
分户账(外):客户账,账户系统记录的流水账,采用单式记账法,满足让用户及时看到账户余额和订单状态;
分户账(内):内部账,会计系统记录的会计账,采用复式记账法。记录会计分录和余额,为日终对账和清算提供支持。
从记账原理中,我们看到一件事:是交易驱动记账,从而产生了流水账和会计账,同时更新了账户余额与会计余额。
另一方面,我们将提供的业务服务包装成产品,并通过产品定义与产品定价向外输出,而交易归属于产品,是产品的拆分。所以,产品-交易-账户-会计,从上到下形成一个链条。
四、建立账户体系
前面我们已经提到,账户更新的时候先更新分户账(外),再更新分户账(内),所以账户可以划分为客户账户与内部账户,其中,客户账户主要记录商户端账务信息,内部账户主要记录平台自身的账务信息。另外,账户的类型可以根据用途和会计科目设置。
例如,国际汇款产品的账户整体框架就可以这样设计:
商户端:
多币种余额:主要记录商户在平台上不同币种的账户余额;
实体账户:主要记录开立为商户开立的实体账户信息(平台为商户提供的增值服务);
固定风险备用金账户:对于一些风险业务,会收取一定的备用金(预留);
预付手续费账户:主要用于先付费业务(预留)
平台端:
营业收入账户:损益类账户,记录平台的收入情况,一般可按照产品设置手续费账户;
五、账户结构
六、小结
账户体系的设计,既要满足业务发展的需要,又不可过于繁琐、阵仗过大。一些产品在初期交易体量不大,或者某些公司有自己独立财务系统的情况下,可以先不用设计内部账,只设计客户账,通过交易记流水,财务人员可以通过下载交易流水与自己的财务系统或者台账进行对账也是可以的。