关于会计对账的一点总结和思考

会计学有一个很重要和很出名的公式,相信很多人都见过:

资产 = 负债 + 所有者权益 + 收入 – 费用

        但会计学上还有另外一个比较隐蔽的公式,虽然不像上面的公式那么出名,但也经常能见到它(或者变种运用)的身影

那就是,即期末值=期初值+期间变化值,也就是期末值=期初值+期间入-期间出。该公式非常简单,也很容易理解,并且大量的用于计算和核对两个前后时间点的会计值的关系,它明确的指出,期末这个点的值是由一系列变化而来的,变化来自两个方面:1,存量—即期初值;2,增量—期间变化值。任何期末值的多少必须由这两部分变化而已,不能凭空捏造。

在账户中,我们也能够经常看到:资产账户的借方余额=期初借方余额+借方发生额-贷方发生额。

        那么对一个账户来说,必须记录两个维度:余额和流水,余额记录的是一个时间点的值,而流水则是反映一段时间内余额变化的过程,两者应该是一致的,即余额的增减一定对应的流水入和流水出,流水入和流水出一定会引起对应余额的增减,那么,在实际的实现中,如何确保这两者是一个事务呢?我们一般会使用db的单机事务去保障。

问题来了?既然我们已经通过事务去保障两者的一致了,为啥还需要额外的会计对账呢?必要性在哪里?

          从会计核算的角度看,虽然在具体的账户实现中,余额和流水会在一个db事务的方式进行实现,但还是有必要在会计方面对余额和流水进行二次对账核对,目的是提供一个独立的第三方核算机制,用于发现和核对资金的安全,如余额被人为修改了,如人为增加100元,虽通过db签名也能发现,但如果对应的流水没修改,则可以通过会计核对后发现该问题。那么如果对应的流水也被更改呢?那么单独对该账户的流水和余额进行会计核对(我们称为分账户核对)是无法发现问题的,会计恒等式还是成立的,那么通过进一步的总账户核算也能发现问题(即每个用户单独的余额和流水都是符合恒等式的,但加起来跟外部总账是对不上的,如对应的银行收款单,对应的商户入账账户等),会计核算系统正是需要从独立第三方核算视角,建立一整套合规的,高效和健壮的系统,从分账户,总账户等进行多个级别的核算,确保整个第三方支付系统的资金安全。

那么如何对账呢?按照及时性的要求,我们分为T+1和准实时的对账,下面分别介绍:

一, T+1对账

      即今天对昨天的账,是按天增量对账的一种,在日切点后,把落入日切点之前的当作昨天的账目进行汇总核算,得到昨天的一个余额,即昨日余额。

在多系统中,一个难点是日切点的统一,在传统银行IT系统中,都有一套成熟的日切系统来负责协调各个系统的日切,而对没有专门搭建日切服务的系统来说,也有一些简单的处理办法:如在业务入口点分配业务时间作为贯穿后续各个系统记账的业务基准,这样各个系统的流水均会以该业务时间为准,确保同一个时间点的流水在各个系统一定是在同一天内。另外一种方式是跨多一天核对流水,即虽然对账的是昨天的流水,但会看前天和今天的,通过业务系统进行调整,然后按照其中一个为基准,重新记账。

二,分钟级的准实时对账

        一种好的方法是余额字段记录一个事务流水号(流水号自增,通过流水号可以找到对应的流水),余额和流水增量对账根据流水里面的事务流水号进行核对。

        前面两种办法都存在一个困难:即由于系统余额总处于交易中,因此余额的值时刻在变化,很难捕捉某个时刻的余额,然后和流水进行核对,那为了进行从会计核算层面获得一个期初的余额值,有什么办法吗?

        方法一:帐户自动具备按天轮换的机制,这样的机制本质是以空间换时间,通过两个定时轮换的账户按天轮换来获得期初的值,该办法具有一定的操作性,但也带有较多的风险,特别是个人的账户一般只能有一个账户,是不能进行随意切换的,该办法可以用在一些中转类的账户。


        方法二:时间片倒推,比如我们在00:30 拉取00:30的流水和余额,然后把流水反向推到23:59(即流水一条条扣除直到时间点在00:00之前的流水),那么23:59对应的余额就作为期末余额。

        有了前面的办法,那么每天的核对其实就是在昨天的期初余额基础上,找到变动的部分,相加后得到期末余额进行核对即可(新的一天,当前的期末余额变成第二天的期初余额),类似数学归纳法一样,只要期初余额是对的,那么期末余额的准确性就是判断一天内的变动部分是否准确即可,而一天内的变动和核对是相对比较简单的。

猜你喜欢

转载自blog.csdn.net/tenfyguo/article/details/54668510