备案 控制台
开发者社区 开发与运维 文章 正文

如何设计财务对账系统 —— 从0到1搭建对账中心实战

简介: 卡拉云快速搭建企业内部对账系统

本文首发「卡拉云产品技术博客」:《 如何设计财务对帐系统 - 从零到一搭建实战》


第一章:对账系统概览


一、什么是对账?


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

第二章:对账系统的架构

01-对账系统架构.png

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

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

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

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

02-对账系统-全局.png

1.设置对账的目标账

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

比如

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

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


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

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

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


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

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


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


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

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


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

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


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


第三章:对账文件获取

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


一、对账文件下载

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

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


二、对账文件获取时间

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

03-对账时间.png

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

更多信息还请前往渠道支付对应的官网文档中确认。总会有些特殊情况,比如银联的清分时间就跟大家不同,所以一定要看清文档。各支付渠道文档,见本文最后扩展资料部分。


三、对账文件的格式

不同渠道对账文件的格式也不同,总体来说分为 CSV、json、txt、xml等格式。下面列举两类常见文件格式,供大家参考。


1.微信对账单: txt 文件

04-微信对账单.png

2.支付宝对账单:csv 格式

05-支付宝账单.png

四、对账文档 API 获取

通过 API 获取支付机构对账文件,本文文末附支付渠道文档

06-对账api.png

微信支付 下载交易账单的API 文档


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

每天从各第三方支付渠道获取的对账文件均为原始对账数据,一定要保存好这些原始文件,方便在未来整个支付或对账系统出错时,可以追根溯源。


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

我们需要将各个渠道的原始对账文件根据自身属性来重新统一命名,方便未来查找与使用。

例:「业务类型_支付渠道_清算日期_序列号.文件格式:alipay_20210721_03.csv」

当然,我们要根据自己公司接入的所有支付渠道的情况,更宏观的找到一套合适的命名方法。


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

由于各支付渠道有自己一套字段体系,我们需要将各渠道对账单中字段统一起来,标准化后再入库存储。


我们可以根据自己内部系统使用的字段为原点,来设计转化后的字段。对于多余和暂时用不到的字段可直接丢弃,减少冗余。未来需要时,我们可以从对账文件存储管理器中找到源数据。


通用对账单字段参考

07-字段.png

注:上图字段引用 无敌码农的总结,感谢前辈的无私分享。文字版点这里 下载

如果公司未来业务需要接入更多支付渠道,可以提前考虑对账系统的扩展性问题,设计一套解析流程,财务人员在后台即可设置新增对账账单的字段与公司内部订单系统字段是如何对应关联。

三、对账数据入库查看

08-卡拉云-数据查看.png

各渠道对账数据清洗冗余信息,统一格式,解析入库后。我们可以在后台方便的查看每一天,各渠道对账数据,清晰明了。当在对账的任何环节出现问题,财务人员都可以在这里查询到对账系统,在对账时使用的数据,便于定位问题。


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

本地对账数据与第三方支付对账数据就绪后,接下来我们可以将两边数据进行核对了。对账一般只有四种状态,两边一致(对平)、支付渠道多收了一笔(长款)、支付渠道少收一笔(短款)、本地和支付渠道两边都有,但数字不同(金额不一致)。其他错误都是这几种状态的扩展。


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

09-对账系统-三原色.png

1.收款类交易对账

  • 短款差错:我们的订单中有记录,但支付渠道对账单中没有记录。简单讲就是少收钱了。一般此类错误通常是碰到「跨日交易」,用户在23:59分下单,在00:01分支付。
  • 长款差错:我们的订单中没有记录,但支付渠道收到钱了。简单讲就是多收钱了。一般此类错误多是我们的系统未正确接受支付渠道下发的支付成功返回信息。这种手动调整交易状态即可。
  • 错账:两边都有记录,但金额对不上。


2.退款类对账

