一、 第三方支付账务系统设计

首先谈一下支付公司账务系统如何设计。关于如何记账,国内长期以来有两个发展方向,一个是以金蝶、用友为代表的财务系统,一个是以银行为代表的银行账务核心系统。这两种账务系统都是用来记账,但设计理念上有很大差别,财务系统以科目为中心,记账必谈科目,银行账务系统以账户为中心,记账必谈账户。从账户数量来讲,支付公司几千万甚至上亿的账户数量,金蝶、用友这种财务系统是支撑不起来的。基本上,对于支付公司的账务系统应该参考银行账务核心系统来设计,这一点在业界已经达成共识。

这里谈的的账务系统,是说的复式记账(有借有贷,借贷相等),但是不采用复式记账,而是采用单式记账,是否可以呢?首先说答案,是可以的。但是,单式记账不科学,也存在一些缺陷。采用单式记账,存在以下一些问题:

1. 资金的来龙去脉不清晰。记账是一门技术,有专门的方法,从刻字记事、结绳记事,发展到现在,借贷复式记账是目前为止最科学的一种记账方法。借贷复式记账能够清楚记录每笔资金从哪来、到哪去,这一点,单式记账是无法做到的。

2. 单式记账无法进行资产、负债平衡检查。资金不会凭空而来,也不会凭空而去。对于一个会计主体,有多少资产,就有多少负债,资产 = 负债 (所有者权益是对股东的负债)。比如用户充值业务,在支付机构的账务体系中,采用复式记账,用户余额增加,同时支付机构在银行的存款科目余额增加,日终进行总账平衡检查,银行存款科目余额 = 用户余额 (不考虑支付手续费)。而如果采用单式记账,一笔充值业务,只记录用户余额增加,而不记录银行存款,那末,用户的余额是否等于支付机构的银行存款呢?采用单式记账,是没有办法进行这种平衡检查的。

3. 从业务模型来讲,也需要复式记账。还用上面的例子来讲,比如,支付公司对接了100家银行,用户在每家银行都有充值,如果每笔充值,只记录用户余额是多少,而不记录支付公司在银行的存款是多少,那该如何核对支付公司在每个银行有多少余额呢?只能是把所有用户余额汇总在一起,然后把所有的银行对账单的余额汇总在一起,核对一个总数。这种核对方法,由于时间差或各种原因,是很难核对出具体每个银行账户存款的差异的。而如果采用复式记账,对于每笔充值,都记录了对应银行存款科目余额(或者是应收账款科目)的变化,账务系统总账借贷平衡之后,再用银行存款科目余额与银行对账单核对,就很容易核对出对应银行端每个账户余额差异了。在日常财务处理的工作中,财务人员也是用银行存款科目余额与银行对账单来核对,出具余额调节表,来核对与银行对账单的差异。所以说,从现实业务模型来讲,支付账务系统也应该采用复式记账的方法来进行记账。

以上谈了两点:一、支付公司的账务系统参考银行的账务系统来设计。二、采用复式记账。那末,账务系统具体如何设计呢?

1. 账务核心四张表。从数据的角度来看,账务系统与其他系统没什么区别,存储的也是数据,只不过存储的是和账务相关的数据,按会计科目分类存储。账务核心主要有四张表:分录流水、分户账、明细账、总账。

(1) 分录流水 是记账的凭证,记录每笔资金活动的来龙去脉,具体业务要素包括:

机构码

币种

交易码

交易日期

账务流水号

分录序号

帐号

借贷标志

科目号

发生额

......

(2) 分户账 记录账户的余额,可以有用户分户账、商户分户账、贷款分户账、内部分户账等,具体业务要素包括:

机构码

币种

客户号

帐号

账户类型

余额

上日余额

科目号

......

(3) 明细账 记录每个账户对应余额的变化,具体的业务要素包括:

帐号

交易日期

明细序号

发生额

借贷标志

科目号

余额

账户流水号

对方帐号

对方帐户名称

......

(4) 总账 科目总账,分为日总账和周期总账,日总账每日生成,周期总账月末、季末、半年末、年末生成,记录每个科目的期末余额和本期借、贷发生额。具体业务要素包括:

