Qeasy Cloud
Get Started

对账系统最该被内审盯住的三个功能

· 吕修远· AI Financial Reconciliation· 16 views· 12 min read
内控审计留痕职责分离电商财务合规权限治理

摘要:内审进财务系统,第一个问题不是「报表好不好看」,而是「这个数我能自己重跑一遍吗」。这篇讲三个最该被盯住的功能:口径变更留痕、权限与职责分离、单据推送可回溯。每个功能配三个当场能提的审计问题、留痕该长什么样,以及业务自助放开后风险落在哪里。 关键词:内控、内审、审计留痕、职责分离、电商财务合规、对账系统

一、内审要了三个文件,第三个没人给得出来

年底内审进场,清单递过来三样东西:差异清单、凭证,还有一份「这个数是怎么来的」。

前两样当场就给:差异清单是系统导出的,凭证是账务系统生成的。

第三样交不出来。

那份东西的要求很具体:这期对账用的账单重跑一遍,口径不变,结果应该和当时一模一样;中间谁动过什么要有记录;推给 ERP 的单据在那边能查到。

财务能给的回答只有一句:这个数是系统算的。

这句话站在审计现场,是最没用的一句话。

二、内审要的是「可重放」,不是「可阅读」

先说一个和直觉相反的地方:内审最不关心的,恰恰是报表。

报表谁都能做。做错了改一版就过去了,下一版谁还记得上一版长什么样。报表是给人看的,合不合理是复核人自己判断。

内审在意的是另一件事:你能不能证明这个数是这样来的。

「可阅读」和「可重放」的差别就在这。可阅读,是页面上有一行数字。可重放,是同样的账单、同样的口径、同一个时间点重跑一遍,跑出来的数跟当时完全一样,中间动过什么手都留着。

第二个反直觉更值得说:系统自动做的不是免责证据,反而更需要留痕。

人工做错了,有人认领,有流程追责。系统做错了,只能靠日志说明它按哪条规则做的。自动化程度越高,留痕要求越高,不是越低。道理很实在:人跑一万遍可以问第二万遍「当时为什么这么判」;系统跑一万遍,你只能看那一条日志。

看一组量:一个周期里生成了 232 张转换单据,合计 9,345,659.28 元。其中预览中的 64 张、已确认 10 张、已推送 154 张、推送失败 4 张、含异常体行 7 张。

这 4 张失败单和 7 张异常体行,是内审会点名的地方。剩下那些「顺利」的单据不必多花时间,只要系统能证明落了 ERP。

所以内审盯的从来不是全部,是那几个例外和例外背后的规则。

三、功能一:口径变更留痕——同一个数,为什么两次跑不一样

口径是什么?差异原因怎么判、平台费用怎么分摊、哪些行进收入计划、哪些行进费用计划。规则一动,出来的数就跟着动。

内审的第一个问题通常很直接:上个月关账时这个数是这样,这个月怎么不一样了?

答不上来的原因,多数不是数算错了,是口径改了但没人说。改口径本身可能合理——平台政策变了、业务重分类了都行。问题在于改完之后数变了,却没有一份记录能回答:从哪天生效、哪一版规则、谁批的。

留痕该长什么样?五个要素:谁、何时、改了什么、依据是什么、能不能重放。缺一样就等于没做,缺哪一样内审就问哪一样。

差异原因和处置建议分开存。「处置建议」是系统给的文案,「差异原因」是这一行真实被判定的理由。两者混着写,等于把判断和提示搅成一锅,说不清这行到底规则命中,还是随口一句建议被当成了结论。

手工确认要带备注,备注是可审计备注。「已沟通」三个字不算。

手工忽略是永久出池。这一行被忽略后不再回到对账池,下一期差异清单里也不会出现。内审要是看到「上期没有这一行」,得知道它是被忽略掉的,不是自己消失了。

金额字段禁止手改,能改的是对账结果和差异原因。这条最硬,它直接决定一笔数能不能被改掉而不留痕。

如果走这条路,落点很清楚:要一个能把口径版本、操作人、依据和重跑结果钉在一起的地方,而不是一张更好看的差异表。轻易云的口径变更留痕,就是照这五要素建的。

还有一条容易被忽略:重跑会清空人工痕迹。这条是坑,坑在提醒上。系统不阻止你重跑,但重跑之后那批手工确认和备注会没。正确做法是重跑前先把人工痕迹导出留底。这不是系统的功能,是使用者的纪律,该写进作业标准。

另外,重新解析有硬拦截,已确认的行不被覆盖;单据日期晚于当天则拒推。状态机也留了日志:收入计划 7 个状态、费用计划 5 个状态、转换单据 5 个状态,每次迁移都有记录。

