全面解构支付系统设计——你不可不知的会计核心

零基础学产品,BAT产品总监带,2天线下集训+1年在线课程,全面掌握优秀产品经理必备技能。了解详情

要理解支付系统的设计,会计学知识是必要前提。

一、复式记账

第一个问题:如何理解账务系统单边记账,会计系统复式记账?

有些公司内部账户之间转账都采用复式记账法,如充值、提现交易,他们在账务系统都记单边流水,等和银行对账后,在会计系统复式记账

1. 以充值为例

用户充值:秋秋支付宝充值100 元,那么在账务系统里面单边记账,主要就是如下的流水信息:

若有N 多条充值的流水,在账务系统中会记录客户分户N 多条账务流水,并实时更新外部分户的流水和分户余额。

同时发送该充值业务数据到会计核心,会计核心根据账务系统提供的会计科目做一条客户帐分户的贷方分录,日终汇总分别借记一条工商银行待清算款充值账户的分录,同时更新相应科目下的内部分户余额,在会计系统中会对应的生成会计分录流水:

银行对账后 ,对账结果触发会计系统会计分录:

二、会计基础入门

第二个问题:如何理解会计中的“借”和“贷”?

首先明确一个公式:资产= 负债+ 所有者权益

规律:

  • 当秋秋收到现金时,都是借:我的现金 贷:其他科目;说明我的现金时借方表示增加。
  • 当秋秋借别人钱时,负债增加了,借:其他科目 贷:我的负债(属于别人的钱),说明我的负债是贷方表示增加。
  • 当秋秋辛苦攒下的积蓄,所有者权益增加了,借:其他科目 贷:属于我的财产,说明属于我的财产是贷方表示增加。

三、会计科目和账户

1. 会计科目

  • 会计科目按其反映经济内容的不同一般分为资产类、负债类、所有者权益类、收入类、费用类、利润类六大类科目。由于支付机构主要核算客户资金和备付金资金账户,没有直接采用所有者权益类、收入类、费用类和利润类科目,仅仅设置资产类、负债类、共同类(待清算),严格遵循会计恒等式。
  • 资产类科目余额方向一般在借方,负债类科目的余额一般在贷方,共同类既具有资产也具有负责属性,属于双重科目。

2. 科目层级

为了既能够提供总额核算,又能提供明细核算,会计科目一般更具具体需求设置层级。

按照提供指标的详细程度不同,可以分为总分类科目、明细类科目。总分类科目就是我们说的总账科目或者叫一级科目,是总体反映会计要素具体内容的科目。

明细分类科目,也就是明细科目,是对总分科目所含内容做详细分类形成的会计科目。

明细科目根据会计核算和经营管理需要还可设置二级、三级科目。没有下级科目的会计科目为叶子科目,即底层科目,底层科目下按照实际账务处理设置会计账户,会计账户与资金账户一一对应。只有叶子科目下才能开立账户,非叶子科目下不可以开立账户。

3. 科目和账户的关系

  • 资产类科目记在借方表示增加,记在贷方表示减少;
  • 负债类科目记在借方表示减少,记在借方表示增加;
  • 所有者权益记在借方表示减少,记在贷方表示减少;
  • 费用类科目记在借方表示增加,记在贷方表示减少;
  • 利润类科目记在借方表示增加,记在贷方表示增加。

4. 交易流程与资金平衡

5. 内部户和科目的关系

6. 会计科目平衡关系

  • 在一级科目110银行存款下,针对不同银行可以设置多个二级科目:11001 A银行存款科目,11002  B银行存款科目;
  • 在每一个银行存款二级科目下,根据收付业务目的的不同,又可以设置多个三级科目:1100101 A银行存款_收款专用科目,1100102 A银行存款_付款专用科目,1100103 A银行存款_归集专用科目。

7. 每个类目的科目平衡关系

  • 叶子科目余额= 该科目下所有账户余额综合;如:1100201 科目余额= 1100201科目下所有账户的余额总和。
  • 科目汇总余额= 该科目下所有叶子科目余额总和;如:110 一级科目余额= 110 一级科目下所有叶子科目的余额总和。
  • 总账余额= 该科目下所有同级科目汇总余额总和;如:资产类总账= 资产类所有科目的余额总和。

201 和 202 科目属于客户账科目,其余科目均属于内部账科目,即 201 和 202 科目下的账户属于客户账,其余科目下的账户属于内部账。

四、会计资金平衡关系

采用复式记账法,保证会计核算资金的平衡关系,复式记账法是指对发生的每一项经济业务,都以相等的金额,在相互联系的两个或者两个以上账户中间同时进行登记的方法。