账期

机构码

币种

科目号

上期借方余额

上期贷方余额

本期借方发生额

本期贷方发生额

期末借方余额

期末贷方余额

......

当一笔业务发生时,首先生成分录流水,然后驱动账户余额变化,账户余额变化后,生成明细账。日终根据分录流水生成总账。根据业务需要,也可以先修改账户余额,然后异步生成分录流水,但是无论先生成会计分录,还是缓冲异步生成会计分录,都要保证分录流水与分户账余额的一致性,这一点通过日终系统的检查来保证。

2. 日间和日终

账务系统从模块上划分为两大系统,日间和日终。日间,业务驱动账务完成业务记账,账务系统根据不同的业务场景,划分不同的交易码,设置分录规则,拆分录、改余额。日终,进行平衡检查,保证账务系统数据的一致与准确,生成总账。日终主要进行如下处理。

(1) 自动入账。对于已拆分录未改余额的订单,改余额、记明细,对于已改余额未拆分录的订单,记分录流水。

(2) 生成总账。根据分录流水生成科目总账,科目发生额和余额从末级科目逐级汇总到一级科目。

(3) 总账平衡检查。

发生额平衡检查:一级科目借方发生额 = 一级科目贷方发生额

余额平衡检查: 一级借方科目余额 = 一级贷方科目余额

(4) 总分核对。总账科目余额 = 分户账科目余额汇总。因为业务24小时不间断运行,分户账余额在不断变化,无法准确取到期末的账户余额进行核对。这可以考虑用余额快照与总账科目余额进行核对。

(5) 稽核明细。检查明细账与分录流水是否一致。对于当日发生过余额变动的账户,昨日余额与分录流水中的发生额进行轧差,检查计算出的余额与余额快照是否一致。

3. 多机构、多币种。在分录流水、分户账、明细账中都设置机构码和币种字段,对于每套分录,同一机构、同一币种的借贷发生额是相符的。生成总账时,根据不同的机构、不同的币种生成总账,每个机构内,同一币种的总账借贷平衡。在同一机构,如果一套分录中涉及多个币种,用货币兑换科目来轧平,期末通过货币兑换科目来计算和结转货币兑换损益。每个币种一套总账,根据期末汇率,外币折算为本币,生成合并后的总账。

4. 对账。账务系统的数据要保证清晰、准确、完整。清晰通过会计分录来实现,通过分录流水,知道是什么业务场景,知道资金是怎么流转的。而准确和完整,是要通过对账来保证的。对账核对的是账务数据的完整性与准确性,是账务系统的一部分。互联网IT各系统分布部署,每个系统中都存放了一些业务数据,但只要和资金相关的数据都集中存放到了账务系统中。也就是说各业务系统分布部署,账务系统数据集中。通过日终检查,已经保证了账务系统内部数据的一致性,然后支付公司内部各其他系统与账务系统进行对账,保证支付公司各系统之间的数据一致性。内部对账一致后,账务系统再与外部进行对账,保证账务数据与外部系统数据的一致。与外部系统进行核对,包括与银行对账单核对,也包括提供账单给商户,商户根据账务系统提供的账单进行核对。因为内部对账已经保证了账务系统数据与内部业务系统数据的一致,与外部对账,用业务系统的数据与外部进行核对也是可以的,但业务系统与外部核对,一般只能核对发生额,对于余额是无法进行核对的。而如果用账务系统来核对,既可以核对发生额,也可以核对余额。对于银行存款,可以用银行存款的明细账与银行对账单核对,对于应付商户款,可以提供商户账户的明细给商户进行核对。另外,在实际工作中,会有各种各样的调账处理,而这些调账处理,可能并不在业务系统中体现,所以,外部对账,还是推荐直接用账务系统与银行、与客户进行核对。

二、 账务系统的作用与目标