留痕要素合格的样子缺了会怎样
谁操作账号能追到人数对不上没人认领
何时精确到操作时间,不只是账期不知新口径何时生效
改了什么改动前后的两个值都留着只看得到结果
依据是什么手工确认带可审计备注结论无法复核
能不能重放同口径同输入重跑得同一个数系统行为无法验证

内审会提的三个问题:

一、上期关账数与本期不一致,中间有没有人改过判定规则?改了谁批的?

二、差异原因和处置建议,是不是分开存的?

三、那批手工确认的行,备注里到底写了什么?

收入对账计划详情页:京东POP,订单统计共 600 单、成功 600、失败 0,金额统计收入 98,837.12、差异 0.00;明细列表含业务订单号、本期发生金额、订单费用、差异金额、对账结果、差异原因列

这一页值得内审盯的不是那个 0.00 的差异,是差异原因那一列。每个业务订单号旁边写着这一行为什么没对上,点开能看到当初是规则判的还是有人改的。从这一页看不出问题,往回追才追得动。

四、功能二:权限与职责分离——建计划的人不能是审口径的人

职责分离这件事,麻烦的地方不在制度,在月结那几天。系统里一屏的操作往往是同一个人从头做到尾:建计划、改口径、点确认、导凭证。这不违规,但从审计视角看等于没有独立复核。

要切的是四刀:建计划的人、审口径的人、做确认的人、能改金额的人。这四种动作落在同一个人身上,独立性就不存在了。

角色也按这个思路划,一共四类:CFO/财务总监、财务经理、电商财务核算专员、业务人员。AI 工具另按风险分级——读操作自动放行,写操作管理员逐行判断,触发类动作要业务人员确认一句。

角色能碰的范围内审能单独取证的痕迹
CFO/财务总监跨期跨店查询、报表导出导出的范围与时间点
财务经理建计划、触发对账、跑分摊、凭证自动化日志里的账号与时间
电商财务核算专员导入账单、复核差异复核结论与备注
业务人员查进度、发起对账触发记录与范围边界

值得单独说的是:约束不只是前端按钮灰不灰,流程闸门才是真的。反写目标匹配就是例子——系统往体行写回费用,先按业务订单号找到目标,命中后还要过一道「目标是否已确认」的闸:未确认的收入计划不接受反写,跳过并保留待重跑。这道闸把「先确认再写回」变成流程约束,不靠人自觉。

再往后还有两道:allocation 带 skuCode 的写 SKU 级,不带的写订单级,避免同一笔钱记两次;重跑前先撤销旧反写,避免重复累加。

这几道机制对内审的意义在于,它们可以被抽出来当证据。审计不用相信财务的陈述,可以自己跑一遍,看那些闸门是不是真的拦住了。这就是「可重放」的形态。

内审会提的三个问题:

一、这期结果里,建计划、审口径、点确认的是不是三个人?

二、业务人员能不能自己触发一次对账?触发记录谁在看?

三、AI 助手改写金额这件事,有没有单独一道人工确认?

反写目标匹配流程图:沙箱返回 allocations 含 businessOrderNo、skuCode、amount,按业务订单号匹配到目标体行,再判断状态是否已确认,未确认则跳过;allocation 含 skuCode 写 SKU 级金额,不含写订单级,尾差容差 0.01,重跑前先撤销旧反写

这张流程图里最该被拿去做抽样的是两个「跳过」。跳过不是失败,是设计上的拒绝:目标没确认就不写回,不在范围内的也不碰。内审要的正是这种能被证伪的约束——规则写在明面上,绕不过去,不靠人记得。

五、功能三:单据推送可回溯——接口返回成功,不等于单据落地

这类场景在轻易云的集成方案里,做法是把推送和回读绑在一起:只有回读比对通过,单子才算落地,接口返回只当受理凭证,不当结果凭证。

集成方案一共 9 个对接动作:2 个拉取、6 个推送,再加健康检查。9 个动作里,6 个推送最容易出问题,也最难被发现,因为推送失败往往不报失败。

先讲一个必须记住的区别:幂等有两种。推送型动作天然幂等,同一个业务单号重复推,目标系统会识别,不会多出一张单。保存型没有这层拦截,重推一次就多出一张单,只能靠防重字段兜住。ERP 侧用哪种保存接口,是内控要点。

再讲一个判断:接口返回成功,不等于单据落地。

