知方号

知方号

如何设计财务对账系统

如何设计财务对账系统

转载自如何设计财务对账系统 —— 从0到1搭建对账中心实战 - 卡拉云

目录

第一章:对账系统概览

一、什么是对账?

二、为什么要对账

第二章:对账系统的架构

一、如何搭建一套对账系统

第三章:对账文件获取

一、对账文件下载

二、对账文件获取时间

三、对账文件的格式

四、对账文档 API 获取

搭建对账系统无从下手?

第四章:对账文件标准化入库

一、原始对账文件标准化命名

二、对账文件数据统一标准化

三、对账数据入库查看

第五章:账单核对逻辑理解

一、核对模块几种错误状态及处理方法

第六章:对账引擎逻辑设计

起终日期在对账系统中的作用

第七章:对账差错处理

一、差错处理逻辑设计

二、差错处理业务规则系统化

三、核对模块四种状态

第八章:如何快速搭建对账系统

第九章:扩展资料

一、支付对账系统快速搭建工具

二、支付渠道接入文档

三、对账系统搭建参考资料及拓展阅读

第一章:对账系统概览 一、什么是对账?

1.生活中的对账场景 - 煎饼摊老板的故事

对账在我们的生活中非常常见。

举个例子:下班回家路上,你有点饿,看到路边有个煎饼。于是过去买了个煎饼,老板把煎饼递给你,然后指着墙上的二维码贴纸说「8 块」。

你拿出手机,扫码支付 8 元后,和老板说「8 块 ,过去啦」。紧接着老板听到自己手机播报说「微信收款:8元。」老板心里确认了这笔钱到账了。你宣称「已付8元」,老板收款账户确认「已收8元」,这就是一次最简单的对账。

2.互联网公司中常见的对账场景 - 支付对账系统

在互联网公司中,只要带交易,就需要对账。不论是售卖实体物品的淘宝店、虚拟物品的在线课程,还是销售各种会员服务的视频网站,都需要对账,对账是整个交易流程中最后一道安全防线。

我们来举个淘宝店的例子,为了方便理解,这家淘宝店,只卖一种杯子,一个杯子20元,一个月只有 1 单生意,1 单卖1个杯子。

当用户下单购时,打印机自动打印出一份发货订单,老板根据这份纸质订单到库房拣货,然后交给快递公司发货。用户收到杯子,确认收货。20元转入老板的账户。

(1)发货次日,老板盘点库房,发现少了一个杯子。于此同时,发现自己的账户里多了20元,正好是1个杯子的售价。这个对账过程叫账实核对。

(2)老板根据打印的订单对账,手里有一张纸质订单,订单总额20元,再看自己账户金额,多了20元。这个对账过程叫账证对账。

(3)月底对账时,发现账户只多了10元,于是老板翻出全部账本,发现订单账多了20元,快递发货账因发货减少10元(快递费)。一计算,收入20元(增加),快递费10元(减少),即账户账应增加10元。这个对账叫账账对账。

3.对账方式 - 杯子店出现的三种对账方式

(1)账实对账:是指我们记录的账与实物资产的实际数量进行对账。

(2)账证对账:是指将自己的账本与记账凭证进行核对。一般记账凭证由与你业务合作的第三方公司提供,在上面的杯子店的例子里,记账凭证由淘宝提供(订单)。

(3)账账对账:是指在上下游相互关联的账本之间进行对账。在整个交易过程中,一般会涉及上下游多套账,上游比如外部进货账、内部采购账,下游比如快递发货账、第三方服务费等。这些账和总账之间有非常多的关联性,所以一般账账核对,通常用于修正内部账的数据不一致。

「账证实」是对账的基础,后面我们会结合实例来讲解在对账系统搭建的过程中,如何把「账证实」融入进对账系统中。

二、为什么要对账

1.对账是整个支付系统中,最后一道安全防线。是交易流程中重要的纠错机制。

2.避免意外和人为错误发生

(1)意外错误:网络稳定性、内部系统(订单、支付、风控)的健壮性。

(2)人为错误:人为操作失误、上游、内部恶意修改等行为。

3.对账是财务流程中重要的一环,特别是当交易量上万/天,人工手动对账毫无可能时,为了避免订单差错越积越多,变成糊涂账,我们需要日日结清,对账也是保证公司财务健康的必要环节。

