system column十三Tech
← 返回业财专栏
ERP

业财通识21:库存成本计价——FIFO、加权平均与标准成本

2026/2/2015 min read
ERP库存成本计价FIFO加权平均标准成本COGS十三Tech

大家好,我是十三。

在前两篇文章中,我们讨论了如何知道仓库里有多少货可用,以及如何科学地设置安全库存。这两个问题本质上都围绕"数量"展开:知道有多少、该备多少。

但数量只是库存管理的一半。对于财务和经营分析来说,还有一个同等重要的问题:这批货值多少钱?

同一个 SKU,1 月采购时单价 10 元,3 月涨到了 12 元。当销售出库 150 件时,系统应该按 10 元还是 12 元来算成本?这个选择不是随意的,它直接决定了当期利润、库存资产价值,甚至税务申报。

这就是我们今天要深入探讨的主题:库存成本计价方法

成本计价解决什么问题

业务定义:库存成本计价是指当同一商品在不同时间以不同价格采购入库后,在商品发出(销售或领用)时,按照特定规则确定其单位成本的方法。它是连接库存数量变动与财务价值变动的桥梁。

打个比方:你经营一家便利店,月初可乐的进价是 3 元/瓶,月中供应商涨价到 3.5 元/瓶。月底你卖出 100 瓶,但已经分不清卖出去的到底是月初进的还是月中进的。计价方法的作用,就是在"分不清"的情况下,给出一个被会计准则认可的成本计算规则。

如果没有统一的计价方法,财务将无法准确核算销售成本,毛利润会变成一笔糊涂账,资产负债表上的库存价值也会失去可比性。不同企业、不同期间的数据将无法横向对比,经营分析也就失去了意义。

更现实的问题是:在原材料价格持续波动的市场环境下,同一种计价方法在不同时间算出的利润可能截然不同。选择计价方法,本质上是在"利润真实性"与"管理简便性"之间做权衡。

FIFO 先进先出

业务定义:先进先出(First In, First Out)假设先入库的商品先出库,发出商品的成本按最早一批采购的单价依次计算。

通俗理解:就像超市货架上摆放牛奶,理货员总是把日期靠前的放在外侧,顾客先拿到的是最早进货的批次。FIFO 的财务逻辑与此一致——哪怕物理上没有严格区分批次,财务上也假设 oldest stock 优先被消耗。

计算逻辑:每次出库时,按批次时间顺序依次扣减。先扣完最早一批,再扣次早一批,直到扣满出库数量为止。

数值示例

假设某 SKU 在 Q1 的采购记录如下:

日期 入库数量 单价 入库金额
1 月 5 日 100 件 10 元 1,000 元
2 月 10 日 200 件 12 元 2,400 元
3 月 15 日 150 件 11 元 1,650 元

3 月 20 日销售出库 250 件,按 FIFO 计算成本:

  • 先消耗 1 月 5 日的 100 件:100 × 10 = 1,000 元
  • 再消耗 2 月 10 日的 150 件:150 × 12 = 1,800 元
  • 销售成本合计:1,000 + 1,800 = 2,800 元
  • 期末库存:2 月剩余 50 件(单价 12 元)+ 3 月 150 件(单价 11 元),总价值 2,250 元

价格趋势对利润的影响

在物价上涨周期中,FIFO 会匹配较早的低成本与当前的高售价,导致销售成本偏低、利润偏高、期末库存价值偏高。在物价下跌周期中则相反,销售成本偏高、利润偏低。

这意味着 FIFO 的利润波动与市场价走势高度相关。对于上市公司而言,这种联动性可能影响投资者对业绩稳定性的判断。

适用场景

  • 商品价格波动较大,需要成本贴近实际采购时序
  • 商品有保质期或易过时(如食品、药品、电子产品)
  • 税务上希望在通胀期匹配较低成本与较高收入(中国会计准则允许 FIFO)

在第 10 篇讨论发货与成本结转时,我们已初步接触过 FIFO。那里强调的是发货动作触发成本计算,而这里聚焦的是"按什么价格算"的规则本身。

加权平均

加权平均法将一段时间内所有库存的成本合并计算,得出一个平均单价。根据计算时点的不同,分为两种方式。

月末一次加权平均

业务定义:在会计期末(通常是月末),将该月期初库存与本月所有入库商品的总金额除以总数量,得出全月统一的平均单价。当月所有出库都按这个单价计价。

计算公式

加权平均单价 = (月初库存金额 + 本月入库总金额) / (月初库存数量 + 本月入库总数量)
本月出库成本 = 本月出库总数量 × 加权平均单价

数值示例

承用上面的采购数据,假设月初库存为 0:

  • 本月入库总数量 = 100 + 200 + 150 = 450 件
  • 本月入库总金额 = 1,000 + 2,400 + 1,650 = 5,050 元
  • 加权平均单价 = 5,050 / 450 ≈ 11.22 元/件

