# 网站应该一次性收费还是订阅收费？

URL: https://caijiao.org/posts/218
Source: docs/posts/218.md
Description: Acquire.com 上 SaaS 收购的利润倍数中位数为 3.9x，MicroConf 统计里六成退出落在 1 到 3 倍前瞻年度收入上；一次性买断没有 ARR 可乘，Cakedesk 每年得重新卖出两百多份才能维持收入。

如果三年后有可能把这个项目出手，两种收费方式的区别会先在倍数上显出来。Acquire.com 上 SaaS 收购的利润倍数中位数是 3.9x（2024 与 2025 年都是），公开 SaaS 的收入倍数在 2025 年底降到了约 5.5x。MicroConf 的统计里，60% 的退出落在 1 到 3 倍的前瞻年度经常性收入上，37% 的出售案例团队只有 2 到 5 人。

有订阅收入的项目可以按倍数估值，一次性收款的项目在报表上没有那个乘数——它的收入是已经发生过的事，买家不太愿意为明年重演一次付钱。

倍数之外还有一层更日常的差别。订阅制的收入曲线是抬上去之后缓慢下降，一次性收费是每个月都在爬同一座山：这个月卖出三十份，下个月还得再卖三十份，否则数字就是往下走的。

## €16,000 约等于多少个 $38 月订阅

先把量级对齐。23000 美元 MRR 除以 600 个付费客户得到约 38 美元，这是我从 Data Fetcher 的公开数据反推的客单价，一年就是 456 美元。用 Cakedesk 2025 年那笔约 €16,000 的毛收入去除以它，约等于 35 个这样的订阅客户——这里我忽略了欧元与美元的汇率差，只为对齐量级，实按汇率折算份数会更少。

![Cakedesk 官网首页截图](/images/2026-09/cakedesk.app.png)

*Cakedesk 首页第一屏放了三条五星评价和一段演示视频，再往下才是应用截图。*

35 人和 239 人带来的钱差不多，差别在于明年。订阅那三十五个人下个月大概率还在；一次性买断那 239 个人，明年要从零开始再找一遍。

换个单价再算一次会更有感觉。若按 TinyWow 那种每月 5.99 美元来收，要达到同一量级，需要约 222 个订阅用户——即 16000 除以 5.99 与 12 的乘积（同样忽略汇率）。从二百三十九个一次性买家变成二百二十二个长期会员，工作量听上去差不多，可后者第二年不需要把同样的招数再演一遍。

## 2025 年的 Cakedesk 要从零再找一批买家

2024 年约 170 份，2025 年 239 份，每一份都是一次性成交。要让明年的收入不低于今年，就得再完成同样多甚至更多的新成交。

这也是为什么 Max Schmitt 会撞上那件麻烦事：2024 年跑得通的付费渠道在 2025 年失效，缺口最后靠 Google 自然搜索补上。订阅制把这种冲击在时间上摊薄了——流失每月发生一点点，而不是一年一次性归零。按 5% 的月流失估算（这是我的假设），一批客户的平均生命周期大约二十个月，口碑和迭代都有缓冲的余地。

## 用户那一侧的接受度差别很大

一次性付款的心理门槛更高，六十九欧元在掏钱的那一秒会让人犹豫，可这个犹豫只发生一次。付完之后用户不会每个月重新评估这笔支出，也不会在某个季度为了让账单好看一点而砍掉它。

月费的门槛低到几乎不存在，但它把评估动作变成了习惯：每个月出现在账单上的那一行，都会被重新解释一遍"这东西我上个月用了几次"。Data Fetcher 那 600 个客户能持续付约 38 美元，是因为它替他们每天干活；一个每月打开一次的工具走订阅，就要承担这种反复评估的成本。

取舍因此很清楚：使用频率高、价值能被持续感知的工具走订阅；使用频率低但后果严重的工具，一次性买断更贴近用户的心智。

## 两种收费也可以并存

现实里更多项目是混着来的。terrific.tools 在 2025 年 11 月那个首个完整变现月里，账单上就有两栏：展示广告 174.41 美元，桌面版应用 125 美元，加起来不到 300 美元。广告是按月结算的流水，软件是一次性买断的现货，两者互不冲突。

混合模式的代价是记账变复杂。两条收入线的口径不同——一个按会话、一个按成交——把它们塞进同一张 sqlite 事件表时，最好用不同的事件类型区分开，否则季度对账还得把数字重新拆一遍。

一次性授权的麻烦集中在校验：授权码离线签发与校验、换机器重装怎么办、老版本是否继续提供服务、 refund 之后怎么收回。订阅的麻烦集中在状态机：到期与宽限、升降级的补差价、扣款失败后的重试节奏。

两者其实可以共用一张表。客户、权益、事件这三张表放进 [SQLite](/sqlite/) 就够了，权益表里同时留 `period_end` 与 `license_type` 两个字段，两种情况都能查得到：这台机器授权到哪天，或者这个版本允许用到哪一版。

金额部分一定要用定点数。€69 的一次性收款、38 美元按剩余天数折算这类计算，交给 [decimal.js](/decimaljs/) 处理，自己写的四舍五入迟早会在某个月的账单上露出来。

需要跑服务端的时候，用一个容器把它起起来就够了，[Docker](/docker/) 部署那一套在这里的意义是把发布变成可重复的镜像，而不是为了扛量。

另外两件容易被推迟的事最好一开始就做：自动发出合规的收据或发票，以及把退款路径想清楚。一次性收费的退款意味着收回授权，订阅的退款意味着当天就停机，两者的处理流程并不通用，等到第一封争议邮件进邮箱再补就晚了。

两种收法背后是两种不同的承诺：一次性收的是一个已经做完的东西，订阅收的是接下来这段时间的接管责任。选哪一种，取决于用户那件事到底是一次性的，还是每天都在发生。

---

*数据来源：估值倍数来自 Acquire.com 与 MicroConf 公开统计；Cakedesk 数据来自 Max Schmitt 公开分享；Data Fetcher 数据来自 Andy Cloak 公开披露。*