接口返回成功,只说明请求被受理了。被受理和单据被建出来是两件事——可能被业务规则挡回去,可能被字段校验打回来,也可能金额算错了但格式合法。判断标准只有一个:推送之后回读校验,把单据查回来核对,容差 0.005。

只信接口返回,等于把 154 张已推送的单据里可能存在的错账全放过去。232 张里 4 张推送失败是明面风险,真正的风险在那 154 张「成功」里面。

留痕至少要有四样:谁推的、什么时候推的、目标系统返回了什么单据号、回读校验的差额是多少。齐了这四样,任何一张单子都能被单独抽出来问一遍。

还有一道防线:单据日期晚于当天,拒推。跨月的单子不允许提前生成,挡掉的是「提前把下个月的账做掉」这种路径。

内审会提的三个问题:

一、推给 ERP 的单据,在那边有没有单据号能对上?

二、有没有重复出单?是靠什么发现的?

三、失败的那几张重推之后是什么状态,成功了几张?

角色权限架构图:四类角色自上而下为 CFO/财务总监、财务经理、电商财务核算专员、业务人员,分别对应查看所有平台对账与报表导出、创建对账计划与触发对账及凭证自动化、导入账单与复核差异、查询进度与发起对账;AI 工具风险分级为 read 自动放行、write 管理员逐行判断、trigger 业务人员确认

这张图里最该被拿去做抽样的是中间两层。触发对账、跑分摊、凭证自动化这三件事如果全在一个人手里,那个人既是执行者也是复核者。内审要看的不是他有没有动手,而是系统能不能把「谁动的」和「谁批的」分开记。

六、业务自助放开之后,风险落在哪里

开篇那份交不出来的文件,说到底问的是三件事:这些动作是谁做的、做过有没有记录、能不能原样再做一遍。业务自助放开之后,这三件事更依赖系统留痕,而不是靠财务事后把话说清楚。轻易云在这一层留的是能重放的证据链,不是一张给人看的表。

把一部分能力交给业务方,方向是清楚的:业务人员自己能查对账进度、能按业务订单号发起对账、能问 AI 助手、能看自己范围内的数。

放开之后,风险落在三处。

一是权限边界。业务人员能看的数据必须被圈在自己的业务范围里。「看自身业务范围」要落到具体的圈定规则上,不能靠人记得别点。

二是触发权。发起对账是写动作,会改变系统里的状态。触发类动作必须单独留痕,业务人员确认的那一下也要记进日志,否则事后没人说得清谁在什么时候动了系统。

三是责任归属。业务自助的部分出问题,责任在业务方还是财务方?边界不清的常见结果是财务背锅,却拿不出日志自证。

控法是补闭环。平台账单、业务订单、ERP 核算三者对上,差额必须为 0.00。这是配平不变式,也是内审能自己查的前提:有一处对不上,就说明某个环节的输入或口径被动过。

供应链订单侧还有两条规矩:应收单按行级拉取成标准化供应链订单,只取已审核状态,72 小时回看窗口;多码并行——业务订单号、ERP 业务订单 ID、单据编码一起用,缺一个就串单。

金额比较用十进制定点,不用浮点累加。对账容差 0,尾差容差 0.01。这两句看着像实现细节,其实是审计口径问题:浮点累加会让同一个数两次算出不同结果,「可重放」就是假的。

集成中心价值图:中间三引擎为拉取、推送、集成转换,外圈覆盖金蝶全系、用友全系、SAP 全系,以及 Oracle、Microsoft Dynamics 365 和跨境电商 ERP,下方标注三大价值:一套对账结果多 ERP 推送、凭证双源、集成转换通用骨架

留痕的覆盖面跟着推送覆盖面走。接的 ERP 越多,落地单据的形态越杂,回读校验就越不能省。每套目标系统都有自己的单据号规则,只有把单号和回读差额都记下来,内审才追得到那一张。

七、收尾:三条今天就能做的自检动作

一、翻出上期已确认的收入计划里被手工改过结果的行,把备注导成一张表,补三列:改的理由、依据、谁批的。空着的就是留痕缺口。

二、把建计划、审口径、点确认、改金额这四个动作从权限表里拉出来,圈出同一个人同时握有两项的单子。这些单子不必判错,只需说清为什么可以由一个人做完。

三、抽查已推送的单据,拿业务单号回 ERP 那边查单据号。对不上的按推送失败记,不按接口返回成功记。

开篇那份交不出来的文件,靠这三条补不齐全部,但能先把缺口指出来。缺口指出来了,剩下的才是补的活。

Original content. Please credit the source when reposting: https://www.qeasy.cloud/insights/reconciliation/19-9-audit-three-capabilities

Comments