第二章:对账系统的架构

无论多么复杂、多么宏大的对账系统,都是由一个个「账与账」之间最简单的对比核查构成。我们只要搞清楚每一组账怎么核对,然后再将此逻辑应用至多组账即可,万变不离其宗。

为了缩减案例复杂度,方便大家理解,本案使用大多数电商都会接入的「支付宝」、「微信」两个支付渠道来举例。

其实不论是接入互联网风格的「支付宝」,还是接国企风格的「银行」,又或者是海外支付渠道「paypal」都是类似的。他们除了接口、文件格式、鉴权等细节上的差异外,在抽象层面,对账逻辑是一致的,一通百通。

一、如何搭建一套对账系统

1.设置对账的目标账

对账的核心是在不同系统中找到记录相同事件的账本,用这些关联账进行对比,发现其中的差错。

比如

(1)我方后台订单系统中的日结算金额与第三方支付系统中的日结算金额进行对比。

(2)我方库存系统中的库存量与我方订单系统中订单中发出的货品数量进行对比

2.获得账单数据(账单获取模块)

(1)出账时间:各渠道日结算账单生成时间不同,有凌晨生成的,也有上午9点生成的。搞清楚出账时间,设定好抓取/下载时间,让系统自动下载(或手动下载后再上传至对账系统)。

(2)账单文件格式:各渠道账单格式并不统一,有 csv、xml、txt、json 等,针对不同渠道,设定好对应的格式解析程序。

3.账单格式标准化(数据标准化模块)

各渠道账单针对同一个数据有不同的字段和命名方式。比如同一个「订单号」,支付宝叫「商户订单号」,我方系统中同样的数据叫「商城订单号」。再比如,同一个订单的支付金额,支付宝中叫「商家实收」,我方系统中叫「结算金额」。他们虽然命名不同,实际上是同一个数据在两套系统的反映。

所以我们首相要将来自支付宝、微信、银行系统、银联、paypal等三方机构的账单数据统一口径,使数据可读,可对比。这个过程我们叫账单数据标准化。

4.账单核对(账单核对模块)

这一步大家一定要结合自己公司的业务逻辑来设计,不同的业务逻辑、财务管理方式会有不同的设计方法。但最基本的宗旨不会变,找出两套系统中对同一个订单的数据,对比这两个数据是否一致,找出差异,标记差异,在下一个模块处理。账单核对的细节,我们在第六章展开讲。

5.对账单差错处理(差异处理模块)

如果差错是可预见和可自动修复的,我们可使用机器自动处理,比如经典的「跨日支付」问题,订单创建在当日23:59分,支付时间在次日00:01。这时,第三方支付渠道对应我方系统中订单的支付信息,会在T+1日出现。这种情况,等待拿到次日账单后,再对一次即可解决。

如果差错不可以自动处理,那么进入人工处理流程。人工处理首先要对比两组数据,找到问题所在,再手动执行解决方案,使两边对平。如果当下无法对平,可选择「挂起」,暂时存档差错,未来合适的时间再解决。关于差错处理,我们会在第七章详解。

第三章:对账文件获取

对账文件获取是整个对账系统的起点,我们首先要将支付宝、微信、银行、银联、第三方支付等支付渠道的对账单下载到本地,解析入库后,才能进行后续对账动作。每个支付渠道都有自己的结算周期和结算文件生成时间,以及文件格式,我们首先要查看支付渠道文档,把这些问题搞清楚。

一、对账文件下载

目前常见的渠道对账单下载方式主要有这几种

调用 API 下载账单:这种方式简单干净,设定好接口鉴权及每日下载时间即可。非常友好,支付宝、微信均为此种方式。SFTP/FTP 下载账单:也是比较简单直接的获取方式,设定好本地目录及命名逻辑后,直接下载即可。手动下载:少数渠道仍然需要手动下载,虽然也可以写前端自动代码去拿,但总归不太直接。 二、对账文件获取时间

每一家支付渠道,会根据自己的情况,约定日对账单生成时间,我们要搞清楚每一家支付渠道生成账单的时间,然后在这个时间之后一段时间再去拉账单,才能高效的让对账系统运转起来。

比如:微信支付,一般在次日上午9点左右出账单,我们10点以后拉取微信支付的对账单会比较合适。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。