退款类对账的错误,其实和收款大同小异。一般有这几种情况。

  • 本地未退款,渠道已退款:一般是渠道返回数据异常,按照渠道状态修改本地退款状态即可。
  • 本地已退款,渠道无记录(或反过来本地无记录,渠道已退):可能是「跨日交易」问题,如不是,只能人工排查处理。
  • 本地与本地均为退款状态,但两边金额不同:需要人工排查处理。

如果会计的思路不好理解,我们也可以按数据组来分。如下表

10-单边对平图.png

我们来看这两张表,左表为我方订单数据,右表为支付渠道数据。两表之间由订单ID关联。

我们可以看到 ID1 两边数据一致,即「对平」 ;ID2和ID4 两表格分别缺失,即「单边」;ID3虽然两边都有数据,单交易金额不一致,即「错帐」。

对账系统会自动标记「单边」和「错帐」的订单,这些订单需要进入「差错处理」来人工处理。


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

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

1.按时间顺序对账

因为订单付退款关联顺序、跨日等因素,对账必须按时间顺序,顺序对账,不能跨日对账。如项目其实日为1号,虽然今天已经是15号,对账时,也必须从1号开始对。因为 t 天单边账,需要在 t+1 天里继续核对。跳跃对账会产生非常多不必要的麻烦。

2.对账引擎设计

11-对账流程图.png

请务必从「开始」沿箭头方向走一遍这张图,此图信息量较大,请先仔细查看流程图,然后再继续阅读。

以「我方对账数据」作为基点,用「订单号」作为关联键,将我方对账数据与渠道方对账数据进行逐条对比。对比结果包含「对平」、「单边(长短款)」、「错账」。

3.对账任务创建与查询

12-对账任务创建与查询.png

整个对账引擎跑在服务器内,前端是看不到的,也不需要看。财务人员在创建任务时,只需要设定对账的起始日期和终止日结,勾选需要对账的订单库即可,剩下的交给对账引擎来完成。对账完毕后,财务人员再继续差错处理。

第七章:对账差错处理

自动对账执行完毕后,总会有一些系统无法自动匹配的错误。这些错误会在对账过程中被标记出来。在上一章我们已经讲过,差异错误包含「长款」、「短款」、「错帐」三个大类,实际对账过程中,出现对账差异的原因,千奇百怪,但不论差异有多奇怪,我们设计的差错处理流程,都应该能覆盖到。

一、差错处理逻辑设计

对于常见的有规律的差错单,我们可以设计一些规则来自动处理,比如跨日交易问题、三方渠道优惠券减免计算规则细微差异、货币转化等问题。

各家都有自己独特的交易流程,财务管理办法,业务特性,所以对账中出现的差错也是千奇百怪,好在这些差错均可以穷尽,我们只需要将碰到的差错归类,设计好解决方案,一个问题解决了,这一类问题就都解决了。

当自动规则无法平账时,需要我们手工处理。当下无法处理的,可以考虑挂起账单,未来合适的时间再处理。

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

当差错无法自动处理,需要人工手动处理时,我们需要把一套规范的流程和标准步骤写在系统里。

举例:当对账差错为「长款」时,支付渠道显示支付成功,我方订单查询为空,我方掉单。这时,财务人员需要发起「补单」,这个「补单」补单审核流程,我们可以把它当作一个处理选项,放在「人工手动处理」。

三、核对模块四种状态

13-对账逻辑-四个状态.png

  • 对平正常:两边对比无异常,标记为正常。
  • 差错未处理:两边对比异常,标记异常等待人工处理。
  • 差错已处理:人工处理后标记已处理。
  • 差错已挂起:某些暂时无法处理或永久忽略的问题标记挂起。

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


14-卡拉云搭建对账系统.gif

我用 卡拉云按照本文思路搭建了一套对账系统,几个月的活,5天干完。卡拉云帮助后端程序员解决了数据库接入、API 调用等问题,前端组件拖放即用,可快速构建企业内部工具。

15-卡拉云-数据源.png

卡拉云接入数据库及 API 的页面,支持常见的数据库和 API ,只需简单填写表单即可完成复杂的数据接入。


