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

业财通识13:价格策略——多维定价与动态调整

2026/1/1316 min read
ERPO2C价格策略定价体系价格瀑布十三Tech

大家好,我是十三。

导言:同一个商品,为什么卖不同客户不同价

在第 12 篇中,我们聊完了 CRM 的三层模型。客户已经被分层、被识别、被管理,接下来一个很自然的问题就是:面对不同客户,同一个商品到底该卖多少钱

如果你说"统一定价,一视同仁",财务可能会摇头:大客户一年采购上千万,和小客户买一两件,怎么能一个价?销售也会皱眉:年底冲业绩时,不给点折扣怎么促单?

但反过来,如果价格全凭销售一张嘴,系统里又没有统一规则,那同一个客户两次下单可能出现两个价。客户投诉不说,财务核算也会变成一锅粥。

价格策略要解决的,正是这个矛盾:既要灵活,又要可控;既要让客户觉得值,又要让企业有利可图。

价格策略解决什么问题

在展开具体模型之前,先理解"为什么不能一个价卖所有人"。

不同客户带来的成本不同。大客户虽然采购量大,但通常账期长、需要专属客服、甚至要求定制服务,这些隐形成本都要算进去。小客户采购量小,但现款现货、回款快,资金成本反而更低。

不同客户的价格敏感度也不同。制造业客户对原材料价格波动极其敏感,而政府机构对价格敏感度相对较低,但对合规和服务要求极高。

如果没有分层定价体系,企业要么丢了利润(该高的没高上去),要么丢了市场(该低的没低下来)。

业务定义:价格策略是企业根据客户类型、交易规模、市场环境和经营目标,对同一商品制定差异化价格规则的管理体系。它回答的核心问题是:什么客户、在什么场景下、应该以什么价格成交。

你可以把它理解为餐厅的菜单。大厅散客看的是挂牌价,VIP 会员享受会员价,工作日午餐有特惠套餐。同一道菜,三种价格,三种规则,互不冲突。

三层定价体系:标准价、协议价与促销价

我把企业常用的定价体系归纳为三层:标准价 → 协议价 → 促销价。它们不是三个独立的价格,而是一个逐层覆盖、优先级递减的规则栈。

第一层:标准价(List Price)

标准价是定价体系的"原点"。

业务定义:标准价是商品对外公示的基准销售价格,是所有定价计算的起点。它不针对任何特定客户,而是企业对外宣称的"官方指导价"。

标准价的作用类似于地图上的坐标原点。不管后续怎么折扣、怎么促销,都需要先有一个基准,才能算出"到底打了多少折"。

标准价通常基于商品成本、目标毛利率和市场竞品价格综合制定。它一般不频繁变动,否则会让客户对品牌定价产生不信任感。

标准价的维护通常由产品部门或财务部门负责,销售无权擅自修改。这是为了确保对外报价的一致性,防止不同销售报出不同价格。

标准价的核心数据

字段 说明 示例
商品编码 对应哪个 SKU SKU-001
标准价 基准售价 10,000 元
币种 适用货币 CNY
生效日期 从哪天开始执行 2025-01-01

第二层:协议价(Contract Price)

协议价是面向特定客户的专属价格。

业务定义:协议价是企业与特定客户通过合同或年度协议约定的销售价格。它通常低于标准价,以换取客户的大规模采购或长期合作承诺。

在第 8 篇中我们提到的销售订单,如果客户是大客户,订单上的价格往往不是标准价,而是从协议价直接带出的。这是 O2C 流程中价格进入订单的主要路径之一。

协议价的核心价值在于"以价换量"。企业牺牲一部分毛利率,换取稳定的订单量和更可预测的生产计划。对于客户而言,协议价意味着采购成本的可预期性,便于其做预算。

协议价到期后通常有两种处理方式:一是自动失效,客户重新按标准价采购;二是触发续约谈判,根据上一年度的实际采购量调整新协议价。如果客户未达到最低采购量,系统通常会在续约时发出预警。

协议价的核心数据

