银行记账接口

银行的记账和处理是个很复杂的过程,可以说从业务逻辑到技术实现都是很有技术含量的。2016年双十一农业银行(以下称ABC)全天交易量超过4亿笔,10号晚上只有一个人值班(啥事也没干)。据我所知没有任何一家互联网公司能做到。当然了,各家互联网公司的业务复杂程度和技术架构,解决方案与传统银行完全不一样,业务需求也不同,各家各有特点。

言归正传,在介绍记账之前,需要同学们先了解一些会计的基本概念。考虑到银行核心系统内部会有部分涉密的东西,我会尽量过滤掉这部分内容,只做一般化的讨论。

银行系统在处理上分为联机交易和批量交易两大部分,从字面意思上可以知道,联机就是实时处理,实时更新,比如活期账户取现。批量则是对当天处理的结果或者待入账信息等临时表进行汇总处理,具体包括清算、轧差等。记账接口在技术上是整个核心系统数据的来源,各个子应用(存款,贷款,理财等)通过记账接口完成对合约明细的写入。一般当天晚上,核心系统会从明细表出发进行一系列复杂的处理。换句话说,这个接口主要和合约明细这个表打交道。这个合约和我们所说的账户不一样,通常意义上的账户,比如说活期账户,是银行记账的维度,而为了明晰账簿,ABC采用的是以合约的形式记账,活期合约下,有活期合约余额类型和利息合约余额类型,通过合约的形式来逐户记账的方式叫做分户账。”账户”被分的更细了,这么做的意义在于,除了分户记账,我们还可以采取其他的维度去记账,比如按照一定的统计维度(网点、币种、产品、账户余额类型)来分门别类的统计。(分类账
举例说明:
某银行托管的基金合约下,客户持有的份额(余额类型一)是10000.00元
客户购买的暂存资金(余额类型二)是30000.00元
异常待处理应付客户资金(余额类型三)0.00元
同一个合约下不同的余额类型需要有各自不同的动账时间等属性。分类账用于账务核对,满足对可售产品(比如某定期,对于银行来讲就是一个可以卖给客户的产品)进行汇总的业务需求。上合约中,银行可以对客户购买的暂存资金进行冻结,交易金额封顶操作,等。
定义如下:
分户账:采用合约的形式来逐户设置,反应金融性交易的经济事项变动即时余额信息。
分类账:也称汇总账簿,按不同的维度分门别类的反应分户账汇总信息。
实际上,ABC还需要保留一个账簿叫做明细账,按照业务发生的时间顺序,逐日逐笔记录业务的账簿,这个保留的是最最原始的凭证信息。这个账簿以业务场景为出发点。

基本概念相关

合约:可以理解为客户和银行之间的一种契约。详细解释可以参考这里
合约分录
:合约分录是合约的资金或其他信息产生变化时产生的一条明细记录,按照是否有资金变动,合约分录可以分为金融性合约分录和非金融性合约分录,通过记账接口记录的均为金融性合约分录,即某账户余额类型的金额变动明细。也是我们记录的描述合约的最小单位。
合约明细:用来反映某一笔交易对某一个合约的影响,即当前合约的业务场景。一笔合约明细由一笔交易产生的、属于某一合约的全部合约分录组成。通过记账接口记录的都是金融性合约明细。即一笔交易中某一个合约下发生金额变动的账户余额类型的明细记录。
合约余额:反映一个合约下的某一账户余额类型的当前余额信息。
借贷平衡校验:按照借贷记账法,对一笔联机交易生成的所有合约明细数据,按照行部、币种将借方发生额和贷方发生额分别累加汇总后,利用“有借必有贷,借贷必相等”的记账规则来检验本交易记账是否正确。
抹账与冲正:对用户操作失误引起的错账进行调整,错账分为当日错账、隔日错账两种。对当日发生的账务差错,经高级主管审批,由原经办用户选择抹账交易,进行抹账处理。对非当日的其他账务差错,做冲正处理。多说一句,抹账和冲正都是对错误的补救。抹账相当于把原来发生的交易抹除,冲正相当于把原来发生的错误账务进行弥补,比如某天交易柜员需要转出100.00元到现金箱,但手抖多打了个0,转出了1000.00。第二天柜员发现前一天做错了,这个时候柜员可以采取两种措施:一种是从现金箱往回转9000.00,一种是把10000.00全部冲回去,重新转1000.00出来。往原交易方向的反向记叫冲正,记红字,正向冲叫补账,记蓝字。如果是涉及计息的合约,还需要对算错的利息进行调整(你也不希望银行平白无故多吃你的利息吧),这个待会再讨论。

假设储户以现金形式存入个人活期储蓄存款1000.00元,对于个人来说,钱(现金)减少了1000元,但是卡里的钱多了1000元,看起来平了。对于银行来说,钱存到了现金箱,然后进入了核心系统,看起来好像现金箱里多了1000元,然后核心系统的个人活期合约里也多了1000元,总共多了两千,好像哪里不对。 ^——^

实际上,会计上有这么一个公式:
资产=负债+所有者权益
任何交易发生,都需要根据“有必有借贷必相等”的记账规则对交易进行借贷平衡校验。这里的借和贷和我们通常意义上借给朋友十块钱的借不同,会计上的借贷表示记账符号,借表示账户的借方,贷表示账户的贷方。对于资产来说,借表示资产的增加(+),贷表示资产的减少(-)。对于负债或所有者权益来说,借表示负债、所有者权益、利润减少(-),贷表示负债、所有者权益、利润增加(+)。
什么意思呢?根据表示意义的不同,银行把合约号(会计上叫科目号)分为资产类、负债类、所有着权益类等,不同类的科目账户增加或减少对于银行来讲意义是不一样的。比如说,个人的活期账户,对于银行来讲属于负债类科目,因为这是银行欠客户的,而固定资产,短期贷款等,这是银行自有的或者别人欠银行的,属于资产类科目。一个金融性交易,必然会导致至少两个账户的动账,在处理业务和会计事项时,必须同时登记借方科目和贷方科目,不管一借多贷还是多借一贷甚至多借多贷,借贷双方的金额必须相等。这就是“有借必有贷,借贷必相等”。
那资产=负债+所有者权益呢?
刚才说了,个人的活期存款在银行是负债,所以记录的是负债类科目,而库存现金是银行的资产,所以上述提到的业务场景应记的会计分录为:
借:库存现金 1000.00元                           (资产)
贷:个人活期储蓄存款  1000.00元        (负债)
这样就平了。再举几个例子:
银行给企业发放短期贷款一笔,金额为1000000.00元,转入该企业存款账户:
借:短期贷款  1000000.00元                   (资产)
贷:单位活期存款  1000000.00元         (负债)
银行向中国人民银行解交回笼资金100000.00元
借:存放中央银行款项  100000.00元     (负债)
贷:库存现金  100000.00元                   (资产)
再说借贷,一般来说,一个账户的左方称为借方,右方称为贷方,在哪方登记增加数,在哪方登记减少数取决于账户本身的性质。资产与负债和所有者权益是同一个资金的两个对立面,他们之间应该保持这平衡关系,因此,这两类账户必须以相反的方向来登记其金额的减少和增加。

通常:资产类账户借方登记增加数,贷方登记减少数;负债类和所有者权益类贷方登记增加数,借方登记减少数。因此对于资产类账户,余额增加记入借方,对于负债类科目和所有者权益类科目,余额增加记贷方
对于资产类账户的余额和发生额关系表示为:
期末余额  =  期初余额  +  借方本期发生额  –  贷方本期发生额
(借方)      (借方)
负债类和所有者权益类账户余额和发生额关系表示为:
期末余额  =  期初余额  +  贷方本期发生额  –  借方本期发生额
(贷方)      (贷方)
对如上例子,发生额及余额试算如下:

账户名称 期初余额 本期发生额 期末余额
借方 贷方 借方 贷方 借方 贷方
库存现金 1000000 1000 100000 90100
个人活期存款 1000 1000
企业短期贷款 1000000 1000000
单位活期存款 1000000 1000000
存放中央银行款项 100000 100000

未完待续。