第九章:扩展资料

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

  • 卡拉云 - 支持快速接入数据库、API,前端组件即拖即用。可快速搭建对账系统。


二、支付渠道接入文档

  • 微信支付新版接入文档
  • QQ 钱包接入文档
  • 支付宝开放平台文档
  • 翼支付开发文档
  • 中国银行开放平台
  • 招商银行一网通支付
  • 工商银行开放平台
  • 建设银行开放银行
  • 农业银行开放银行


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

  • 谈谈对账(一)
  • 谈谈对账(二)
  • MapReduce实现账单统计
  • 有赞业务对账平台的探索与实践
  • 美团配送资金安全治理之对账体系建设
  • 美的支付-对账系统实现
  • 支付对账系统怎么设计?


本文作者

蒋川,卡拉云联合创始人,B端产品经理,专注研究企业内部效率工具实施搭建

我的个人微信:HiJiangChuan ,欢迎一起交流。

卡拉云面向产品与技术的企业内部工具开发平台,只要会写SQL,即可快速上手。

如果本文对你有帮助,想了解更多,欢迎访问我们的网站「 卡拉云」


蒋川
目录
相关文章
bqospzg5rfs7g
|
开发者
从线下审批到在线审批——流程设计|学习笔记
快速学习从线下审批到在线审批——流程设计
bqospzg5rfs7g
245 0
从线下审批到在线审批——流程设计|学习笔记
像素旅人
|
9月前
|
供应链 NoSQL Redis
库存预占架构升级方案设计 - 交易库存中心
伴随物流行业的迅猛发展,一体化供应链模式的落地,对系统吞吐、系统稳定发出巨大挑战,库存作为供应链的重中之重表现更为明显。近三年数据可以看出:
像素旅人
121 0
六脉神剑.
|
5月前
|
数据库 网络架构 UED
支付设计白皮书:支付系统的路由系统设计
支付设计白皮书:支付系统的路由系统设计
六脉神剑.
97 1
八爪鱼大数据
|
5月前
|
数据可视化 BI
甲骨文ERP收款自动录入:提高财务效率,实现智能化管理
通过八爪鱼rpa自动化的方式,我们可以实现财务工作的智能化管理,提高工作效率和准确性。同时,八爪鱼rpa的使用也非常简单,用户可以通过可视化的界面进行操作,无需编写复杂的代码。因此,八爪鱼rpa不仅适用于大型企业,也适合中小型企业使用。
八爪鱼大数据
90 1
阿甘兄
|
7月前
|
存储 安全 算法
22分布式电商项目 - 商家系统登录与安全控制
22分布式电商项目 - 商家系统登录与安全控制
阿甘兄
34 0
开发V_I357O98O7I8
|
11月前
|
开发框架 安全 JavaScript
现货合约跟单量化交易系统开发策略详情/案例分析/方案设计/源码说明
dapp是指去中心化应用程序,运行于区块链上。它们基于区块链技术,具有自主管理的智能合约
开发V_I357O98O7I8
118 0
源码星辰
|
12月前
云his门诊业务模块常见问题分析和门诊业务使用流程
云HIS:门诊业务使用流程 患者可以通过网上预约,现场挂号,获取门诊就诊号,排队就诊。 对于基层医院,不收取挂号费,地区慢性病,复诊较多时,可以直接通过历史患者,”复诊“功能,直接挂号。 门诊医生开具处方单,检验检查申请单,发送成功后,收费室会显示待收费的患者以及处方明细。收费后,药房会显示患者以及处方明细,药房人员依据处方发药。患者领取药物,如果存在注射药物,那么治疗室会有患者的注射用药明细。
源码星辰
132 0
-编程工程师-
|
存储 消息中间件 JavaScript
支付设计白皮书:支付系统的对账系统设计
支付设计白皮书:支付系统的对账系统设计
-编程工程师-
337 0
-开发达人-
|
新零售 存储 供应链
严选库存中心设计实践
严选库存中心设计实践
-开发达人-
263 0
一个风轻云淡
|
微服务
微服务项目:尚融宝(41)(核心业务流程:借款额度审批)
列表的结果需要关联查询,数据字典的数据也需要展示对应的文本内容而不是值,除了定义VO的方式,我们也可以使用扩展实体类的方式
一个风轻云淡
102 0
微服务项目:尚融宝(41)(核心业务流程:借款额度审批)

