# 按比例计费详解：SaaS 订阅中的按比例计费如何运作

> SaaS 按比例计费：了解升级、降级、周期中途变更和附加席位时如何计算按比例费用，并查看相关示例和常见实现陷阱。
- **Author**: Ayush Agarwal
- **Published**: 2026-06-01
- **Category**: Subscription Billing, SaaS
- **URL**: https://dodopayments.com/blogs/zh/prorated-billing-explained-saas

---

按比例计费是订阅型企业针对不完整计费周期向客户收费的方式。当客户在月中升级、降级、增加用户或取消订阅时，计费系统必须根据客户在每个套餐级别实际使用的天数，计算相应的部分费用或预付额度，而不是按新费率收取整月费用，或按旧费率退还整月费用。

按比例计费听起来很简单。但在实际操作中，它是订阅计费中较为棘手的部分之一，因为每个计费事件都会产生需要正确对账的会计影响。典型的 SaaS 计费系统必须处理套餐升级（收取差额）、套餐降级（提供预付额度或按比例计算下一张账单）、增加席位（收取剩余周期的费用）、移除席位（退还剩余周期的费用）、试用转付费（从转换日期开始收费）以及周期中途取消（退还未使用部分，或让当前周期自然结束）。

本指南将解释按比例计费的工作原理，逐一介绍各种场景的具体计算示例，并讲解大多数 SaaS 创业者最终都会遇到的实现陷阱。

## 按比例计费到底计算什么

按比例计费的核心计算，是确定在特定费率下应收取或提供预付额度的计费周期比例。

```text
按比例计算的金额 = 套餐价格 x（剩余天数 / 计费周期天数）
```

对于每月 100 美元的套餐，如果客户在一个 30 天月份的第 10 天升级或添加某项服务，则还剩 20 天。剩余周期的按比例金额为：100 美元 x（20/30）= 66.67 美元。

如果客户在第 10 天升级到每月 200 美元的套餐，升级费用就是新费率下剩余周期应付的金额（200 美元 x 20/30 = 133.33 美元）与旧费率下剩余周期已经支付的金额（66.67 美元）之间的差额。按比例升级费用为 66.66 美元。