3 月 20 日销售出库 250 件:

  • 销售成本 = 250 × 11.22 = 2,805 元
  • 期末库存 = 200 × 11.22 = 2,244 元

特点

  • 计算简单,月末一次算出单价即可
  • 成本波动被平滑,利润表现更稳定
  • 但只有在月末才能确定准确成本,月中出库时无法实时获知

移动加权平均

业务定义:每次入库后立即重新计算平均单价,后续出库按最新平均单价计价。

计算公式

新平均单价 = (原库存金额 + 本次入库金额) / (原库存数量 + 本次入库数量)

数值示例

  • 1 月 5 日入库 100 件 @ 10 元:平均单价 = 10.00 元
  • 2 月 10 日入库 200 件 @ 12 元:
    • 新平均单价 = (100×10 + 200×12) / 300 = 3,400/300 ≈ 11.33 元
  • 3 月 15 日入库 150 件 @ 11 元:
    • 新平均单价 = (300×11.33 + 150×11) / 450 = 5,050/450 ≈ 11.22 元
  • 3 月 20 日出库 250 件:
    • 销售成本 = 250 × 11.22 = 2,805 元

特点

  • 每次入库后实时更新单价,可随时准确计算出库成本
  • 计算量比月末加权大,但信息化系统完全可以自动处理
  • 第 10 篇提到的移动加权平均即为此法,它让成本结转可以在发货时即时完成

两种加权方式的本质区别在于"何时算平均"。月末加权在月底一次性算,简单但滞后;移动加权每入一次算一次,实时但计算频繁。

对比点 月末加权平均 移动加权平均
计算时点 月末统一算 每次入库后实时算
成本可知性 月中无法知道准确成本 随时可算准确成本
系统要求 低,手工也能做 中,需系统实时更新
利润平滑度 最平滑 较平滑

对于现代 ERP 系统而言,移动加权平均通常是更实用的选择,因为它支持发货时即时成本结转,与业务节奏同步。

标准成本

业务定义:标准成本法是在会计期间开始前,预先为每种产品或原材料设定一个"标准单价"。日常收发都按这个标准价记账,实际成本与标准价之间的差异单独归集、期末分析并分摊。

通俗理解:就像公司给员工定的差旅餐饮标准——不管你在上海吃一碗面花了 28 元还是 35 元,报销时先按公司规定的 30 元标准来。差额(节约或超支)另外统计,月底再看整体偏差,分析是哪个环节出了问题。

计算逻辑

  1. 期初设定标准价:如某原材料标准成本 12 元/件
  2. 日常收发按标准价记账:入库、出库都按 12 元
  3. 差异单独核算
    • 价格差异 = (实际单价 - 标准单价) × 实际采购数量
    • 数量差异 = (实际用量 - 标准用量) × 标准单价
  4. 期末分摊差异:将累计差异按一定比例分摊到销售成本和期末库存

数值示例

标准成本设为 12 元/件。3 月实际采购 150 件 @ 11 元:

  • 入库按标准价:150 × 12 = 1,800 元(库存商品借方)
  • 实际应付:150 × 11 = 1,650 元(应付账款贷方)
  • 价格差异:1,650 - 1,800 = -150 元(贷方差异,即节约差异)

3 月 20 日出库 250 件:

  • 出库成本 = 250 × 12 = 3,000 元(按标准价)

月末差异分摊(假设差异 150 元全部转入销售成本):

  • 实际 COGS = 3,000 - 150 = 2,850 元

差异分摊的三种方式

  1. 全部转入销售成本:最简单,适用于差异金额较小的情况
  2. 按销售与库存比例分摊:差异按已售数量和库存数量的比例分配,更符合配比原则
  3. 按品种法分摊:将差异归集到具体产品或批次,用于精细化成本分析

适用场景

  • 制造业,产品 BOM 结构稳定,成本可控性强
  • 需要精细化成本控制和预算管理的企业
  • 价格差异分析是管理层 KPI 的一部分(如材料涨价归因到采购还是市场)

在第 7 篇讨论暂估入账时,我们提到标准成本是确定暂估金额的"优先级三"。这并非偶然——使用标准成本法的企业,标准价本身就是整个成本核算体系的锚点,暂估时直接调用它最为自然。

三种方法对比

对比维度 FIFO 加权平均 标准成本
计算复杂度 中(需追踪批次台账) 低(求平均即可) 低(按标准价)
利润波动 随价格趋势波动 平滑,波动最小 平滑(差异单独呈现)
适用行业 零售、快消、食品 通用型贸易企业 制造业、预算管控严格
ERP 支持度 主流 ERP 均支持 最广泛支持,默认选项 SAP、Oracle 支持完善

从决策角度,中小企业、贸易型企业通常直接选择加权平均,简单够用。零售和快消行业倾向 FIFO,因为商品保质期和时序对经营决策更重要。制造业如果已有成熟的 BOM 和工艺定额体系,标准成本法能释放更大的管理价值。

成本差异处理

标准成本法的核心不在标准价本身,而在差异分析。通过拆解差异,管理层可以精准定位"是买贵了"还是"用多了"。