字段 说明 示例
客户编码 适用哪个客户 CUST-001
商品编码 对应哪个 SKU SKU-001
协议价 约定售价 8,500 元
协议有效期 从哪天到哪天 2025-01-01 至 2025-12-31
最低采购量 享受此价的门槛 100 件/年

第三层:促销价(Promotional Price)

促销价是临时性的价格让利。

业务定义:促销价是在特定时间段、针对特定客户群或满足特定条件时临时生效的优惠价格。它通常具有明确的起止时间和适用范围。

促销价就像超市的限时特价。它的目标不是常态运营,而是解决特定经营问题:清库存、推新品、抢市场、或者季度末冲业绩。

促销价如果设计不好,很容易"杀敌一千自损八百"。我见过一些企业促销结束后的常态销量反而下滑,因为客户已经养成了"等促销再下单"的习惯。

因此,好的促销价设计必须考虑"促销退出机制"。例如,设置促销期间的限购数量,或者促销结束后自动发送优惠券作为过渡,避免销量断崖式下跌。

促销价的核心数据

字段 说明 示例
活动编码 促销活动的唯一标识 PROMO-Q3-001
商品编码 参与促销的 SKU SKU-001
促销价 活动期间的售价 7,500 元
起止时间 活动有效期 2025-07-01 至 2025-07-31
客户范围 哪些客户可参与 全部 / VIP 客户 / 新客户

三层定价的优先级规则

当三个价格同时存在时,系统必须有一个明确的优先级。否则同一个客户、同一个商品、同一时间,可能匹配到多个价格,导致歧义。

最常见的优先级是:

促销价 > 协议价 > 标准价

也就是说,如果当前有生效的促销活动,优先走促销价;如果没有促销,但客户有协议价,走协议价;如果两者都没有,才 fallback 到标准价。

这个顺序背后的逻辑是:促销价是时效性最强的临时规则,协议价是契约性最强的长期规则,标准价是兜底规则。临时规则优先于长期规则,这是为了保证促销的"限时感"真正生效。

价格瀑布模型:从标准价"跌"到净利润

理解了三层定价体系后,我们再往下走一步。客户真正付的钱,往往不是简单的一个"成交价",而是经过层层折扣和费用调整后的最终数字。

这个层层递减的过程,在业财领域被称为 Price Waterfall(价格瀑布)

你可以把它想象成一条从山顶流下来的瀑布,每经过一个断崖,水量就减少一些。标准价是山顶的源头,最终成交价是山脚的出水口,中间每一层都是一次"减扣"。

graph LR
    A[标准价] --> B[数量折扣]
    B --> C[客户等级折扣]
    C --> D[促销折扣]
    D --> E[折后净价]
    E --> F[运费与杂费]
    F --> G[最终成交价]

让我逐层解释这条瀑布。

第一层:标准价

这是瀑布的起点,也是所有计算的基准。比如一台设备的标价为 100,000 元。

第二层:数量折扣

客户采购数量达到一定门槛后,系统自动给予的折扣。例如采购 100 台以上,享受 95% 的折扣率,即减少 5,000 元。

第三层:客户等级折扣

基于客户等级(如 VIP、A 类、普通)的固定折扣。在第 12 篇中我们讲过,客户等级是属性层的关键字段。例如 VIP 客户额外享受 92% 折扣率,在数量折扣基础上再减少一定比例。

第四层:促销折扣

如果当前有生效的促销活动,再叠加一层折扣。例如季度末促销,额外 90% 折扣率,进一步降低价格。

第五层:折后净价

经过上述折扣后的净价。假设标准价为 100,000 元,经过三层折扣后的净价约为 78,660 元。到这里,商品的理论售价已经确定。

第六层:运费与杂费

如果合同约定运费由客户承担,或者需要加急配送产生额外费用,会在净价基础上进行调整。例如运费 500 元,最终成交价变为 79,160 元。

第七层:最终成交价

这是客户发票上看到的、实际需要支付的金额。

为了更直观地理解,我们用一张表来展示整个过程:

层级 项目 计算方式 金额
起点 标准价 基准价 100,000 元
减扣 1 数量折扣 100,000 × 95% 95,000 元
减扣 2 客户等级折扣 95,000 × 92% 87,400 元
减扣 3 促销折扣 87,400 × 90% 78,660 元
加项 运费 固定运费 500 元
终点 最终成交价 78,660 + 500 79,160 元

从 100,000 元到 79,160 元,中间差了将近 21%。如果企业不做价格瀑布分析,很可能只知道"打了折",但不知道到底让了多少利,更不知道哪一层折扣对利润侵蚀最大。

这个价格瀑布模型对企业的意义在于:它让"价格是怎么来的"变得完全透明。 财务可以清晰看到每一层折扣对利润的影响,销售也可以知道到底给了客户多少让利。

定价决策树:什么场景用什么价

规则有了,但一线销售面对客户时,最头疼的往往不是"规则是什么",而是"这个客户现在该用哪个价"。

我用一张简化的决策流程图来回答这个问题:

graph TD
    A[客户询价] --> B{有生效协议价}
    B -- 是 --> C{有生效促销}
    B -- 否 --> D{有生效促销}
    C -- 是 --> E[使用促销价]
    C -- 否 --> F[使用协议价]
    D -- 是 --> E
    D -- 否 --> G{达数量折扣门槛}
    G -- 是 --> H[标准价乘折扣]
    G -- 否 --> I[使用标准价]

我把常见场景归纳为三张决策清单。

场景一:新客户首次询价

判断条件 决策
无历史交易记录 使用标准价
无年度协议 不参与协议价
无生效促销 不参与促销价
最终定价 标准价,或申请新客户首单折扣

场景二:老客户日常复购

判断条件 决策
存在生效的年度协议 协议价优先
当前有促销活动 促销价覆盖协议价
采购量达到数量折扣门槛 叠加数量折扣
最终定价 促销价(如有)→ 协议价 → 叠加数量折扣

场景三:大客户年度谈判

判断条件 决策
客户历史采购额大于阈值 启动协议价谈判
客户要求独家供应或排他 可进一步让利
承诺下一年度采购量 按阶梯设定多级协议价
最终定价 签订年度框架协议,锁定协议价

这三张表不是标准答案,但适合作为系统设计和销售培训的起点。

价格在销售订单中的应用

在第 8 篇中我们详细讲过销售订单(SO)的结构。其中有一个关键字段就是"单价"。这个单价到底是怎么来的?又能不能改?

价格字段从何而来

当销售人员创建 SO 时,系统会根据以下逻辑自动带出价格:

  1. 读取客户编码,查询该客户是否有生效的协议价。
  2. 读取当前日期,查询该商品是否有生效的促销活动。
  3. 读取采购数量,判断是否达到数量折扣门槛。
  4. 按"促销价 > 协议价 > 标准价"的优先级,计算最终单价。

这个过程本质上就是价格瀑布的前四层计算。

价格如何锁定

订单确认后,价格必须锁定。原因很直接:销售订单是具有法律效力的合同,价格如果还能随意改动,合同就失去意义了。

在第 9 篇中我们提到,信用检查是在订单确认前执行的风控动作。价格锁定和信用检查,实际上是订单确认的"双保险":一个防利润流失,一个防坏账风险。

价格何时可变

锁定的价格并非完全不可变。在以下场景中,系统通常允许价格调整,但需要走审批:

  1. 订单变更:客户要求增减数量,导致数量折扣档位变化。
  2. 促销到期:订单创建时促销有效,但发货时促销已结束。
  3. 价格错误:销售录入时选错了价格类型,需要更正。

这些调整都需要记录变更原因、变更前后值,并通常需要销售经理或财务审批。这是审计合规的基本要求。

SO 中的关键价格字段

一个完整的销售订单,价格相关字段通常包括:

字段 来源 是否可改
标准价 商品主数据
协议价 客户合同
促销价 营销活动
成交单价 价格引擎计算 确认前可改
折扣率 系统计算或人工录入 需审批
运费 物流规则计算 确认前可改
价税合计 系统汇总

"成交单价"是订单最核心的价格字段,它由价格引擎按瀑布模型计算得出。订单确认后,这个字段应该被快照保存,即使后续价格主数据发生变化,也不影响已确认订单。

价格策略的产品设计思考

作为工程师,理解了业务规则后,还需要考虑如何在系统中落地。价格体系的产品设计有几个常见的坑。

价格主数据如何维护

不要把价格当成商品表的一个字段。随着业务复杂度增加,价格会演变成一张多维规则表。更合理的做法是:

  • 标准价由商品主数据维护,但单独放在价格表中,支持历史版本。
  • 协议价由客户合同模块维护,与 CRM 中的客户编码关联。
  • 促销价由营销活动模块维护,支持时间窗口和客户范围过滤。

价格版本控制

价格不是静态的。年初定的标准价,年中可能因为原材料涨价而调整。如果系统不保留历史版本,就会出现一个问题:上个月下的订单,这个月发货时,系统按新价格开票,客户当然不干。

合理的做法是:每个价格记录都有生效时间和失效时间。订单创建时,系统"快照"当时生效的价格版本,后续即使价格调整,也不影响已确认订单。

// 计算最终成交价的简化逻辑
function calculateFinalPrice(sku, customer, quantity, orderDate) {
  // 1. 获取标准价
  const listPrice = getListPrice(sku, orderDate);
  
  // 2. 查询生效的协议价
  const contractPrice = getContractPrice(customer, sku, orderDate);
  
  // 3. 查询生效的促销价
  const promoPrice = getPromoPrice(sku, orderDate);
  
  // 4. 按优先级选择基础价
  let basePrice = promoPrice || contractPrice || listPrice;
  
  // 5. 应用数量折扣
  const qtyDiscount = getQuantityDiscount(sku, quantity);
  let netPrice = basePrice * qtyDiscount;
  
  // 6. 应用客户等级折扣
  const tierDiscount = getCustomerTierDiscount(customer);
  netPrice = netPrice * tierDiscount;
  
  // 7. 加上运费等杂费
  const surcharge = calculateSurcharge(customer, sku);
  
  return Math.round(netPrice + surcharge);
}

这段代码只有 20 多行,但基本覆盖了价格瀑布的核心计算逻辑。真实系统中,还会加上缓存、并发控制和详细的计算日志,方便审计和排查。

常见陷阱

在设计和实施价格策略时,有几个坑特别容易踩:

  1. 价格重叠冲突:同一时间段内,一个客户同时命中多个促销活动,系统不知道该用哪个。解决方式是为促销设定明确的互斥规则或优先级。
  2. 时间窗口漏洞:协议价昨天刚到期,销售今天下单,系统按标准价执行,客户投诉。解决方式是增加"宽限期"或提前续约提醒。
  3. 折扣叠加失控:数量折扣、客户折扣、促销折扣三层叠加后,最终价格跌破成本价。解决方式是在价格引擎中设置"底价红线",任何计算结果低于成本价时自动拦截。

总结

价格策略不是"想卖多少卖多少"的艺术,而是"在什么条件下卖什么价"的工程。

今天我们梳理了三个核心要点:

  1. 三层定价体系是规则基础。标准价兜底、协议价换量、促销价应急,优先级必须是促销 > 协议 > 标准,否则规则会互相打架。
  2. Price Waterfall 让价格透明。从标准价到最终成交价,每一层折扣和费用都清晰可见,财务才能核算清楚利润,销售才能讲清楚逻辑。
  3. 订单中的价格必须可锁定、可追溯。SO 确认时快照价格版本,后续变更走审批留痕,这是业财一致性的底线。

在下一篇文章中,我们将继续深入 O2C 的财务闭环:当销售订单已经确认、货物已经发出、发票已经开具,企业如何系统性地管理应收账款,确保资金按时回笼?


往期回顾


关于十三Tech

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