对于账务系统,前文提到包括分录流水、分户账、明细账、总账。这是一个整体,这四张表要保证数据完全一致。在银行核心账务系统中,一般都是先生成分录流水,然后分录流水驱动账务余额变化和生成明细账。在支付公司的账务系统建设中,为了快速响应业务,把账务系统分成了两个部分,账户系统与会计系统,账户系统是指分户账与明细账,会计系统是指分录流水和总账。这样的划分是可以的,但这样划分并不代表账户与会计是独立没有联系的,二者仍然是一个整体。账户中有科目,分录中有帐号,总分平衡、借贷平衡,完整的组成一套账务体系。试想,如果没有这套账务体系的设计,在账户系统中只记录帐号和余额,这些帐号和余额在其他系统中也是可以记录的,那么,为什么还需要建设一套账务系统呢?账户中有科目,是为了总分核对,明细中有流水号,是为了明细能对应到分录流水,有分录流水,是为了账目清晰,能清楚的体现每笔资金的来龙去脉,根据分录流水生成总账,是为了掌握资产和负债的情况,而总账是否准确,又要总账和分户账进行总分核对。账务体系这样设计,就是为了达到两个目的:

1. 清晰。

2. 准确。

而账务系统建设的最终目标是是什么呢?最终目标是提供财务报表。

账务系统有以下几个作用:

1. 提供业务支撑。记录余额的变化,保证业务正常运转。业务驱动账务,没有业务也就没有账务,账务要保证业务能正常运转,账务的余额要100%准确。

2. 为用户提供账单。用户数量太多,不会为每个用户发送账单,用户可以查询账户的余额和明细。

3. 为商户提供账单。商户对于开在支付公司的账户与在银行的对公账户是同等看待的,账务系统需要为商户提供资金对账单。

4. 内部核算。记录银行存款、应收账款、手续费、利息收入等科目余额,与银行或第三方提供的账单进行核对,核对余额与发生额。

5. 为企业大财务提供汇总记账凭证。支付公司的账务系统记录的是业务账,这些数据是整个企业财务数据的一部分,需要合并到公司的大财务系统中去。可以把支付账务系统的会计分录映射为大财务的分录,然后汇总,直接对接企业ERP总账。这一点与银行非常类似,银行账务核心记录的是存款、贷款、汇款这些业务数据,这些业务账也是要与银行财务系统合并到一起的。

三、 账务系统建设中遇到的一些问题

从银行账务系统到第三方支付账务系统,在实施过程中还是会遇到各种各样的问题。银行账务系统已经实施了二十多年,在这二十多年里,也培养了许多熟悉银行会计与银行业务的核心人员,而互联网行业,很多开发同学对于会计不了解,对于账务系统如何做,也没有概念,而要建设这样一套复杂的账务体系,没有一批熟悉会计、熟悉业务的人员是很难做到的。所以,在实施过程中,要有准备,把这套体系给大家讲清楚,需要花费一定的时间和精力。

另外,在账务实施过程中,因为业务驱动账务,账务反映的是业务活动,所以需要了解清楚具体的业务场景,才能知道该如何记账、该如何拆分录,在这个过程中,需要和业务人员、财务人员持续的保持沟通,把业务梳理清楚。

还有,在银行账务系统中,账务核心一般对接大前置就可以,而互联网公司有很多系统,账务系统可能会与不同的系统对接,要准确了解个各系统之间的调用关系,把记账流程规划清楚。

四、 与银行账务系统的区别与联系

总体来说,支付公司的账务系统是可以参考银行账务系统来设计的,但是在实施过程中还是会有一些区别。

1. 分库分表。银行账务核心一般采用的小型机,数据库采用ORACLE 或DB2,支付公司一般采用服务器,数据库用Mysql。从机器性能和数据库性能来讲,银行系统的性能会更高一些,所以银行账务系统目前基本上还没有使用分库分表的策略,而互联网公司对于一些库表已经进行分库和分表处理了。