价格差异:由采购单价偏离标准价引起。

价格差异 = (实际单价 - 标准单价) × 实际采购数量

采购部门对这个差异负责。如果实际单价高于标准,说明采购端需要解释涨价原因,是市场行情变化还是供应商谈判失利。

数量差异:由实际用量偏离标准定额引起。

数量差异 = (实际用量 - 标准用量) × 标准单价

生产部门对这个差异负责。标准用量通常来自 BOM 定额。如果实际用料多于标准,说明生产过程中存在浪费、工艺偏差或质量问题。

会计分录示例

采购入库时(实际 11 元,标准 12 元):

借:库存商品        1,800  (标准价 150×12)
贷:应付账款        1,650  (实际价 150×11)
贷:材料价格差异     150   (节约差异,贷方)

月末结转差异到销售成本:

借:材料价格差异     150
贷:主营业务成本     150

成本计算伪代码

function calculateFifoCost(batches, outQty) {
  let remaining = outQty, cost = 0;
  for (const batch of batches) {
    if (remaining <= 0) break;
    const take = Math.min(batch.qty, remaining);
    cost += take * batch.price;
    remaining -= take;
  }
  return cost;
}

function calculateWavgCost(batches, outQty) {
  const totalQty = batches.reduce((s, b) => s + b.qty, 0);
  const totalAmt = batches.reduce((s, b) => s + b.qty * b.price, 0);
  return outQty * (totalAmt / totalQty);
}

两个函数分别实现了 FIFO 和月末加权平均的核心逻辑。batches 按入库时间正序排列,每个批次包含 qty(数量)和 price(单价)。在实际 ERP 系统中,FIFO 还需要维护批次余额表,出库时逐批次扣减并记录剩余。

月末 COGS 结转

无论采用哪种计价方法,成本最终都要结转到销售成本(COGS)。月末结转的本质,是把库存资产的价值转移到损益表中的成本项。

在第 10 篇中,我们了解了发货时 COGS 的基本逻辑:出库数量乘以商品成本价。这里从计价方法的角度,看月末的完整结转流程。

graph TD
    A[汇总本月出入库流水] --> B[按计价方法计算成本]
    B --> C{计价方法}
    C -->|FIFO| D[按批次时序扣减]
    C -->|加权平均| E[计算全月平均单价]
    C -->|标准成本| F[按标准价记账]
    F --> G[归集价格与数量差异]
    D --> H[生成 COGS 结转凭证]
    E --> H
    G --> H
    H --> I[更新总账与报表]

流程的起点是汇总当月所有出入库记录。不同计价方法走到不同的计算分支,但最终都汇聚到"生成 COGS 结转凭证"这一步。凭证生成后,总账模块更新库存商品科目和销售成本科目,财务报表随之刷新。

会计分录示例(月末加权平均法):

借:主营业务成本     2,805
贷:库存商品         2,805

这笔分录完成了资产到损益的转移。借方增加销售成本,利润减少;贷方减少库存资产,资产负债表上的存货价值相应降低。

对技术人员来说,这个流程的关键设计点是:成本计算必须与库存事务分离。库存事务记录"发生了什么"(数量变动),成本计算回答"值多少钱"。两者的解耦让系统可以灵活切换计价方法,而不影响库存的实物管理。另一个关键点是成本计算的幂等性:月末成本结转通常作为定时任务执行,必须确保重复运行不会导致重复记账。

总结

库存成本计价不是会计的"文字游戏",而是直接影响利润表和资产负债表的底层规则。选择哪种方法,取决于企业的行业特性、管理精细度以及 ERP 系统的支撑能力。

FIFO 最贴近商品流转的物理直觉,适合价格波动大或保质期敏感的行业。加权平均最简单通用,是大多数贸易企业的默认选择。标准成本法把"价格"和"差异"拆开,让制造业的管理者能精准归因成本偏差。

对技术人员来说,理解计价方法的业务含义,有助于在 ERP 系统设计中做出正确的数据模型选择。FIFO 需要批次台账和余额追踪表,加权平均需要实时计算平均单价并处理精度截断问题,标准成本需要维护标准价主数据并设计差异分摊逻辑。

从系统架构角度,建议将成本计算抽象为独立的服务或模块。库存模块负责记录数量变动事件,成本模块订阅这些事件并执行计价计算。这种事件驱动的设计让两个领域各自演进,也便于未来更换计价策略时不波及库存核心逻辑。

成本计价的准确性,决定了财务报表的可信度。而财务报表的可信度,决定了经营决策的质量。

下一篇,我们将进入 O2C 流程的收尾环节:应收对账。当货物发出、发票开具后,如何确保客户那边的账目与我们一致,又如何高效催收回款,是每一家企业都绕不开的课题。


往期回顾


关于十三Tech

资深服务端研发工程师、架构师、AI 编程实践者。
专注分享真实的技术实践经验,持续记录企业系统、架构设计与 AI 编程实践。