档口供应链对账笔记

0 评论 137 浏览 0 收藏 20 分钟

在农产品批发市场的凌晨档口,对账是供应链中最混乱也最被忽视的环节。本文从常驻市场的产品经理视角,拆解一套农批对账系统从0到1的设计全过程:6大差异类型、三层架构、自动对账双模式,以及1.2万差异如何自动排查的实战案例。不讲概念,只讲实战。

我是一名B2B平台的产品经理,常驻过农产品一级批发市场。在凌晨3点的档口里,我见过最真实的交易场景:7个采购方同时下单、过磅排长队、临时欠款”先欠着一起付”——这种混乱,是任何PRD模板都覆盖不了的。

也是在档口里,我发现了一个被99%的产品经理忽略的问题:对账

对账不是”应收减实收”这么简单。在一个日均3000笔交易、4种支付方式、6种差异类型的场景里,对账是整个供应链最容易出问题、却最没人愿意碰的环节。

这篇文章,我从一个”常驻档口”的产品经理视角,拆解一套农批对账系统是怎么从0到1设计出来的——包括问题拆解、系统架构、关键设计决策,以及踩过的坑。不讲概念,只讲实战。

一、痛点:为什么对账是供应链的”隐形黑洞”

先说场景。农产品一级批发市场的交易模式是这样的:

  • 凌晨2点开市,8点收市,高峰期3:00-6:00产生全天70%的交易
  • 4种支付方式混用:微信、支付宝、银行卡、现金
  • 2种结算模式并存:日清日结(现款现货)+ 月结(赊账,月底统一对账)
  • 临时欠款常态化:采购方”先欠着,一起付”是常态

在这种场景下,对账的痛点有三个层次:

第一层:对账慢

财务每天下午开始对账,3000多笔交易逐笔核对,日均耗时4-6小时。高峰期(节假日前后)甚至要1-2天才能出对账单。老板不知道今天到底赚了多少、谁还欠钱、哪些账对不上。

第二层:差异多

对账差异率长期在12%-15%之间——也就是说,每100笔交易有12-15笔对不上。差异的原因五花八门:过磅重量和开单量不一致、扣杂标准不统一、同一笔重复记账、价格调整后没同步……

第三层:风控缺

月结模式下,信用额度是各档口独立管理的。一个采购方在A档口赊账到了上限,转头去B档口继续赊——跨档口信用没有全局视图,坏账从”事后发现”变成”事后都发现不了”。

这三个痛点指向同一个问题:没有系统化的对账能力,供应链的财务就是一本糊涂账。

二、拆解:把”对不上”拆成6种类型

做对账系统的第一步,不是写代码,是把”对不上”这件事分类。我在档口蹲了2个月,把所有见过的差异场景归成了6大类型:

产品经理的关键洞察:这6种差异类型不是拍脑袋分的,是从档口实际交易里长出来的。类型不同,处理策略不同——临时欠款要催款,过磅差异要校准扣杂率,跨档口信用要全局锁定。不能一个”对账差异”标签糊到底。

三、架构:采集层、匹配层、处理层

把差异类型定义清楚后,系统架构就自然了——三层分工:

采集层:把4个数据源归拢到一张表

  • 开单系统:拉应收数据(该收多少)
  • 过磅系统:拉实际称重(扣杂基准)
  • 支付网关:拉4种渠道的实收流水(微信/支付宝API + 银行银企直连 + 现金收银台录入)
  • 信用系统:拉赊账记录和额度使用情况

关键设计:统一字段。不管哪个渠道进来的数据,统一成5个字段——交易编号、金额、时间、支付方式、状态。这样匹配层不用关心数据来源,只管按交易编号配对。

匹配层:5步撮合引擎

这是对账系统的”心脏”。核心逻辑是分层匹配,精确先吃掉大部分

为什么分层匹配是核心设计?如果全量人工逐笔对,3000笔要看3000次。但精确匹配自动对平85%,模糊匹配再捞回10-15%,真正需要人看的只剩5%以内。人从”逐笔对”解放到”只看异常”,这就是效率提升8-12倍的本质。

处理层:差异自动处置

匹配完不是结束,差异要有人处理。处理层的作用是按差异类型自动触发动作

  • 临时欠款 → 自动发催款通知(短信/企微)
  • 过磅差异 → 自动计算扣杂率偏差,推给档口确认
  • 跨档口信用超标 → 全局锁定该客户赊账权限
  • 重复记账 → 自动去重,标记一条为无效
  • 价格未同步 → 推给业务方确认价格变更