公式①:资产 (借方余额)= 负债(贷方余额)+ 待清算(借方余额)

公式②:原始平衡关系:资产 (0)= 负债(0)+ 待清算(0)

支付机构的资金管理体系是在银行资金管理体系基础上建立了,为了能清晰的理清资金的流入与流出关系,保证收支两条线;支付机构一般会在每家合作银行分别开设收款专用户和付款专用户。

其中收款专户是专门用来归集充值流入的资金,付款专户专门用来归集提现流出的资金。

1. 充值业务资金流动机制

当充值业务发生时,银行直接从客户的银行账户进行扣款,但是并不会立即向支付机构的银行账户入账,而是先挂入银行内部过渡账户,在日终处理时统一讲当日累计充值资金一次性向支付机构收款专业银行账户入账。

2. 提现业务资金流动机制

当提现业务发生时,支付机构并不是立即通知银行扣款,而是在每日定时将一段时间内同一家银行申请提现的请求汇总提交给银行,由银行负责从支付机构付款专用银行账户进行扣款,向客户的银行账户入账。

3. 资金调度机制

为了保证每家银行的收款专户资金得到统一的调度支配,同时满足每家银行付款专户的资金需求,支付机构会指定唯一的一家合作银行开设统一归集账户,每日将各家银行收款专户内充值业务资金汇总归集到这个唯一的归集账户内,并根据各家银行付款专户提现业务需要支付的资金,从归集账户向各家银行付款专户划转调拨资金,确保提现支付成功。

支付机构在银行的资金管理体系的基础上,从自身的资金管理需求出发,搭建了自己的资金调度体系,其资金流基本和银行类似,典型的资金体系如下:

由于支付机构内部待清算充值款项是当晚核心系统日终后才能结转到银存收款账户后,才能进行调拨,而每日下午在产生给银行的提现数据时,就需要保证银存付款专户上的资金到位,这样资金调拨就会存在时间差,为了解决这个时间差问题,于是内部设置了一个调拨户进行资金中转。

调拨专户是一个虚拟的账户,不是与真实资金账户对应的账户,余额方向可以是借方或贷方。每日在向银行提交提现数据前,先内部从银行收款账户进行调拨,如果由于时间差原因收款账户资金余额不足,则直接从调拨专户上调拨资金到收款账户,再从收款账户向付款账户调拨。

资金调拨专户上的缺口部分需要在日终结转时予以轧差抹平,即现将待清算充值资金结转到调拨户,再从调拨户结转到银行存款收款账户。

五、会计驱动的入账机制

账务系统作为会计系统的前置,一般的业务请求都是由账务系统先完成记账再向会计系统发送请求进行会计记账。

但是有两项特殊业务是会计系统独立处理,并是由会计系统向账务系统发起请求进行最终账务记账处理的,这就是涉及银行资金结算的充值、提现业务的待清算账户单边归总记账和日终的会计结转记账。

1. 充值业务在会计系统中单边汇总的流程

2. 提现业务在会计系统中单边汇总的流程

六、会计日终处理

1. 日终前的账务准备阶段

向对账中心通知会计日终处理开始。

针对充值业务和提现业务员的日间单边记账进行汇总,完成待清算款项的汇总单边记账。

通知对账中心日终对账,并获取对账中心返回的银行对账结果数据。

根据各家银行充值业务的对账结果数据,汇总结转各银行待清算充值资金到各银行存款账户(若有资金调拨,则结转到资金调拨账户)。

对于有资金调拨的银行,根据充值业务的对账结果数据,汇总结转各家银行资金调拨资金到各银行存款账户。

根据提现业务的对账结果数据,汇总结转各银行待清算提现资金到各银行存款账户。

因为资金调拨专户需要在日终时归零,所以对于差额部分需要轧差记账,即结转各家银行资金调拨余额到各家银行存款账户。

2. 日终的轧差与汇总处理阶段

检查所有账户当日会计发生额是是否借贷相等,即借方发生额=贷方发生额,若不相等,则自动登记轧差金额的会计分录,保证借贷发生额平衡,对于导致借贷发生额不平的原因事后查询解决。

对账户的会计分录按借贷进行汇总,同时根据各账户上日余额和当日的发生额计算得到每个账户当日余额。

按照科目对科目账户的会计分录进行汇总得到科目当日发生额,同时根据各科目上日余额和当日的发生额计算得到当日科目余额。

