第一章:对账零碎概览
一、什么是对账?
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 点当前拉取微信领取的对账单会比拟适合。
更多信息还请返回渠道领取对应的官网文档中确认。总会有些非凡状况,比方银联的清分工夫就跟大家不同,所以肯定要看清文档。各领取渠道文档,见本文最初扩大材料局部。
三、对账文件的格局
不同渠道对账文件的格局也不同,总体来说分为 CSV、json、txt、xml 等格局。上面列举两类常见文件格式,供大家参考。
1. 微信对账单:txt 文件
2. 支付宝对账单:csv 格局
四、对账文档 API 获取
通过 API 获取领取机构对账文件,本文文末附领取渠道文档
微信领取下载交易账单的 API 文档
第四章:对账文件标准化入库
每天从各第三方领取渠道获取的对账文件均为原始对账数据,肯定要保留好这些原始文件,不便在将来整个领取或对账零碎出错时,能够追根溯源。
一、原始对账文件标准化命名
咱们须要将各个渠道的原始对账文件依据本身属性来从新对立命名,不便将来查找与应用。
例:「业务类型_领取渠道_清理日期_序列号. 文件格式:alipay_20210721_03.csv」
当然,咱们要依据本人公司接入的所有领取渠道的状况,更宏观的找到一套适合的命名办法。
二、对账文件数据对立标准化
因为各领取渠道有本人一套字段体系,咱们须要将各渠道对账单中字段对立起来,标准化后再入库存储。
咱们能够依据本人外部零碎应用的字段为原点,来设计转化后的字段。对于多余和临时用不到的字段可间接抛弃,缩小冗余。将来须要时,咱们能够从对账文件存储管理器中找到源数据。
通用对账单字段参考
注:上图字段援用无敌码农的总结,感激前辈的自私分享。文字版点这里下载
如果公司将来业务须要接入更多领取渠道,能够提前思考对账零碎的扩展性问题,设计一套解析流程,财务人员在后盾即可设置新增对账账单的字段与公司外部订单零碎字段是如何对应关联。
三、对账数据入库查看
各渠道对账数据荡涤冗余信息,对立格局,解析入库后。咱们能够在后盾不便的查看每一天,各渠道对账数据,清晰明了。当在对账的任何环节呈现问题,财务人员都能够在这里查问到对账零碎,在对账时应用的数据,便于定位问题。
第五章:账单核查逻辑了解
本地对账数据与第三方领取对账数据就绪后,接下来咱们能够将两边数据进行核查了。对账个别只有四种状态,两边统一(对平)、领取渠道多收了一笔(长款)、领取渠道少收一笔(短款)、本地和领取渠道两边都有,但数字不同(金额不统一)。其余谬误都是这几种状态的扩大。
一、核查模块几种谬误状态及解决办法
1. 收款类交易对账
- 短款过错:咱们的订单中有记录,但领取渠道对账单中没有记录。简略讲就是少收钱了。个别此类谬误通常是碰到「跨日交易」,用户在 23:59 分下单,在 00:01 分领取。
- 长款过错:咱们的订单中没有记录,但领取渠道收到钱了。简略讲就是多收钱了。个别此类谬误多是咱们的零碎未正确承受领取渠道下发的领取胜利返回信息。这种手动调整交易状态即可。
- 错账:两边都有记录,但金额对不上。
2. 退款类对账
退款类对账的谬误,其实和收款大同小异。个别有这几种状况。
- 本地未退款,渠道已退款:个别是渠道返回数据异样,依照渠道状态批改本地退款状态即可。
- 本地已退款,渠道无记录(或反过来本地无记录,渠道已退):可能是「跨日交易」问题,如不是,只能人工排查解决。
- 本地与本地均为退款状态,但两边金额不同:须要人工排查解决。
如果会计的思路不好了解,咱们也能够按数据组来分。如下表
咱们来看这两张表,左表为我方订单数据,右表为领取渠道数据。两表之间由订单 ID 关联。
咱们能够看到 ID1 两边数据统一,即「对平」;ID2 和 ID4 两表格别离缺失,即「单边」;ID3 尽管两边都有数据,单交易金额不统一,即「错帐」。
对账零碎会主动标记「单边」和「错帐」的订单,这些订单须要进入「过错解决」来人工解决。
第六章:对账引擎逻辑设计
一、起终日期在对账零碎中的作用
1. 按工夫程序对账
因为订单付退款关联程序、跨日等因素,对账必须按工夫程序,程序对账,不能跨日对账。如我的项目其实日为 1 号,尽管明天曾经是 15 号,对账时,也必须从 1 号开始对。因为 t 天单边账,须要在 t+1 天里持续核查。跳跃对账会产生十分多不必要的麻烦。
2. 对账引擎设计
请务必从「开始」沿箭头方向走一遍这张图,此图信息量较大,请先认真查看流程图,而后再持续浏览。
以「我方对账数据」作为基点,用「订单号」作为关联键,将我方对账数据与渠道方对账数据进行逐条比照。比照后果蕴含「对平」、「单边(长短款)」、「错账」。
3. 对账工作创立与查问
整个对账引擎跑在服务器内,前端是看不到的,也不须要看。财务人员在创立工作时,只须要设定对账的起始日期和终止日结,勾选须要对账的订单库即可,剩下的交给对账引擎来实现。对账结束后,财务人员再持续过错解决。
第七章:对账过错解决
主动对账执行结束后,总会有一些零碎无奈主动匹配的谬误。这些谬误会在对账过程中被标记进去。在上一章咱们曾经讲过,差别谬误蕴含「长款」、「短款」、「错帐」三个大类,理论对账过程中,呈现对账差别的起因,千奇百怪,但不管差别有多奇怪,咱们设计的过错解决流程,都应该能笼罩到。
一、过错解决逻辑设计
对于常见的有法则的过错单,咱们能够设计一些规定来主动解决,比方跨日交易问题、三方渠道优惠券减免计算规定轻微差别、货币转化等问题。
各家都有本人独特的交易流程,财务管理方法,业务个性,所以对账中呈现的过错也是千奇百怪,好在这些过错均能够穷尽,咱们只须要将碰到的过错归类,设计好解决方案,一个问题解决了,这一类问题就都解决了。
当主动规定无奈平账时,须要咱们手工解决。当下无奈解决的,能够思考挂起账单,将来适合的工夫再解决。
二、过错解决业务规定系统化
当过错无奈主动解决,须要人工手动解决时,咱们须要把一套标准的流程和规范步骤写在零碎里。
举例:当对账过错为「长款」时,领取渠道显示领取胜利,我方订单查问为空,我方掉单。这时,财务人员须要发动「补单」,这个「补单」补单审核流程,咱们能够把它当作一个解决选项,放在「人工手动解决」。
三、核查模块四种状态
- 对平失常:两边比照无异样,标记为失常。
- 过错未解决:两边比照异样,标记异样期待人工解决。
- 过错已解决:人工解决后标记已解决。
- 过错已挂起:某些临时无奈解决或永恒疏忽的问题标记挂起。
第八章:如何疾速搭建对账零碎
我用卡拉云依照本文思路搭建了一套对账零碎,几个月的活,5 天干完。卡拉云帮忙后端程序员解决了数据库接入、API 调用等问题,前端组件拖放即用,可疾速构建企业外部工具。
卡拉云接入数据库及 API 的页面,反对常见的数据库和 API,只需简略填写表单即可实现简单的数据接入。
第九章:扩大材料
一、领取对账零碎疾速搭建工具
- 卡拉云 – 反对疾速接入数据库、API,前端组件即拖即用。可疾速搭建对账零碎。
二、领取渠道接入文档
- 微信领取新版接入文档
- QQ 钱包接入文档
- 支付宝开放平台文档
- 翼领取开发文档
- 中国银行开放平台
- 招商银行一网通领取
- 工商银行开放平台
- 建设银行凋谢银行
- 农业银行凋谢银行
三、对账零碎搭建参考资料及拓展浏览
- 谈谈对账(一)
- 谈谈对账(二)
- MapReduce 实现账单统计
- 有赞业务对账平台的摸索与实际
- 美团配送资金平安治理之对账体系建设
- 美的领取 - 对账零碎实现
- 领取对账零碎怎么设计?
本文作者
蒋川,卡拉云 CMO,B 端产品经理,专一钻研企业外部效率工具施行搭建
我的集体微信:HiJiangChuan,欢送加我微信一起交换。