四、自动对账怎么跑:日清日结 + 月结双模式

架构讲完了,很多人会问:系统每天到底怎么自动跑的? 这才是对账系统的核心。我们设计了两种自动对账模式,分别对应两种业务场景。

模式一:日清日结自动对账(每天跑)

日清日结是农批市场最主流的结算方式——当天的交易当天对完,不留隔夜账。系统的自动对账流程是这样的:

关键设计:对账不是”一次性跑完”,是”分层漏斗”。3000笔交易进来,精确匹配自动对平2500笔(不用人管),模糊匹配再捞回400笔(不用人管),真正需要人看的只剩100笔以内。财务从”逐笔对3000笔”变成”只看100笔异常”,4-6小时压到30分钟。

模式二:月结自动对账(每月跑)

月结客户(如XX餐饮这种长期合作的采购方)是另一套流程,核心是信用额度管理 + 月度汇总对账

对账状态机:8个状态的流转

每笔交易在对账系统里都有自己的生命周期,从”待对账”到”已关闭”,一共8个状态:

为什么要设计”驳回”状态?因为差异分类不是100%准确的。系统可能把”价格未同步”误判成”过磅差异”——财务看到后觉得不对,可以驳回,让系统重新分类。这个回路让对账系统越用越准:驳回的案例会反馈到规则库,优化后续分类逻辑。

实战案例:1.2万差异怎么自动排查

说个真实场景。某天系统跑完日对账,显示总差异12,000元——应收和实收差了1.2万。如果没有系统,财务要逐笔翻3000条记录找。系统的处理流程:

第一步:按支付渠道拆分系统自动把1.2万拆成4个渠道——微信3,200 + 支付宝2,800 + 现金4,500 + 银行卡1,500。现金差异最大,优先排查。

第二步:撮合引擎自动对平。4个渠道各自跑精确+模糊匹配,微信/支付宝/银行卡大部分自动对平(T+1到账延迟导致的”假差异”),剩余真实差异600元

第三步:6大差异分类。600元自动归到6个类型:临时欠款210 + 过磅差异150 + 扣杂不一90 + 跨档口60 + 重复记账60 + 价格30。

第四步:自动生成工单。每个差异条目生成一个处理工单,推给对应负责人。临时欠款→自动发催款通知,过磅差异→推给档口确认扣杂率,跨档口信用→自动锁定。

结果:1.2万的差异,系统自动对平了11,400元(95%),真正需要人看的只有600元。而且这600元已经按类型分好类、生成好工单了,财务只需要逐条确认就行。从”找1.2万”变成”看600元”,这就是自动对账的价值。

底层逻辑:付款和退款怎么分开核对

讲完流程和案例,有人会问一个核心问题:微信对账单里付款和退款是混在一起的,系统怎么区分?又是根据什么去核对的?

这是对账系统设计里最容易被忽略、却最关键的细节。拆开讲。

问题1:根据什么核对?

很多人以为对账是”猜”的——其实不是。微信支付调API下单时,你的系统会把订单号传给微信(字段叫 out_trade_no,即商户订单号)。微信对账单里自带这个号,所以匹配键是现成的:

但金额为什么也要校验?因为可能订单号一样但金额被改过——开单时¥1,800,议价后改成¥1,750但系统没同步,微信那边付的还是¥1,800。所以编号一致但金额不一致 → 标记为”价格未同步”差异,不能只看编号就判对平。

问题2:付款和退款怎么分开?

微信对账单CSV里,付款和退款是同一个文件里的不同行,靠”交易状态”字段区分:

系统读进来后,一个if判断就分开了

if 交易状态 == “SUCCESS” → 进付款表

if 交易状态 == “REFUND” → 进退款表

分开之后,两批数据各自走自己的匹配流程,互不干扰。

问题3:两轮匹配怎么跑?

第一轮:付款匹配。拿付款表和系统应收表配对——精确匹配(订单号+金额一致)对平80%+,模糊匹配(金额差<1元+时间差<5分钟)再捞回10-15%,剩余的是付款差异。

第二轮:退款匹配。拿退款表去系统里找对应的退款审批记录

退款对账最大的坑:微信退了但系统不知道——意味着有人在微信后台手动退款了但没走系统审批流程。这种必须标红告警,因为钱已经退了但系统里还显示”已收款”,如果不及时发现就是真金白银的损失。

最后算净额

两轮匹配完后,最终看的是净额,不是流水:

T001:应收¥1,800 – 付款¥1,800 – 退款¥1,800 = 净收¥0 → 对平