2. 24小时记账。在银行账务系统中,对于24小时运行,有很多种方案,例如切换余额、记不同分户账、日切后补流水等,但无论哪种方案,都不能实现完全24小时运行,少则几分钟,多则半个小时以上的时间,系统是不能对外运行的。其问题,主要是因为日终要进行总分核对,而分户账余额是在不断变化的,所以要想办法把期末的分户账余额取出来进行核对。这个我在日终系统中提到过,可以采用余额快照与总账进行核对,这样即使分户账余额进行变化,也不影响总分核对。余额快照是根据明细生成的,这种用余额快照与总账进行核对的方法进行其实存在一个问题,余额快照可能与真正的分户账期末余额不一致。这一点可以通过技术方法处理掉,在分户账中增加上日余额字段,每日增加一个定时任务,进行快照与上日余额的核对。

3. 银行存款余额调节表。第三方支付公司与商业银行核对银行存款,商业银行也会与人民银行核对头寸。商业银行每日都要与人民银行进行头寸核对,对于头寸的变动,有大额支付系统、小额支付系统、超级网银、同城等业务,这些业务,人民银行都会回传一个对账日期,而银行账务系统一般都会把这个对账日期记下来,这样用人行的对账日期来核对,基本上每天都是可以对平的。而对于企业,会在很多商业银行开户,每个银行的记账日期也不一致,这就需要企业根据银行存款科目日记账与银行对账单进行核对,为每个银行账户出具余额调节表。

五、 与公司大财务系统的对接

支付公司的账务系统记录的支付业务账,属于整个公司财务系统数据的一部分,这部分数据需要对接到公司大财务的ERP系统中,实现业务财务一体化。支付业务账与公司大财务系统对接,有以下几种方法:

1. 把支付各系统的业务订单报送大财务,大财务根据业务订单,分析是什么业务场景,进行拆分录处理。这种处理方式,因为各业务系统的订单分散在各个表中,数据格式也不统一,而且随着订单状态的变更,业务状态在发生变化,需要把每个业务状态反映到大财务系统中去,这个复杂度是很高的。

2. 大财务直接根据银行对账单来记账。银行对账单只能告知企业在银行实际有多少资金,并不能体现企业在银行应该有多少资金,所以只根据银行对账单来记账不够科学。另外,只根据银行对账单来记账,不能全面反映业务情况,例如对于应付款,有用户充值资金和应付商户结算款,或者应付商户款想再细化到业务线,通过银行对账单来记账是无法实现这种要求的。

3. 支付账务会计分录映射到大财务会计分录,直接对接大财务总账。因为账务系统已经集中了所有和资金相关的数据,并进行了各种平衡检查、内部对账、外部对账,是可以把账务系统数据直接映射为大财务分录,合并到大财务的总账中去的。这个有一点需要注意,支付账务系统科目设计时,尽量与大财务科目保持一致,对于业务场景,也要与大财务沟通清楚。

随着互联网的发展,第三方支付、互联网金融、电子商务,只要涉及资金、应收、应付、债权、债务、收入、费用,都会有账务系统的建设需要,而对于账务系统如何建设,随着业务的发展与技术的进步,相信会不断的有创新和发展。写此文,共勉。

