Stripe 试用期结束时,没有付款方式会怎样
答案取决于商家在 trial_settings.end_behavior.missing_payment_method 里配置了哪个选项。Stripe 在试用优惠结束时读取这一设置,按它决定后续动作,共三种:create_invoice(默认)、cancel、pause。所以“试用结束一定扣款”并不成立——只有 create_invoice 才会尝试生成账单,cancel 或 pause 根本不会走到收款这一步。
三种处理方式分别发生什么
create_invoice(默认):Stripe 生成一张发票。如果这张发票无法支付,订阅转入past_due状态。cancel:订阅被取消并结束。Stripe 发出customer.subscription.deleted事件,商家应据此停止向该客户提供产品访问。pause:订阅进入暂停状态,Stripe 发出customer.subscription.paused事件。暂停期间不会开票,直到订阅恢复。恢复需要显式操作;资料表述为恢复“可能”生成发票和对应的 Payment Intent,并非每次恢复都必然生成。若生成了这笔款项,需付清后订阅才会离开暂停状态。
这个行为在每个试用优惠结束时都会应用一次,不是只在账户层面生效一次。
一个可复算的判断例子
假设某商家把 missing_payment_method 设为 pause,客户在试用期内始终没有绑定任何付款方式:
- 试用优惠到期,Stripe 读取配置,命中
pause; - 订阅转入暂停,触发
customer.subscription.paused; - 暂停期间不开票,也不产生扣款;
- 客户之后补上付款方式,商家显式恢复订阅,此时可能生成发票和 Payment Intent;
- 若生成了这笔款项,付清后订阅才转为活跃。
同一场景下若配置是默认的 create_invoice,第 2 步就换成生成发票;发票付不掉,订阅进入 past_due,而不是暂停。两种配置结果不同,商家的访问控制逻辑也必须跟着不同。
一个容易漏掉的覆盖规则
预计费(prebilling)会覆盖 missing_payment_method 的设置,但覆盖有前提:预计费延伸到试用结束之后。满足这一条件时,即使配置写的是 pause 或 cancel,该结束行为也不再生效,订阅在试用结束后按正常计费周期继续。也就是说,“我设了暂停,所以不会出账单”这个推断在预计费延伸到试用结束之后时不成立。
商家可以执行的核对动作
- 在 Dashboard 或 API 中确认每个含试用优惠的订阅(或价格配置)实际使用的
missing_payment_method值,不要假设它是pause。 - 检查是否启用了预计费、预计费是否会延伸到试用结束之后;若是,重新评估试用结束时的预期行为。
- 核对事件处理:收到
customer.subscription.deleted时撤销访问;收到customer.subscription.paused时可按需要撤销访问,等客户补付款方式并恢复后再授予。 - 区分两类提醒:
customer.subscription.trial_will_end的触发时间由 Dashboard 的 Trial ending events 设置决定,默认是试用结束前 3 天,试用短于该间隔时立即触发;Stripe 托管的提醒邮件(Stripe-hosted reminder emails)则在试用结束前 7 天发出。前者是事件,后者是邮件,不能混为一谈。
另外,含无付款方式试用优惠的订阅与旧式免费试用受相同限制,其中包括不支持按量计费(metered)项目。配置前应确认订阅项目类型是否落在这一限制内。
把上述配置、预计费状态和事件处理三者对齐,才能确定试用结束时客户究竟是被取消、被暂停,还是收到一张可能付不掉的发票。