热门文章

最新文章

  • 1
    哪种词向量模型更胜一筹?Word2Vec,WordRank or FastText?
  • 2
    《CMOS集成电路后端设计与实战》——3.3 标准单元设计流程
  • 3
    linux 跟阿铭学linux tomcat
  • 4
    [Erlang 0044] Erlang Shell History
  • 5
    ArcGIS Engine开发之旅05---空间数据库
  • 6
    [译]IActivityToolboxService
  • 7
    威刚发布工业级SSD IM2P3388 可在恶劣环境下工作
  • 8
    想让微信公众号文章上“朋友圈热文”?看看这个
  • 9
    yum(针对rhel6.2)
  • 10
    OpenLDAP+FreeRADIUS+MySQL+RP-PPPOE 构建PPPOE服务器
  • 1
    【大模型】LLM与传统聊天机器人的区别是什么?
    19
  • 2
    【AI 生成式】半监督学习和自监督学习的概念
    16
  • 3
    【AI 生成式】生成式人工智能在内容创作和版权方面有何影响?
    18
  • 4
    【AI 生成式】生成式人工智能如何在虚拟现实和游戏中使用?
    17
  • 5
    【AI 生成式】描述生成式 AI 在医疗保健和药物发现中的应用
    20
  • 6
    【AI 生成式】生成式人工智能未来有哪些潜在的进步?
    13
  • 7
    揭秘产品经理成功的秘密:最重要的是什么?
    13
  • 8
    【AI 生成式】生成式 AI 中变分自动编码器 (VAE) 的概念
    15
  • 9
    【AI 生成式】如何利用生成式人工智能进行机器学习的数据增强?
    16
  • 10
    【AI 生成式】生成式 AI 在自然语言生成中的作用
    11
  • 相关课程

    更多
  • 大数据分析之企业级网站流量运营分析系统开发实战(第二阶段)
  • 大数据分析之企业级网站流量运营分析系统开发实战(第四阶段)
  • 企业运维监控平台架构设计与实现
  • 运维监控系统
  • 业务全链路追踪最佳实践
  • 大数据分析之企业级网站流量运营分析系统开发实战(第三阶段)
  • 相关电子书

    更多
  • 数据运营系统实现方案浅析
  • 基于资产配置业务场景下的全链路监控平台
  • 基于资产配置业务场景下全链路监控平台
  • 相关实验场景

    更多
  • 配置流程编排实现根据天气情况播放歌曲
  • 基于DTS构建一站式实时数据服务
  • 5分钟轻松打造应对流量洪峰的稳定商城交易系统
  • 实现淘宝母婴订单实时查询和实时大屏
  • 收银台的场景化界面实践
  • 快速开发光伏电站数字孪生运维系统
  • 下一篇
    将Stable Diffusion模型文件转存到FC环境的NAS

    代做工资流水公司无锡打公司银行流水宁波查背调流水银川打薪资流水单深圳代办贷款流水常德制作银行流水单长春转账银行流水查询湘潭银行流水修改代办镇江薪资银行流水代做大连办薪资流水单曲靖办背调工资流水咸阳背调工资流水代做揭阳房贷工资流水 费用海口办理银行流水修改惠州背调银行流水代开珠海日常消费流水价格北京车贷流水开具济宁代开背调流水泰州贷款流水公司烟台银行流水PS打印银川代做车贷工资流水宿迁查对公流水舟山办理流水账单天津流水账单株洲对公流水费用金华企业流水打印报价漳州流水单多少钱银川车贷流水费用泉州企业对公流水查询宜昌工资流水账单样本北京企业银行流水代开香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

    代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化