第三方支付账务系统论述相关推荐

  1. 支付业务与技术架构学习总结(10)——第三方支付账务系统论述

    一.第三方支付账务系统设计 首先谈一下支付公司账务系统如何设计.关于如何记账,国内长期以来有两个发展方向,一个是以金蝶.用友为代表的财务系统,另一个是以银行为代表的银行账务核心系统.这两种账务系统都是 ...

  2. 第三方支付账务系统设计难点 16

    第三方支付账务系统设计 首先谈一下支付公司账务系统如何设计.关于如何记账,国内长期以来有两个发展方向,一个是以金蝶.用友为代表的财务系统,另一个是以银行为代表的银行账务核心系统. 这两种账务系统都是用 ...

  3. 超越“双十一”—— ebay百万TPS支付账务系统的设计与实现

    供稿 | Payments 任杰 编辑 | 顾欣怡 本文8760字,预计阅读时间27分钟 更多干货请关注"eBay技术荟"公众号  导读 2018年,ebay全面展开了下一代百万T ...

  4. 第三方支付-核心交易之商户结算设计

    1.结算的定义 结算的简单解释是指把某一时期内的所有收支情况进行总结.核算.在第三方支付系统中是将商户的收支结算给商户.支付系统中会设计两个计算账户一个是待结算账户,用于非实时结算的收入,还有一个是已 ...

  5. 罚单不断,长文揭秘第三方支付!

    随着移动支付的快速发展,第三方支付已经深度融入到生活中,如果生活在一二线城市,从吃饭.购物.看电影.菜市场买菜到搭公交地铁,你能想到的消费场景,基本都可以用移动支付解决.在这些便捷的背后都有第三方支付 ...

  6. 【转】关于第三方支付,看这篇文章就够了!

    本文转载自:https://blog.csdn.net/ityouknow/article/details/89089914 随着移动支付的快速发展,第三方支付已经深度融入到生活中,如果生活在一二线城 ...

  7. 第三方支付(二):揭秘第三方支付包含哪些业务 | 牌照角色篇

    这篇文章为大家介绍第三方支付都包含哪些业务,以及第三方支付的各方玩家都是谁? 牌照发放 在中国很多行业发展都会走到前面,等行业发展到一定的规模,政府才会根据行业的发展情况进行监管.典型的行业有:第三方 ...

  8. 第三方支付平台涉及到的业务

    1,结算类型:对公,对私是什么意思?    对公,就是以公司与第三方支付公司签约,提供公司的对公账户.第三方支付公司直接将收款结算到公司对公账户.    对私,就是以个人与第三方支付公司签约,提供个人 ...

  9. 第三方支付系统-支付流程

    为什么80%的码农都做不了架构师?>>>    目前来说,越来越多的行业互联网化,也掀起了互联网金融的浪潮,第三方支付的开发也越来越广泛,一般大型的第三方支付系统包括,前置系统,支付 ...

  10. 第三方支付系统--支付流程

    目前来说,越来越多的行业互联网化,也掀起了互联网金融的浪潮,第三方支付的开发也越来越广泛,一般大型的第三方支付系统包括,前置系统,支付系统,渠道系统,账务系统,清结算系统,运营与维护管理平台.下面我们 ...

最新文章

  1. 1.75亿美元!吴恩达第三锤:宣布成立AI基金AIFund
  2. 话里话外:论持续跟踪和及时反馈
  3. 泛化,过拟合,欠拟合素材(part2)--机器学习入门之道
  4. 计算机专业单元测试卷答案,银保监会考试题库:计算机类模拟试题练习(六)答案...
  5. linux中fork()函数具体解释(原创!!实例解说)
  6. C#提取网页中的超链接
  7. 数据科学 IPython 笔记本 9.1 NumPy
  8. eclipse project修改 output folder
  9. 深度学习笔记其一:基础知识和PYTORCH
  10. 在Ubuntu22.04中安装微信、QQ
  11. MATLAB实验总结定积分,matlab实验报告--定积分的近似计算 -
  12. android反编译打包出错,APK打包错误,能解决的给红包!
  13. npm install报错error 404 Not Found - GET httpsregistry.npm.taobao.org@xt
  14. 敏捷-《如何准备ACP考试》知识图谱
  15. 【C语言】写一个程序,输出一个在100到200之间的数字,这个单位的数字是6,可以除以3。
  16. react中动态渲染背景图片
  17. 财务分析之资产负债表
  18. 抢先看! Lumion 10 正式发布之核心功能预览
  19. IOS中截屏的实现,很简易的方法
  20. 论文阅读 Glow: Generative Flow with Invertible 1×1 Convolutions

热门文章

  1. 记录MySQL中JSON_EXTRACT JSON_UNQUOTE函数的使用方式
  2. Exception in thread “main“ java.lang.ArithmeticException: / by zero
  3. 脑虎科技CEO彭雷专访│脑机未来,生命科学的无尽前沿
  4. 邮箱地址是什么,163vip.com怎么注册、价格、申请入口、功能!
  5. 不是人人都懂的学习要点
  6. Mac 安装 MAT内存分析工具
  7. 如何用十步写一首原创歌曲
  8. 洛谷p3764签到题3
  9. 项目研发过程中甲方要增加合同外的需求,项目经理该如何处理?
  10. 关于上采样方法总结(插值和深度学习)