3. 日终的平衡检查和日切阶段

  1. 平衡检查主要保证借方科目余额等于贷方科目余额;
  2. 科目总分检查保证下级科目余额总和等于对应的上级科目余额;
  3. 会计日余额表日切主要保证每日的账户余额数据得到保存;
  4. 更新会计日,保证下次日终处理的是下一个会计日。

七、会计结算业务参数的配置与管理

会计系统作为核心重点负责清算、结算会计平衡的系统,在每增加一家银行时,都需要配置相关的会计结算关系。

会计系统的日间记帐处理包含两种模式:即时模式和缓冲模式,具体采用何种模式由账务系统触发时决定。

即时模式需要会计系统严格按照账务系统发送的指令进行会计记帐处理;

缓冲模式需要会计系统根据相关的参数配置进行会计记帐处理,一般日间都是单边的会计记账处理,如充值与提现业务。

日间会计系统根据参数配置仅记录客户帐的变化部分,不记录内部账的变化部分,内部账的变化部分在日终时根据相关参数和日间的单边账务记录,进行分类汇总后再分别记帐处理。

1. 会计业务相关参数包括以下部分内容

针对日间所有的充值类交易代码(含充值 4003、充值补账 4023 )、提现类交易代码(含提现 5004 、提现补账 4022 、充退 4104 )操作,其下每一个子交易码 sub_trans_code 对应的每一个涉及该业务的 title_code 科目代码都需要配置一条对应的参数记录,来确定日间该科目下的该交易代码进行怎样的单边会计记帐处理。

参数重点说明该科目该交易记帐的方向、是否需要汇总记帐、是否需要发送对帐中心处理、是否需要 cache ;如 400301 交易代码,业务涉及 20100 1个人账户科目和 2002001 公司账户科目,则需要对应的两条参数记录;具体配置如下:

日终批量处理时,有一步是专门针对缓冲记账的处理,会计系统会根据参数表中充值、提现相关的每一个子交易码 sub_trans_code 对应的银行代码 bank_type 不同,分类统计日间的单边会计记账数据,按照汇总后的数据会计系统单边记账处理;完成缓冲记账的剩余部分。

如 400301 交易代码,日终时按照参数表中的银行代码分别统计日间 400301 交易的单边会计记录,产生另一边的待清算户的会计记帐记录。

日终批量处理时,有一步是专门针对银行存款结转的,即将经过对帐的资金从待清算账户结转到银行存款账户,以保持与银行真实资金变化的一致。

会计系统会根据与银行的对账结果数据进行结转记账处理,参数表中记录了每家银行从待清算户到银行存款户进行结转的具体记账参数中充值;因为存在两种结算方式,所以存在两套记账参数:

  1. 从待结算资金户结转到银行存款户的会计记帐参数;
  2. 从待结算资金户结转到资金调拨户的会计记帐参数;
  3. 从资金调拨户结转到银行存款户的会计记帐参数。

当前的业务规则表包括字段如下:

会计业务规则在整个会计核心中起着非常重要的作用。会计核心的几个重要功能(记录分录,发送对账中心数据,汇总记账,日切结转)中,都有他的用处。目前来讲,会计规则主要有三个地方应用:

  1. 日间生成分录:这部分规则叫做会计分录规则。
  2. 日切汇总记账:这部分规则叫做会计汇总规则。
  3. 日切资金结转:这部分规则叫做会计结转规则。

会计汇总规则和会计结转规则同属于会计流转规则。

2. 日间生成分录

在日间过程中,会计核心主要负责把账务请求转化成分录要素并记录下来,同时根据需要发送给对账中心。在这过程中, 会计分录规则起如下作用(左边是账务请求已知信息,右边是通过会计分录规则得到的信息):

通过会计分录规则的转化,就可以知道是否要进行汇总记账,从而决定是记单边分录还是也要记录待清算方科目的分录。可以知道会计要素中的银行是从账务请求的哪个字段取。

也可以知道是否要发送给对账中心,有了规则得到的这些信息,再加上能从账务请求直接拿来的会计要素(如:账户,科目,金额,会计日,借贷方向),就可以生成分录,并发送给对账中心。

从能够目前的会计业务规则表中的数据来看,这部分规则的使用如下:其中蓝色部分作为请求部分,黄色部分作为会计业务规则的产出部分。

3. 日切汇总记账

在日切过程中,需要把充值、提现等业务的多方分录进行汇总,得到一方分录,并记录下来。会计汇总规则在由多方分录转化成一方分录时,起如下用途:

通过会计汇总规则的转化,得到一方分录的账户,科目和借贷方向要素,再加上其他一些会计要素(SubTransCode,会计日等),就可以生成一方分录了。

从目前的会计业务规则表中的数据来看,这部分规则的使用如下:

