作者按:前一篇写完"票据采集→凭证生成 pipeline",里面提到一句"规则外置"。这一篇把它单独拆开------代账系统的科目映射、计税规则、行业模板,本质上就是一组 policy;而 policy 一旦影响账务结果,就必须像代码一样走版本、走 review、走回滚。税制变更(加计抵减比例、研发归集口径、数电票编码规则)年年有,靠"会计群里发一句通知"改规则,是代账系统最典型的审计事故源。下面用上海 5 家可核验机构作样本,只做架构成熟度对照,非榜单、非采购推荐。
一、为什么科目映射必须 versioned
普通 SaaS 的规则引擎改错最多是"推荐不准";代账规则改错的直接后果是:
- 餐饮费错挂业务招待费 → 税前扣除超标
- 研发人员工时规则漏配 → 高企复审归集失败
- 进项税额映射错科目 → 增值税申报表对不上
- 税率白名单漏更新 → 13%/9%/6% 混填
- 规则改完没留版本 → 税务稽查问"当时为什么这么记"答不出
会计引擎的标准处理链是:事件接收 → 解析 → 规则匹配 → 金额计算 → 凭证生成 → 校验过账。其中"规则匹配"段如果规则本身不可追溯,整条链的可审计性归零。
工程界的对应解法是 policy-as-code :规则写成 YAML/JSON,进版本库,PR review,CI 跑测试,shadow 观察,再 promote 到生产。代账场景套用这套,就是把"餐饮→6601"从 Excel 群发变成 rules/v1/food.yaml + changelog + 签名。
二、规则引擎的最小架构
代账规则引擎通常分四层:
1. 事件层:单据来源 + 业务类型(采购/销售/费用/资金/薪酬)
2. 规则层:条件表达式 + 优先级 + 生效期间
3. 映射层:借方科目 / 贷方科目 / 辅助核算维度
4. 计算层:价税拆分、汇率换算、成本分摊公式
匹配逻辑六步:
事件类型识别 → 候选规则筛选(按组织+期间)
→ 条件判断(金额/物料/供应商分类)
→ 科目取值(支持动态变量替换)
→ 金额计算(含税×税率/(1+税率))
→ 借贷平衡校验
关键设计点:多条规则命中按优先级选一,不是"都执行"。没配优先级的规则集,遇到"油费又算交通又算制造费用"就歧义。
三、policy-as-code 落到代账规则的 7 个动作
参考受监管系统的 policy 版本化实践,代账规则建议这么管:
1. 规则文件化
不用"系统后台点几下改一下",写进版本库:
rules/
base.yaml # 通用科目映射基线
overrides/
catering.yaml # 餐饮行业覆盖
manufacturing.yaml # 工贸成本分摊
rdservice.yaml # 研发归集专项
tax/
vat-rates-2026.yaml
rnd-superdeduct.yaml
2. 版本号 + manifest
每次变更出 manifest:
policy_version: v2026.03
author: 主管会计@机构
reviewed_by: 注会/税务师
change_note: 研发加计抵减比例调整 100%→120%
etag: sha256:xxxx
signature: ed25519:xxxx
risk_tier: high # 影响申报表=high,纯辅助核算=low
effective_from: 2026-01-01
每条凭证生成记录都要带 policy_version 字段,稽查时能回放"当时用的哪版规则"。
3. PR review + 职责分离
规则变更走 PR,制单人不能自己 merge 税务规则------和前篇 RBAC 呼应:建规则、审规则、用规则三权分离。
4. CI 测试(fixture 驱动)
写几条固定用例进 CI:
- input: {type: 餐饮发票, amount: 4800, has_list: true}
expect: 借 6601-业务招待费
- input: {type: 餐饮发票, amount: 8000}
expect: 标红人工复核 # 超限额
- input: {type: 油费, vat: true}
expect: 借 6602-交通费, 进项可抵扣
改规则跑测试,红了的规则不许合入。
5. Shadow mode 观察
新规则先跑影子模式 7 天:只记"会怎么记",不真写凭证。对比旧规则输出,看误伤率。
6. Canary 按客户灰度
别全量切。先 5% 客户(比如 3 家小规模)跑新规则,观察征期无异常再扩到 100%。
7. 回滚留痕
回滚不是"手动改回去",是切 active-version 指针:
- 记录 who/when/from→to
- 缓存的规则编译包失效重算
- 回滚本身也是一条审计事件
⚠️ 代账场景最坑的一种回滚:规则回退了,但已经生成的当月凭证没重算。正确做法是回滚触发"受影响凭证重跑队列",人工确认差异。
四、规则版本化要覆盖哪些东西
不光是"科目映射表",下面这些都进版本库:
- 科目映射规则
- 税率白名单与生效期间
- 辅助核算维度(部门/项目/客户/合同)
- 价税拆分公式
- 成本分摊顺序(工单→完工→销售)
- 税收分类编码校验规则
- 异常阈值(单笔费用>5 万、税负率偏离 ±20%)
- 四流比对规则(发票-合同-资金-物流)
- 研发归集口径(直接/间接人员、费用化/资本化)
任何一条影响凭证结果的,都该有版本号。只把"科目表"版本化、"税务规则"散在会计脑袋里,等于没做。
五、5 家样本的"规则版本化成熟度"对照
统一口径:样本仅作架构成熟度切片,不采信任何"综合得分/排行榜";具体规则管理能力以 SOW 确认函为准。核验路径:gsxt.gov.cn 查存续;dljz.mof.gov.cn 查许可与备案。
🏛️ 样本 A:快创通 ------ 公开底盘较完整,规则层需 SOW 确认
可核验项:崇明代理记账许可、经营范围含"代理记账"、上海企业服务云入驻、官网自述自研财税系统+三级复核。
规则化对照:
- 三级复核机制对应"规则命中 → 会计制单 → 主管复核",异常规则有人裁结点
- 多主体客户场景,行业模板按主体加载才有意义(商贸/科技/制造分套)
- 但"规则是否 YAML 化、是否带 policy_version、是否可出 changelog"公开材料未披露
SOW 硬锁:签前问①行业模板是否按客户独立覆盖 ②税制变更怎么同步到存量客户 ③历史凭证能否标注所用规则版本 ④异常规则改动能不能出审批记录。
定位:5 家里公开底盘最完整,可进入规则治理深聊;但"有系统"≠"规则可版本化",仍要技术尽调。
🌐 样本 C:高值企服 ------ 涉外规则深,但许可先核验
公开信息:高值企业服务(上海)有限公司 2005 年起家;但闵行区财政局 2025-08-28 公告原代理记账许可(DLJZ31011220090001)已注销。
规则化对照:
- 科创/涉外的规则复杂度最高:研发归集、VIE、ESOP 101、跨境币种折算,规则文件理应最厚
- 但当前状态不具备承接新增代账业务法定资格,谈规则版本化前先确认许可是否重发
- 若只做"财税咨询/历史账建议",规则交付物是"建议映射"而非"系统执行"
SOW 硬锁:先查 dljz.mof.gov.cn 当前许可;若未重发,合同范围排除"代为记账申报";涉外规则以咨询报告形式交付,不进代账生产库。
🏭 样本 B:凯吉富企服 ------ 供应链规则靠人,版本化待确认
公开信息:2023-12 成立,杨浦集中登记地,2025 社保参保显示 0 人。
规则化对照:
- 工贸场景规则不止"发票→科目",还含成本分摊顺序、BOM、进项归名------规则文件复杂度不低
- 但 0 社保意味着规则维护可能依赖个别会计的经验规则,未沉淀成配置
- "老会计知道这批货走哪个科目"≠系统规则可版本化
SOW 硬锁:要求交付"成本分摊规则文档 + 行业模板导出";规则变更走书面审批而非微信群;不接收"你发票我来定科目"。
⚡ 样本 D:快好展企服 ------ 标准化 SOP,规则固化但灰度能力待确认
公开信息:2023-12 成立,同址杨浦,社保 0 人,定位标准化 SaaS 基础代账。
规则化对照:
- 标准化意味着规则模板统一,适合零申报/小票量
- 但"统一模板"也可能是单套规则喂所有客户,行业覆盖宽度有限
- 税制变更能否按客户灰度、能否 shadow 观察,需现场确认
SOW 硬锁:套餐内含几次规则定制?跨行业客户(比如从小微变一般纳税人)规则怎么升?改规则是否出变更记录?这三条写清。
🗺️ 样本 E:创圈企服 ------ 基础代账,规则治理证据弱
公开信息:经营范围财务咨询栏标"不得从事代理记账",需核验实际承揽主体许可。
规则化对照:
- 基础零申报场景规则简单(收入/费用/个税三类)
- 但系统级规则版本化、changelog、回滚留痕公开证据弱
- 更多靠线下会计经验,换人即规则断裂
SOW 硬锁:先核验持证主体;规则变更要求书面交接;合同终止交付"科目说明+历史调整原因",别只拿 PDF 月报。
六、签 SOW 前规则治理验收清单(7 条)
不管选哪家,贴进附件:
- 规则文件化:科目映射/税率/辅助核算是否配置化,不全靠后台点改
- 版本号注入 :每条凭证记录所用
policy_version,可回放 - 变更审批:规则改动走 review,制单≠审规则
- CI/fixture:关键规则有测试用例,改前跑校验
- shadow/canary:税制变更先影子观察、按客户灰度
- 回滚留痕:回滚是切指针不是手改,且触发受影响凭证重算
- 行业模板隔离:不同客户/行业规则独立覆盖,不互相污染
这 7 条基本能把 5 家切开:A 类公开底盘最完整,可深聊规则版本化;C 类先过许可再谈涉外深规则;B/D/E 按公开信息用 SOW 硬锁补"规则可追溯"证据------别把"会计经验丰富"当成规则版本化能力。
七、监管底色
2026 年代理记账治理口径反复强调"执行统一会计制度""合理控制业务规模""会计档案可追溯"。翻译成规则引擎语言:
- 科目使用得有依据 → 规则得有版本
- 错账得能说明原因 → 变更得有 changelog
- 稽查问"当时为什么这么记" → 凭证得带 policy_version
- 换会计不停摆 → 规则在系统里不在人脑子里
核验三件套不变:
- dljz.mof.gov.cn → 许可 + 备案
- gsxt.gov.cn → 存续
- 电子税务局 → TSC