SaaS 计费系统设计指南:订阅周期、定价策略与支付集成

SaaS(Software as a Service)产品的核心商业模式是订阅付费。一个优秀的计费系统不仅能确保持续的收入流,还能提升用户体验和留存率。本文从定价到支付,帮你设计完整的计费体系。

一、定价模型设计

1.1 常见定价模型

模型 举例 适合场景
固定定价 $19/月 功能单一的工具
分级定价 $19/$49/$99 功能分层清晰的产品
按用量计费 $0.01/API 调用 API 服务、云服务
按席位计费 $10/用户/月 团队协作工具
混合定价 基础$19 + 按量 有一定用量差异的产品

1.2 定价最佳实践

分级定价的层次设计

Free(免费版)       → 功能有限,吸引用户
Pro(专业版)        → 核心功能完整,大多数用户的选择
Business(商业版)   → 高级功能 + 团队协作
Enterprise(企业版) → 定制化方案

每个层级的价值差异要明显,便于用户选择高一档

关键原则

  1. 价值锚定:最高档定价要足够高,让中间档看起来更划算
  2. 功能递进:每档之间功能差异明显,不仅有量的变化,更有质的提升
  3. 免费版有价值:免费版要真正能解决一部分问题,才能吸引用户

二、订阅周期管理

2.1 计费周期选择

周期 用户偏好 业务优势
月付 灵活、门槛低 获得更多用户
年付 比月付便宜 20-30% 现金流稳定、流失率低
季度付 折中方案 现金流好于月付
按使用量 付多少用多少 高使用量用户付费更多

2.2 年付 vs 月付

年付折扣策略

月付:$19/月 → 年付:$190/年(≈$15.8/月,省 17%)
月付:$49/月 → 年付:$490/年(≈$40.8/月,省 17%)

推荐:同时提供月付和年付,年付给 15-25% 的折扣。一些 SaaS 只提供年付来保证现金流,但这会流失一部分不愿意长期承诺的用户。

三、支付集成

3.1 支付平台选型

需求 推荐方案
简单订阅,全球支付 Stripe Billing
需要税务合规 Paddle / LemonSqueezy
国内业务 支付宝 + 微信支付
复杂计费逻辑 Chargebee / Recurly

3.2 Stripe Billing 配置

// 创建产品和价格
const product = await stripe.products.create({
  name: 'Pro Plan',
  description: '适合个人和小团队',
});

const monthlyPrice = await stripe.prices.create({
  product: product.id,
  unit_amount: 1900, // $19.00
  currency: 'usd',
  recurring: { interval: 'month' },
});

const yearlyPrice = await stripe.prices.create({
  product: product.id,
  unit_amount: 19000, // $190.00
  currency: 'usd',
  recurring: { interval: 'year' },
});

3.3 客户门户(Customer Portal)

Stripe 提供托管客户门户,用户可以在其中管理订阅:

// 创建客户门户 session
const session = await stripe.billingPortal.sessions.create({
  customer: customerId,
  return_url: 'https://yourdomain.com/account',
});

// 重定向用户到门户
res.redirect(session.url);

门户功能:

  • 查看和变更订阅计划
  • 升级/降级
  • 更新支付方式
  • 查看发票历史
  • 取消订阅

四、关键计费指标

4.1 核心指标

指标 含义 健康值
MRR(月经常性收入) 每月订阅收入总和 持续增长
ARR(年经常性收入) MRR × 12 持续增长
Churn Rate(流失率) 取消订阅的比例 < 5%/月
LTV(客户生命周期价值) 单个客户的总收入 LTV > 3× CAC
CAC(客户获取成本) 获取一个客户的成本 CAC < 1/3 LTV
Net Revenue Retention 现有客户收入变化 > 100%

4.2 计算示例

// 计算 MRR
function calculateMRR(subscriptions) {
  return subscriptions.reduce((total, sub) => {
    if (sub.status === 'active') {
      const amount = sub.plan.amount / 100; // 转为美元
      const interval = sub.plan.interval;
      
      // 年付转为月付
      return total + (interval === 'year' ? amount / 12 : amount);
    }
    return total;
  }, 0);
}

// 计算 Churn Rate
function calculateChurn(canceledLastMonth, totalAtStart) {
  return canceledLastMonth / totalAtStart * 100;
}

五、升级/降级处理

5.1 升级策略

用户从低档升级到高档时:

方案一:立即升级(立即生效,按比例计费)
- 用户剩余时间按比例折算到新计划
- 用户体验好,但计费逻辑复杂

方案二:下期生效(周期结束时自动切换)
- 计费简单
- 用户需要等待

推荐:立即升级策略,用户体验更好

5.2 降级策略

用户从高档降到低档时:

推荐:下期生效
- 当前周期内保留高档功能
- 周期结束时切换到低档并降价计费
- 避免用户付费后立即降级的策略性行为

六、衰退流程(Dunning)

支付失败时的自动重试流程:

第 1 天:支付失败 → 发送邮件通知
第 3 天:自动重试 → 再次失败 → 发送提醒
第 7 天:自动重试 → 再次失败 → 发送警告
第 14 天:最后一次重试 → 失败后冻结账户
第 30 天:账户标记为已取消,清理数据
// Stripe 自动衰退配置
const subscription = await stripe.subscriptions.update(subId, {
  payment_settings: {
    payment_method_types: ['card'],
    save_default_payment_method: 'on_subscription',
  },
  collection_method: 'charge_automatically',
});

七、总结

一个好的 SaaS 计费系统需要在用户体验和业务需求之间找到平衡。定价要简单明了,让用户一眼就能理解;订阅管理要灵活,支持多种升级/降级场景;支付集成要可靠,确保收入不中断。建议从简单定价方案开始,随着业务发展逐步增加复杂度。对于大多数 SaaS 创业团队,Stripe Billing + 客户门户是最快上线的方式。