其中蓝色部分作为请求部分,黄色部分作为会计业务规则的产出部分。

4. 日切资金结转

在日切结转过程中,需要把已清算款或调拨户结转成银行存款。这些结转所使用规则叫做会计结转规则。日切资金结转有两种情况:

(1)待清算结转

对账中心对账完毕之后,在日切过程中,需要把待清算数据结转成银存或调拨户,所以需要建立一套会计结转业务规则,来约束如何从待清算结转到银行或调拨户。

在结转过程中,他是依赖会计结转规则的如下参数来查找规则:

根据已清算汇总数据( pac_gather_daily )得到的SubTransCode,TitleCode,Remark(=SubTransCode ),从会计结转规则中得到两条规则,一条是存放待清算方分录规则一条是存银存方(或调拨方)分录规则。我们根据这两条规则,然后在根据其他分录要素( SubTransCode , 会计日等),就可以生成两条分录。

同时要说明得是:这种情况的结转规则,都是成套的。

成套的含义是指用相同的 SubTransCode,BankType,Remark 取查找会计规则,如果能找得到,就是两条,这两条是成套的。

就目前的会计业务规则表中的数据来看,他的用途如下:(其中蓝色部分作为请求部分,黄色部分作为会计业务规则的产出部分。绿色部分是给调拨结转用的)

(2)调拨结转

调拨结转是日切过程中,把调拨户的钱结转到银存账户上,会计也需要配置这些结转规则来结转:

把 SubTransCode 和 Remark 都是结转子交易类型( 701105 )的规则查找出来。对应如果有Memo 值,则表示结转规则,同时 Memo 保存得是银存方的科目代码,根据科目代码找到银存方的规则。从而获得银存方分录需要需要的 titleCode ,  iwAccountNo ,  借贷方向。

八、案例分析

1. 打款业务流程图

2. 支付交易时序图

3. 打款信息流程图

4. 打款资金流程图

5. 退款业务流程图

6. 退款交易时序图

7. 信息流程图

九、记账逻辑

1. 充值类业务记账处理

  1. 被支付充值账户登记一条充值业务流水
  2. 实时更新被该充值账户余额
  3. 发送该充值业务数据到会计核心
  4. 会计核心根据账务系统提供的会计科目做一条客户帐的贷方分录
  5. 会计前置系统将该条充值业务订单发送之对帐中心数据库
  6. 日终处理程序根据对账中心当日的充值数据按业务类别(不含人工恢复数据)汇总分别借记一条中行银行待清算款充值账户的分录,同时更新相应科目下的内部户余额。(注:该分录入账时间与被充值账户的贷方分录中登记的入账日期保持一致)(业务要求:汇总的几条分录能分别查看到相应的明细流水)

2. 充值业务订单的恢复处理

3. 充值订单对账处理

4. 提现类业务记账处理

(1)提现业务处理

(2)提现业务处理记账逻辑

(3)提现业务对账后账务处理

5. 对账处理

6. 会计分录

 

本文由 @支付学院 原创发布于人人都是产品经理,未经允许,禁止转载。

题图来自 Unsplash,基于CC0协议。

评论
欢迎留言讨论~!
  1. 负债类科目记在借方表示减少,记在’借‘方表示增加;
    所有者权益记在借方表示‘减少’,记在贷方表示‘减少’;
    利润类科目记在借方表示‘增加’,记在贷方表示‘增加’。

    请问作者这一段是不是有点问题啊,带引号的部分都很晕。

    回复
  2. 说实话,我没看懂,,,财务小白,。

    回复
  3. 把握好根结点:有借必有贷,借贷要平衡。

    回复
  4. 楼主,关于四的第一个记账图中,最后提现的部分的第五步,借方为什么是401 清算充值款项,而不是待清算提现款项啊,是写错了吗,麻烦解答下?

    回复
  5. 有点专业,我表示佩服

    回复
  6. 算不明白账的我 必须要好好看看

    回复
  7. 膜拜了楼主!注册账号以来第一次留言 ;-)

    回复
    1. :cool: 感谢支持

      回复
  8. 干货

    回复
  9. 专业,深入,了解一下也没有坏处

    回复
  10. 老铁666

    回复
  11. 利润类在贷方是减少,估计打错了,得改一下

    回复
    1. 对啊这个我就看的有点晕不理解

      回复
  12. 楼主犀利,表示财经的我,只使用过系统,看这篇文章学习了各系统关联,很值。

    回复
  13. 估计我要看至少5遍才看得懂

    回复
圈子
关注微信公众号
大家都在问