Skip to content
返回变现与收入

计费周期

如何在月付和年付间选择,及如何给年付折扣定价以最大化现金流和留存。

为什么

计费周期决策是现金流与转化的权衡。年付给你 12 个月现金前置(改善跑道并降催收开销 12 倍)并锁用户一年(降流失 20-40% 因年中不能不问就取消)。代价是结账转化打击 — 348 美元/年感觉比 29 美元/月多即使一样,所以须给折扣(通常免 2 个月,348 → 290)让年付成显然之选。正确设计是两者都展示,默认年付并高亮节省,月付给批不下来年付的用户(企业采购常见)。最差是仅月付,钱留桌上且每 30 天给用户一个易出口。

何时使用

上线时,及有足够数据测年付 vs 月付流失差时。若年付流失不比月付低至少 30%,年付折扣太小。

如何做

1. 设月价为锚(29 美元/月),年价算为月价 10 倍(免 2 个月)— 290 美元/年,显示"$24/月 年付"
2. 定价页展示开关(月付 | 年付)默认选年付,节省("省 58 美元/年")绿色
3. Stripe 中同 Product 建两个 Price:一个 interval=month,一个 interval=year 且 unit_amount 为月 10/12
4. 用户选周期时传对应 price_id 到结账 — 不在 app 算折扣,让 Stripe 为唯一真相
5. 周期中切换(月→年)用 stripe.subscriptions.update 开 proration — Stripe 抵未用月时间并收年按比例
6. 年续费前 14 天发续费提醒 — 忘取消被续费的年付用户是拒付第一来源
7. 跟踪年付采纳率(目标 > 新订阅 60%);低于 40% 则增折扣到免 3 个月
8. 企业给多年(2-3 年)承诺再折 10-15% — 锁收入降销售周期压力

示例

# Stripe:一个产品两个价格
const product = await stripe.products.create({ name: "Pro" });
const monthly = await stripe.prices.create({
  product: product.id, unit_amount: 2900, currency: "usd",
  recurring: { interval: "month" },
});
const annual = await stripe.prices.create({
  product: product.id, unit_amount: 29000, currency: "usd",   # 10 倍月 = 免 2 个月
  recurring: { interval: "year" },
});

# 定价页开关
<label class="toggle">
  <input type="checkbox" checked={isAnnual} onChange={toggle} />
  年付 — 省 58 美元/年
</label>
<p>{isAnnual ? "$24/月 年付" : "$29/月"}</p>

# 周期中升级 月→年
await stripe.subscriptions.update(sub.id, {
  items: [{ id: sub.items.data[0].id, price: annual.id }],
  proration_behavior: "create_prorations",
});

常见问题

  • ⚠在 app 而非 Stripe 算年付折扣 — 你显示 290 但 Stripe 收 348 因 price_id 指错 Price。始终让 Stripe 价格为唯一真相。
  • ⚠年续费前不发续费提醒 — 用户忘订阅被续 290 美元并发拒付。14 天提醒邮件砍此类拒付 90%。
  • ⚠定价页默认月付 — 用户选默认,默认月付把年付现金流留桌上。默认年付并高亮节省。

最佳实践

  • ✓给 2 个月年付折扣(10 倍月)— 这是年付感觉明显划算又不让太多收入的甜点,多数成功 SaaS 用此。
  • ✓年付节省同时显示百分比和绝对额 — "省 17%(58 美元/年)"胜过单独,因部分用户锚百分比部分锚美元。
  • ✓年付降月付的用户问为何(一题调研)— 答案通常"价格"或"对产品不确定",两者可修。