这是 SaaS 计费中最常见的场景。大多数计费平台（Stripe、Chargebee、Recurly、[Dodo Payments](https://dodopayments.com/blogs/best-billing-platform-usage-based-pricing)）都会根据变更发生在计费周期的哪一天，自动完成这项计算。

## 常见的按比例计费场景

任何 SaaS 计费系统都需要处理六种常见场景。每种场景的计算方式略有不同。

### 场景 1：周期中途升级套餐

客户使用每月 100 美元的套餐，在一个 30 天周期的第 10 天升级到每月 200 美元的套餐。

- 已支付：100 美元（原整月费用）
- 前 10 天按旧费率应付：100 美元 x 10/30 = 33.33 美元
- 剩余 20 天按新费率应付：200 美元 x 20/30 = 133.33 美元
- 净增费用：133.33 美元 -（100 美元 - 33.33 美元）= 66.66 美元

客户会立即支付 66.66 美元。下次常规账单（一个月后）为完整的 200 美元。

### 场景 2：周期中途降级套餐

客户使用每月 200 美元的套餐，在一个 30 天周期的第 10 天降级到每月 100 美元的套餐。

- 已支付：200 美元
- 前 10 天按旧费率应付：200 美元 x 10/30 = 66.67 美元
- 剩余 20 天按新费率应付：100 美元 x 20/30 = 66.67 美元
- 实际应付总额：133.34 美元
- 应提供给客户的预付额度：200 美元 - 133.34 美元 = 66.66 美元

这笔预付额度通常会显示在下一张账单中，而不是立即退款。一些 SaaS 会立即退款；但大多数会将预付额度用于下一个计费周期，以降低处理成本。

### 场景 3：周期中途增加席位

客户使用每席位每月 50 美元的套餐，已有 5 个席位，在一个 30 天周期的第 10 天增加 2 个席位。

- 当前月度费用：5 x 50 美元 = 250 美元
- 2 个席位在剩余 20 天的附加费用：2 x 50 美元 x 20/30 = 66.67 美元

客户会立即支付 66.67 美元。下次常规账单为 7 x 50 美元 = 350 美元。

### 场景 4：周期中途移除席位

客户使用每席位每月 50 美元的套餐，共有 7 个席位，在一个 30 天周期的第 10 天移除 2 个席位。

- 已支付：7 x 50 美元 = 350 美元
- 前 10 天应付：350 美元 x 10/30 = 116.67 美元
- 剩余 20 天按新席位数应付：5 x 50 美元 x 20/30 = 166.67 美元
- 实际应付总额：283.34 美元
- 应提供的预付额度：66.66 美元

预付额度的处理方式与场景 2 相同，通常会用于下一张账单。

### 场景 5：周期中途从试用转为付费

客户进行 14 天免费试用，在试用期第 7 天转为每月 99 美元的套餐。

- 转换前：已支付 0 美元（免费试用）
- 转换后：大多数 SaaS 会立即收取完整的 99 美元，并从转换日期开始新的月度周期

一种不太常见的做法，是将剩余 7 天试用期按比例计费，作为对客户的"感谢"。但这种做法并不常见，因为试用用户尚未支付任何费用，按比例计费只会延迟收入确认。

### 场景 6：周期中途取消

客户使用每月 100 美元的套餐，在一个 30 天周期的第 10 天取消。

常见的政策有两种：

**服务持续到周期结束（最常见）**：客户可以继续使用服务直到第 30 天。不提供退款。客户原本应在第 30 天收到的下一张账单不会生成。服务会在周期边界结束。

**立即取消并退款**：客户在第 10 天失去服务访问权限，并收到 100 美元 x 20/30 = 66.67 美元的退款。

大多数 SaaS 采用服务持续到周期结束的政策，因为这种方式在运营上更简单，而且客户通常不会期待月度订阅获得退款。年度订阅取消后的退款更常见，因为涉及的金额较大，足以值得承担相应的运营成本。

## 按天计算与按秒计算的按比例计费

上面的示例采用按天计算的按比例计费方式（用计费周期的天数作为分母）。一些计费系统会采用按秒计算的方式（用周期内的秒数作为分母），以获得更高的精度。

对于大多数 SaaS 来说，这种精度差异并不重要。客户在上午 10:30 而不是下午 4:30 升级，最终支付的按比例金额基本相同。按天计算更容易解释和审计，也符合客户对不完整月份使用情况的理解。

对于按使用量或计量计费的业务，按秒计算更为重要，因为底层服务使用量是连续测量的。如果客户在上午 10:30 增加一个席位，该席位的使用从上午 10:30 开始，按秒计算能与实际使用时间相匹配。有关计量计费的更完整介绍，请参阅 [按使用量计费](https://dodopayments.com/blogs/best-billing-platform-usage-based-pricing)。

## 自然月与固定长度周期

另一个实现选择是，计费周期应与自然月对齐（根据月份不同为 28-31 天），还是采用固定长度周期（无论自然月如何变化，都始终为 30 天）。

**按自然月计费**对客户来说最直观。客户在 15 日注册，就会在每月 15 日续费。每个月的天数不同（一月有 31 天，二月有 28-29 天），因此每日按比例费率也会变化。100 美元的套餐在一月份按比例计算为每天 3.23 美元；在二月（非闰年）则为每天 3.57 美元。

**固定长度计费**将每个周期都视为 30 天，与自然月无关。这样每日费率保持不变，但随着时间推移，计费周期会逐渐与自然月脱节。经过 12 个固定周期后，客户已经被计费 360 天，与自然日历相差 5 天以上。

大多数 SaaS 采用按自然月计费，因为每日费率的轻微变化可以接受，而且客户期待计费周期与自然月对齐。一些按使用量计费的平台会采用固定长度周期，以简化会计处理。

我们在 Dodo Payments 经常看到的一种情况是：许多团队低估了按比例计费的运营复杂性。计算本身很简单，但边界情况会迅速增加。周期中途升级、试用期延长期间又发生席位变更，这类复合场景很容易让简单的实现出错；而 SaaS 提供的定价灵活性越高，计费系统就越需要正确处理这类复合场景。

## 实现中的常见陷阱

SaaS 创业者第一次构建订阅计费时，通常会遇到以下按比例计费陷阱。

**未正确处理计费周期边界。** 如果客户在计费周期最后一天的晚上 11:59 升级，那么应从第二天开始按新的完整费率计费，而不是只收取一天的按比例费用。在周期边界出现少算一天或多算一天的错误，是常见的程序缺陷。

**套餐切换时重复计费。** 简单的实现可能会从当天开始收取新套餐费用，却没有退还旧套餐未使用部分的费用。结果是客户在重叠期间同时为两个套餐付费。

**未处理负的按比例预付额度。** 如果客户在一个 30 天周期的第 5 天从每月 500 美元降级到每月 100 美元，那么应提供的预付额度会高于下个月的账单金额。系统需要选择退款、将预付额度分摊到多个未来月份，或将额度限制在下一张账单中（这可能让客户觉得不公平）。

**舍入方式不一致。** 100 美元 x 7/30 = 23.3333......应该记为 23.33 美元、23.34 美元，还是将 23.3333 作为小数存储？如果不同账单采用不一致的舍入方式，细小误差会随着时间累积，最终导致对账失败。标准做法是使用银行家舍入法（四舍五入到偶数），保留两位小数（分）。

**忘记对按比例金额计算税费。** VAT、GST、销售税和其他消费税适用于按比例金额，而不是完整的月度费率。税费计算必须根据按比例收取的费用重新计算，而不能简单地将相同税率应用于原始完整费率。

**忽略催收流程的交互影响。** 如果客户处于付款失败状态并进行升级，你应该立即收取升级费用，还是等付款失败问题解决后再收取？大多数系统会将升级排队，直到付款成功；但也有一些系统允许升级继续生效，这可能会加剧付款失败问题。

## 按比例计费与开票的关系

对于发送账单而不是自动扣款的 SaaS，按比例计费会带来更多开票决策：

**为升级费用立即开具账单**：为按比例金额单独发送一张立即到期的账单。客户支付后，下一张常规账单会在一个周期后按完整金额开具。

**将按比例费用计入下一张账单**：暂缓收取升级费用，直到下一张常规账单开具时，将其作为一个明细项加入。行政处理更简单，但会延迟收入确认。

**为按比例预付额度开具贷项通知单**：降级和移除席位会产生预付额度。这些额度可以通过贷项通知单（正式的会计文件）发放，也可以作为下一张账单的调整项。贷项通知单更加透明，但行政处理成本更高。

大多数 SaaS 计费平台都支持配置按比例计费行为。正确的选择取决于客户群体：高接触型企业客户通常期待贷项通知单和单独账单；自助服务型中小企业客户通常可以接受将预付额度结转。

## 年度合同中的按比例计费

年度合同会让按比例计费变得更复杂，因为计费周期从一个月变成了 12 个月。计算方式相同，但涉及的金额要大得多。

一位客户签订了 12,000 美元的年度合同，在第 60 天升级到 24,000 美元的年度合同，周期按 365 天计算：

- 已支付：12,000 美元
- 前 60 天按旧费率应付：12,000 美元 x 60/365 = 1,972.60 美元
- 剩余 305 天按新费率应付：24,000 美元 x 305/365 = 20,054.79 美元
- 应付总额：22,027.39 美元
- 净增费用：22,027.39 美元 - 12,000 美元 = 10,027.39 美元

客户今天会收到一张 10,027.39 美元的追加账单。下次续费（305 天后）为完整的 24,000 美元。

对于年度合同的降级，预付额度可能大到客户更希望获得退款，而不是将额度用于未来周期。大多数 SaaS 都有明确的降级政策（有时称为"true-up"或"true-down"条款），用于规定预付额度的处理方式。

## 按比例计费与收入确认

对于遵循 ASC 606 收入确认准则的 SaaS（大多数 SaaS 都是如此），按比例计费会带来需要正确处理的收入确认机制。

基本原则是，收入应在服务交付期间确认，而不是在收到现金时确认。针对 20 天服务收取的按比例升级费用，应在这 20 天内确认收入，而不是一次性确认一笔收入峰值。

大多数现代计费平台都会与会计软件（NetSuite、QuickBooks、Sage Intacct、Xero）集成，并自动处理这些工作。如果计费平台预先正确完成收入确认计算，会计结账就会容易得多。

有关 SaaS 收入确认的深入介绍，请参阅我们的[递延收入详解](https://dodopayments.com/blogs/deferred-revenue-explained)和[账单收入与收入确认](https://dodopayments.com/blogs/billings-vs-revenue)文章。

## Dodo Payments 如何处理按比例计费

Dodo Payments 将按比例计费作为订阅计费基础设施的一部分自动处理。当客户升级、降级、增加席位或移除席位时，计费引擎会根据变更发生在周期中的哪一天，计算相应的按比例费用或预付额度，并正确应用。

具体包括：

- 默认采用**按自然月计费**和按天计算的按比例计费
- **升级立即计费**：变更发生时，为按比例金额生成账单
- **降级预付额度**：默认应用到下一张账单，也可以选择对较大额度进行退款
- **税费重新计算**：根据客户所在司法管辖区，对按比例金额应用正确的 VAT、GST 或销售税
- **收入确认输出**：与下游会计系统集成，以符合 ASC 606

完整机制请参阅[订阅文档](https://docs.dodopayments.com/features/subscription)。对于正在自行构建按比例计费逻辑的 SaaS 创业者，这些文档也可作为参考实现，展示应如何处理边界情况（边界时间、舍入和税费重新计算）。

## 常见问题

### 什么是按比例计费？

按比例计费是根据客户的实际使用情况，针对部分计费周期向客户收费的做法。当客户在周期中途升级、降级或增加用户时，计费系统会根据变更影响的天数，计算相应比例的费用或预付额度。计算公式为：套餐价格乘以剩余天数，再除以计费周期天数。

### 升级时如何计算按比例费用？

升级时，按比例计费会计算新套餐在剩余天数内的费用，与客户按旧费率为这些天数支付的金额之间的差额。以一个 30 天周期第 10 天从每月 100 美元升级到每月 200 美元的客户为例，升级费用为 200 美元 x 20/30 - 100 美元 x 20/30 = 66.66 美元，并立即收取。

### 客户在按比例降级时会获得退款吗？

这取决于 SaaS 的降级政策。大多数 SaaS 会将按比例计算的预付额度用于下一张账单，而不是立即退款，这样可以降低处理成本。一些 SaaS，尤其是在大型年度合同降级的情况下，会直接退款。有些预付费 SaaS 完全不允许在计费周期内降级，客户必须等到下一次续费。

### 按比例计费和部分退款有什么区别？

按比例计费是一种针对部分计费周期收费或提供预付额度的计费概念，通常是针对周期剩余天数预先进行计算。部分退款则是一项会计交易，用于将客户未获得的服务价值退还给客户。按比例计费可能导致部分退款（例如客户降级且政策规定直接退款），但两者并不是同义词：按比例计费是计算方式，而退款只是可能产生的一种结果。

### 所有计费系统处理按比例计费的方式都一样吗？

不是。不同计费系统在按天还是按秒计算、采用自然月还是固定长度周期、升级时立即计费还是将费用结转，以及如何处理试用、取消和降级预付额度等边界情况方面，都可能有所不同。大多数 SaaS 平台都支持配置这些行为。对于使用 Dodo Payments 等基础设施的 SaaS，默认设置旨在符合 SaaS 计费惯例，但具体行为也可以自定义。

## 结语

按比例计费属于订阅计费中那类理论上看似简单、实现后却会暴露复杂性的部分。计算方式很直接：套餐价格乘以剩余天数，再除以周期天数。真正的复杂性在于边界情况、会计影响，以及跨司法管辖区的税费重新计算。

对于正在构建订阅计费功能的 SaaS 创业者来说，通常更好的做法是使用内置按比例计费功能的计费平台，而不是从零开始实现。与使用经过实战验证的系统相比，投入额外时间开发自定义按比例计费逻辑，几乎从来都不值得。

[Dodo Payments](https://dodopayments.com) 将按比例计费作为订阅计费基础设施的一部分，默认采用适合大多数 SaaS 的按自然月、按天计算以及升级立即计费模式。有关实现细节，请参阅[订阅文档](https://docs.dodopayments.com/features/subscription)；如需比较自行运行计费系统的成本，请参阅[定价页面](https://dodopayments.com/pricing)。
---
- [More Subscription Billing articles](https://dodopayments.com/blogs/category/subscription-billing)
- [All articles](https://dodopayments.com/blogs)