SaaS 计费系统设计指南:订阅周期、定价策略与支付集成
SaaS(Software as a Service)产品的核心商业模式是订阅付费。一个优秀的计费系统不仅能确保持续的收入流,还能提升用户体验和留存率。本文从定价到支付,帮你设计完整的计费体系。
一、定价模型设计
1.1 常见定价模型
| 模型 | 举例 | 适合场景 |
|---|---|---|
| 固定定价 | $19/月 | 功能单一的工具 |
| 分级定价 | $19/$49/$99 | 功能分层清晰的产品 |
| 按用量计费 | $0.01/API 调用 | API 服务、云服务 |
| 按席位计费 | $10/用户/月 | 团队协作工具 |
| 混合定价 | 基础$19 + 按量 | 有一定用量差异的产品 |
1.2 定价最佳实践
分级定价的层次设计:
Free(免费版) → 功能有限,吸引用户
Pro(专业版) → 核心功能完整,大多数用户的选择
Business(商业版) → 高级功能 + 团队协作
Enterprise(企业版) → 定制化方案
每个层级的价值差异要明显,便于用户选择高一档
关键原则:
- 价值锚定:最高档定价要足够高,让中间档看起来更划算
- 功能递进:每档之间功能差异明显,不仅有量的变化,更有质的提升
- 免费版有价值:免费版要真正能解决一部分问题,才能吸引用户
二、订阅周期管理
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 + 客户门户是最快上线的方式。