入门指南
免费试用上线前:两套机制、四种终态、一条卡组织硬要求
按 Stripe 公开文档拆开免费试用:订阅级试用期与按项目的 Trial Offer 不能混用;收不收卡、到期无卡怎么办、提醒邮件与账单描述符各有默认值,默认值不等于你的策略。
试用是一个期限;收卡、终态与提醒是三件独立的事。

先看答案
- 适合谁
- 做订阅制软件、会员或托管服务的一人公司
- 第一次配「7 天免费试用」的人
- 被客户问过「试用结束后为什么直接扣钱」的人
- 你会获得
- 先把「免费多久」和「到期发生什么」分开,再谈试用转化。
- 发布时间
- 实质更新
- 发布
- AOPC 编辑部
60 秒结论
一分钟看懂这篇文章
试用是一个期限;收卡、终态与提醒是三件独立的事。
人负责
- 决定收不收卡
- 选到期终态
- 排提醒与描述符
AI 负责
- 核对两套机制能否混用
- 检查状态与账单锚点
- 核对沙箱不发邮件
- 分清机制
- 决定收卡
- 选终态
- 补提醒与描述符
直接答案
「免费试用」在计费系统里不是一个开关,而是三个彼此独立的决定:
- 免费多久、免哪些东西 —— 是整个订阅免费,还是某个订阅项目按 0 元或折扣价先跑一段;
- 开始时要不要先收支付方式 —— 收了,到期能直接扣;不收,到期就得有个「没有卡」的预案;
- 到期那一秒系统替你做什么 —— 开票、取消、暂停,还是什么都不做。
这三件事的默认值,与你对外宣传的「7 天免费,之后 $20/月」并不是同一套语言。客户听到的是承诺,系统执行的是配置;两者没对齐,就会在第七天产生一封「我没同意扣款」的邮件,或者一个永远停在暂停状态、既不扣钱也不断服务的订阅。
本文以 Stripe Billing 的七份公开文档为例(2026-10-25 读取),只做一件事:把「页面写了什么」和「你必须自己决定什么」分开。字段名换成别家计费系统会不同,但这三层结构可以直接搬去核对。
一、先分清两套机制,它们不能混用
Stripe 现在有两条给试用期的路径,官方对照页开头就写明:
There are two ways to give customers a trial period on a subscription before paying the regular price:
- Trial Offer(试用报价):给单个订阅项目一个免费或付费的引入价,到期后该项目转到配置好的正式价;
- Free trial period(免费试用期):用
trial_period_days或trial_end让整个订阅在一段时间内免费。
对照页给新集成的建议是:
For new integrations, we recommend using trial offers.
但「推荐」不等于「可以随手换」。两套机制的差异,恰好落在最容易出事的地方:
| 维度 | Trial Offer | 免费试用期 |
|---|---|---|
| 作用范围 | 每个项目各自有试用起止;同一订阅可以一部分项目在试用、一部分正常计费 | 整个订阅所有项目一起免费 |
| 计费模式 | 必须 flexible billing mode |
classic 或 flexible 都行 |
| 与另一套的关系 | 不能与 trial_end / trial_period_days 同时用 |
不能与 Trial Offer 同时用 |
| 试用期价格 | 可以是 0 元,也可以是折扣价 | 订阅的周期性费用在试用期内免费 |
| 时长能否改 | 「You can’t modify the trial length after you create the subscription or schedule trial extensions and reductions.」 | 可以改 trial_end 提前结束,也可以在前一个试用结束后再加一个 |
| Checkout | 只在 private preview 下支持 | Checkout、Pricing table、Payment Link、Elements 都支持 |
| 门户 | 可以查看、取消、恢复已排期取消的订阅;试用进行中不能改、暂停、恢复 | 客户可在试用期内补卡;配置了就能恢复「到期无卡被暂停」的订阅 |
三句必须一起读的限制:
You can’t use trial offers and the legacy trial_end parameter together.
You must make the post-trial price different from any price already on the subscription.
Stripe removes the trial offer from the subscription after the trial ends.
翻成运营语言:
- 不要试图「先上免费试用期,以后再迁到 Trial Offer」:同一个订阅上两者互斥,迁移意味着新订阅或明确的切换动作,历史数据与客户预期都会断一次。
- Trial Offer 需要两个独立的价格对象(试用价 + 正式价),且正式价不能和订阅上已有的价格相同。这不是「打个折」那么简单,而是多了一套要维护的价目。
- 试用结束后 Trial Offer 会被移除,而且是逐项目的。文档同时承认一个空白:「There’s no native way to schedule deletion of a single subscription item when its trial ends.」如果你的试用项目是「AI 加量包」,到期后想让它消失,得自己在事件里删,系统不会替你排期。
还有一个容易忽略的运维差异:Trial Offer 要求 API 版本 2026-09-30.endive 或更高,且订阅计划(subscription schedules)只在 public preview、只能用 API 配。换句话说,「我现在用的是旧版本 SDK」本身就是一条上线阻塞项。
二、收不收卡:默认是收,不是不收
这是最常被写反的一条。Checkout 文档的原话是:
By default, Checkout Sessions collect a payment method to use after the trial ends.
要「试用期不收卡」,必须显式传:
You can sign customers up for free trials without collecting payment details by passing
payment_method_collection=if_required.
所以「免费试用不用填卡」不是默认体验,而是一个你主动打开的选项。它带来的是转化率上的便利,同时把风险推到第七天:到期时你手上没有任何支付方式。
Checkout 页还给了时长上限,以及长试用期自身的成本:
The maximum free trial length is 2 years (730 days), but most businesses use shorter trials, such as 30 days.
页面列出的两个长试用期问题是「卡在首次扣款前过期」与「转化率更低」。这里没有给任何具体数字,也不要替它编一个——它只是一句定性提醒:试用期越长,卡过期的概率越高,而你对这笔收入的预测越不可靠。
「暂停」有两个,别混
到期没卡时,系统要有一个终态。但「暂停」在 Stripe 里指两种完全不同的东西:
暂停订阅(missing_payment_method=pause) |
暂停收款(pause_collection) |
|
|---|---|---|
| 订阅状态 | 变为 paused | 不变,仍是 active |
| 是否继续开票 | 不开 | 继续生成发票 |
| 是否扣款 | 不扣 | 不扣 |
| 是否有发票邮件/事件 | 无 | 无 upcoming invoice 邮件与 webhook |
| 客户是否还能用 | 由你决定(文档建议此时可收回权限) | 保留访问权,相当于宽限期 |
Checkout 页对第一种写得很明确:
When a subscription is paused, it doesn’t generate invoices (unlike when a subscription’s payment collection is paused).
并且:
The subscription can remain paused indefinitely.
「可以无限期暂停」是一句运营警告,不是一句功能说明。它意味着如果你不人工处理,这个订阅会一直挂在那里:不产生收入,也不自动结束。文档同时提醒,恢复它不是免费的:
Resuming a subscription might generate an invoice and corresponding Payment Intent that must be paid before the subscription moves out of the paused status.
客户补卡后点「恢复」,很可能立刻看到一张账单——如果客服话术里没写这一句,这张账单就会被当成「偷偷扣款」。
三、到期那一秒:四种走向,两种默认值
把两套机制放在一起看,到期终态其实有四种,而它们的默认值并不一致:
| 终态 | 怎么配 | 结果 | 谁把它当默认 |
|---|---|---|---|
| 开票 | create_invoice |
生成发票;付不了就进入 past_due |
Trial Offer 的默认 |
| 取消 | cancel |
试用一结束立即取消;客户以后想要得新建订阅 | Checkout 免费试用要你二选一 |
| 暂停 | pause |
进入 paused,不开票,可无限期停留 | Checkout 免费试用要你二选一 |
| 继续正常计费 | 有卡,正常续费 | 按正式价开票 | 收了卡的情况 |
Trial Offer 页把默认值写得很直白:
create_invoice(default): Creates an invoice. If the invoice can’t be paid, the subscription moves topast_due.
这就是「迁移到 Trial Offer」最容易被忽略的行为变化:原来你在 Checkout 里选了 cancel 或 pause,客户到期没卡就结束;换成 Trial Offer 后,默认变成开一张收不到钱的发票,订阅进入 past_due,然后接上你的催收流程。如果你的催收流程本来只服务「老客户续费失败」,现在它会开始处理一批「从没付过钱的新客户」。
三处配套细节:
- 试用结束前的事件:
customer.subscription.trial_will_end默认在结束前 3 天触发;「If the trial is shorter than the configured interval, it triggers immediately.」——3 天试用会在开始时就触发,别把它当「还有 3 天」的可靠信号。 - 账单锚点:Trial Offer 到期转正式价时,
trial_settings.end_behavior.billing_cycle_anchor默认now,即把锚点重置到试用结束那一刻,开一张整期全额发票、不做 proration;选unchanged则保留原锚点,中间那段按比例计费。这两个选择直接决定客户看到的是「整月 $20」还是「$12.9 的零头」。 - 预开票优先:文档写明 prebilling 会覆盖
missing_payment_method,「even ifmissing_payment_methodis set to pause or cancel」。如果你同时用了预开票,别指望到期暂停能生效。
四、付费试用不是 trialing
这条对写代码的人比对付费的人更重要。Trial Offer 页把状态规则单独列了一节:
Free Trials (0 USD): If a subscription only contains trial offers, and all trial offer prices are set to 0 USD, the subscription status is
trialing.
Paid Trials (>0 USD): If the subscription has a regular price item, or the trial offers have a non-zero price, the subscription status will be
active,incomplete, orpast_due.
也就是说,只要你的试用是「首月 $1」这种折扣试用,或者订阅里混着一个正常计费的项目,订阅根本不会进入 trialing。而很多自建系统的开通逻辑写的是「状态 = trialing → 给试用权限;状态 = active → 给正式权限」。在这套逻辑下,付费试用的客户会被直接当成正式付费客户,试用期结束后没有任何状态切换事件可供触发。
文档还补了一句原因:
Because a paid trial requires an immediate successful payment to begin, the subscription follows the standard PaymentIntent lifecycle.
付费试用从第一天起就走正常支付流程,所以「试用」在账单系统里只是一段价格安排,不是一个特殊状态。你的权限系统、用量限额、催收邮件如果都挂在 trialing 上,就需要另找信号(例如项目上的 trial 起止时间)。
两条分析口径也顺手记下:
- MRR 不算试用项目:「trial offer items don’t contribute to MRR while they’re in a trial period」,但同一订阅上的其他项目照常计入。
- 试用与转化的计数粒度不同:Trial Offer 按项目统计,免费试用期按订阅统计。跨机制对比「试用转化率」时,分母根本不是一回事。
五、卡组织的要求,最后落在两个字段上
试用不是你和客户之间的私事。合规页开头就写:
You must comply with card network requirements when you use trial offers.
具体到可执行的动作,其实只有两件:
① 结束前提醒。 开启 Stripe 托管邮件后,「we send a reminder 7 days before a trial ends」;短试用有特殊规则:
If a trial is less than 7 days, we send the reminder email as soon as the trial begins. If trials renew, we send another reminder email.
同时开两种提醒时,客户只会收到一封:
If both trial reminders and subscription renewal reminders are enabled during a trial, customers only receive the trial ending reminder.
② 账单描述符(statement descriptor)。 这一条几乎没人提前想到,但它会改掉你印在客户银行卡账单上的名字:
Statement descriptors have a 22 character limit, so anything after the 10th character is overwritten with
* TRIAL OVER.
也就是说,描述符超过 10 个字符的部分会被这行字覆盖。如果你的品牌名是 12 个字符,客户在账单上看到的是前 10 个字符加 * TRIAL OVER——能不能认出是你,得自己在手机银行里看一遍。手动设置过发票描述符的,试用文字要自己加;用产品描述符或账户描述符的,系统会自动追加。还有一条时限:促销结束后要改最新发票的描述符,「within an hour of its creation while it’s still in draft status」。
沙箱里验证不了这件事
三份页面里有两份明确写着:
We don’t send trial reminder emails in a sandbox.
但客户邮件页在「Test your configuration」一节里,又把「Trial ending reminders」列进了沙箱中用团队确认邮箱可以触发的邮件类型。两处口径不一致,页面都没有解释。
正确的做法不是选一个相信,而是不要用沙箱结果推断线上行为:沙箱没收到,不代表线上不发;沙箱收到了,也不代表线上一定按 7 天发。要确认,只能看真实环境的邮件日志——「logs for emails sent within the last 60 days」,且日志每天更新、不含当天。
六、防重复试用,只有一个可配置的开关
Trial Offer 页把「reduce trial abuse」写进了用途列表,但那一页没有给出任何机制。真正能配的是另一个功能:一个客户只能有一个活跃订阅。
它的判断依据是:
Stripe uses either the Customer object (if you provide it in the Checkout Session) or the email address to detect if a customer already has an active subscription.
「活跃」包含四种状态:Active、PastDue、Unpaid、Paused。注意 Paused 也在内——一个到期没卡被暂停的订阅,仍然会挡住同一个人再开一次试用。这正是它比「按邮箱查历史订单」更实用的地方。
它还有两个必须知道的边界:
- 它只作用于 Checkout、Pricing table 与 Payment Link,不是账户级风控;绕过 Checkout 直接调 API 不受这条约束。
- 它依赖客户门户的登录链接:「Disabling the login link disables this feature, which means that customers can create multiple subscriptions.」关掉登录链接,这个功能就静默失效——不会报错,只会开始出现重复订阅。
所以「防滥用」不是一个勾选项,而是一条链:邮箱或 Customer 身份 → Checkout 拦截 → 门户登录链接保持开启 → 人工看一眼同邮箱的重复订阅。
七、一张上线前对照表
| 决定 | 你要填的值 | 默认值是什么 | 默认值适合谁 |
|---|---|---|---|
| 用哪套机制 | Trial Offer / 免费试用期 | 无默认,二选一 | 新集成、按项目试用 → Trial Offer;只用 Checkout 且不想上 flexible → 免费试用期 |
| 试用多久 | trial_period_days 或 trial_end |
无默认 | Checkout 上限 730 天;短期试用更适合大多数产品 |
| 收不收卡 | payment_method_collection |
收 | 想筛掉「随便试试」的人就保持默认 |
| 到期无卡 | missing_payment_method |
Trial Offer:create_invoice;Checkout 试用:必须二选一 |
低价产品可用 cancel;高接触销售可用 pause |
| 账单锚点 | billing_cycle_anchor |
now(整期全额) |
希望客户从试用结束日起算一个完整周期 |
| 提醒邮件 | 后台开关 + 托管页链接 | 关 | 面向消费者的订阅应当打开;短试用会在开始时就发 |
| 描述符 | 账户/产品/发票级描述符 | 自动追加 * TRIAL OVER |
品牌名超过 10 字符的,必须实测账单显示 |
| 防重复 | 一个客户一个活跃订阅 | 关 | 有免费试用就该开;并保持门户登录链接开启 |
八、五种常见误读
「免费试用默认不用填卡。」 反了。Checkout 默认收卡,if_required 才是例外。
「试用结束=取消。」 不是。Trial Offer 的默认是开票进 past_due;免费试用期要你在 cancel 与 pause 之间选。三个终态对客户的影响完全不同。
「暂停就是不收费也不用管。」 暂停期间确实不开票,但文档写它可以无限期停留,恢复时可能立刻生成一张要付的发票。它是待办,不是终点。
「付费试用也是 trialing 状态。」 不是。只要有一个非零价项目,状态就是 active / incomplete / past_due。挂在 trialing 上的权限与邮件逻辑会整段失效。
「沙箱能验证提醒邮件。」 两份页面明确说沙箱不发试用提醒,第三份页面又把试用提醒列进沙箱可触发项。别用沙箱结论替代线上核对。
九、这周能做的五件事
- 把「免费多久」和「到期怎么办」写成两句人话,贴到定价页与结账页;两句都要能被客服直接念出来。
- 在测试模式走一遍「有卡 / 无卡」两条路径,分别记录订阅状态、是否开票、客户看到什么。
- 检查你的权限逻辑是否只认
trialing;如果是,补一个按项目试用起止判断的分支。 - 用手机银行看一眼试用期的账单描述符,确认前 10 个字符还认得出是你。
- 确认门户登录链接是开着的,再决定要不要开「一个客户一个活跃订阅」;关着的话,这个开关等于没开。
来源
- Configure trial offers on subscriptions – Stripe Docs核查于 2026/10/25
- Compare trial offers and free trial periods – Stripe Docs核查于 2026/10/25
- Configure free trials for Checkout – Stripe Docs核查于 2026/10/25
- Manage compliance requirements for trials and promotions – Stripe Docs核查于 2026/10/25
- Customer emails – Stripe Docs核查于 2026/10/25
- Pause payment collection – Stripe Docs核查于 2026/10/25
- Limit customers to one subscription – Stripe Docs核查于 2026/10/25