T002:应收¥900 – 付款¥900 – 退款¥0 = 净收¥900 → 对平

T003:应收¥600 – 付款¥600 – 退款¥200 = 净收¥400 → 对平

产品启示:自动对账的核心不是”AI多聪明”,是“数据分流 + 分层匹配”。先用交易状态把付款和退款分开(一个if判断),再各自走精确+模糊匹配,最后算净额。退款必须单独走一轮,不能和付款混在一起算——否则退款会把付款金额冲掉,差异全乱。这个设计看着简单,但很多对账系统死在这一步。

五、关键设计决策(踩坑后想明白的)

决策1:现金渠道的防漏录机制

4种支付方式里,现金是最大的数据黑洞。微信和支付宝有API自动拉数据,银行有银企直连,但现金靠人工录入——漏录率高达15%。

我们设计了3层防线:

产品启示:线下场景最大的问题不是技术实现,是数据源头不可控。解决思路不是”做更好的系统”,是”在录入端就堵住漏洞”——让数据产生时就关联,而不是事后补救。

决策2:跨档口信用的全局视图

月结风控的核心痛点:信用额度各档口独立管理,采购方分散赊账就能规避限额。原来的覆盖率只有单档口40%——也就是说,60%的赊账在系统里是看不见的。

解决方案:全局信用计算引擎,跨档口赊账实时汇总。但这里有个技术挑战——跨档口汇总需要分布式事务+最终一致性,计算延迟要控制在500ms以内,否则凌晨高峰期系统会卡。

产品启示:风控的本质不是”限制”,是“看见”。设计的时候我们做了一个关键决策:不阻止交易,但实时展示全局使用率。赊账达额度80%自动预警,100%才自动锁定。先让老板看见,再让系统决策——AI辅助人,不是替代人。

六、落地效果:用数据说话

最重要的变化不是效率,是”看见”。系统上线前,老板不知道哪些账对不上、谁在跨档口赊账、哪些差异是常态哪些是异常。系统上线后,这些全部可视化了。对账系统真正的价值不是”对得更快”,是“让看不见的变成看得见的”

七、3条产品方法论沉淀

1. 先分类,再系统化

做任何系统化产品,第一步不是画原型,是把问题分类。我们对账系统的6大差异类型,是在档口蹲了3个月整理出来的。类型定义清楚后,系统架构(采集→匹配→处理)几乎自动浮现。

如果你做的产品面对的是一个混沌场景,先问自己:这个问题能不能分成5-6种类型? 如果不能,说明你对业务的理解还不够深。

2. 分层匹配,降低人工介入

对账撮合引擎的核心设计是”分层匹配”——精确匹配先吃掉80%+,模糊匹配再捞回10-15%,剩余5%交给人工。这个思路适用于所有”海量数据配对”场景

  • 订单和物流单的匹配
  • 发票和报销单的匹配
  • 采购单和到货单的匹配
  • 会员系统和积分系统的对账

核心原则:让机器做80%的重复工作,让人做20%的判断工作。

3. AI辅助人,不是替代人

系统设计里有一个贯穿始终的原则:AI辅助人,不是替代人。具体体现在:

  • 对账差异分类后,不自动处理,而是生成工单推给人确认
  • 信用预警分两档:80%预警(只提醒),100%锁定(才行动)
  • 补货推荐用置信度标记:0.85以上可直接采纳,0.7以下强制人工复核

为什么不让系统全自动?因为业务有上下文,AI没有。系统不知道这个采购方是不是老客户、这个价格是不是促销价、这笔差异是不是预期内的。先让AI做计算和推荐,让人做判断和决策——这个边界,是整个系统最核心的设计。

对账系统的6大差异类型,不是我在PRD里构思出来的,是在档口里看出来的——张老板骂”你这系统太慢了”,过磅师傅说”今天扣杂多扣了5斤”,财务抱怨”这3笔又对不上”。这些声音不会出现在需求访谈的会议纪要里,但它们才是需求的真正来源。

我做产品经理这几年,最重要的能力不是画交互图、写文档,是能在业务现场把混乱拆成结构。档口的混乱是表象,6大差异类型是结构,3层架构是解法。从混乱到结构再到系统,这条路是每个供应链产品经理都要走的。以上,希望对同行有帮助。有问题欢迎评论区交流。

本文由 @Totoro畅 原创发布于人人都是产品经理,未经许可,禁止转载

题图来自 Unsplash,基于 CC0 协议

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 目前还没评论,等你发挥!