入门指南

免费试用上线前:两套机制、四种终态、一条卡组织硬要求

按 Stripe 公开文档拆开免费试用:订阅级试用期与按项目的 Trial Offer 不能混用;收不收卡、到期无卡怎么办、提醒邮件与账单描述符各有默认值,默认值不等于你的策略。

试用是一个期限;收卡、终态与提醒是三件独立的事。

作者
AOPC 编辑部
发布
AOPC 编辑部
发布时间
更新
2026/10/25
核查
已复核
一个人把免费试用的收卡、到期终态与提醒邮件拆成三条并行的处理线
经营者责任与 AI 执行层的关系

先看答案

适合谁
  • 做订阅制软件、会员或托管服务的一人公司
  • 第一次配「7 天免费试用」的人
  • 被客户问过「试用结束后为什么直接扣钱」的人
你会获得
先把「免费多久」和「到期发生什么」分开,再谈试用转化。
发布时间
实质更新
发布
AOPC 编辑部

60 秒结论

一分钟看懂这篇文章

试用是一个期限;收卡、终态与提醒是三件独立的事。

人负责

  • 决定收不收卡
  • 选到期终态
  • 排提醒与描述符

AI 负责

  • 核对两套机制能否混用
  • 检查状态与账单锚点
  • 核对沙箱不发邮件
  1. 分清机制
  2. 决定收卡
  3. 选终态
  4. 补提醒与描述符

直接答案

「免费试用」在计费系统里不是一个开关,而是三个彼此独立的决定:

  1. 免费多久、免哪些东西 —— 是整个订阅免费,还是某个订阅项目按 0 元或折扣价先跑一段;
  2. 开始时要不要先收支付方式 —— 收了,到期能直接扣;不收,到期就得有个「没有卡」的预案;
  3. 到期那一秒系统替你做什么 —— 开票、取消、暂停,还是什么都不做。

这三件事的默认值,与你对外宣传的「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 to past_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 if missing_payment_method is 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, or past_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 上的权限与邮件逻辑会整段失效。

「沙箱能验证提醒邮件。」 两份页面明确说沙箱不发试用提醒,第三份页面又把试用提醒列进沙箱可触发项。别用沙箱结论替代线上核对。

九、这周能做的五件事

  1. 把「免费多久」和「到期怎么办」写成两句人话,贴到定价页与结账页;两句都要能被客服直接念出来。
  2. 在测试模式走一遍「有卡 / 无卡」两条路径,分别记录订阅状态、是否开票、客户看到什么。
  3. 检查你的权限逻辑是否只认 trialing;如果是,补一个按项目试用起止判断的分支。
  4. 用手机银行看一眼试用期的账单描述符,确认前 10 个字符还认得出是你。
  5. 确认门户登录链接是开着的,再决定要不要开「一个客户一个活跃订阅」;关着的话,这个开关等于没开。

来源

  1. Configure trial offers on subscriptions – Stripe Docs核查于 2026/10/25
  2. Compare trial offers and free trial periods – Stripe Docs核查于 2026/10/25
  3. Configure free trials for Checkout – Stripe Docs核查于 2026/10/25
  4. Manage compliance requirements for trials and promotions – Stripe Docs核查于 2026/10/25
  5. Customer emails – Stripe Docs核查于 2026/10/25
  6. Pause payment collection – Stripe Docs核查于 2026/10/25
  7. Limit customers to one subscription – Stripe Docs核查于 2026/10/25

唯一主行动

把下一步变成可执行动作

阅读客服分诊与处理工作流