You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Stripe订阅模式下如何设置下次发票的扣款日期

Stripe订阅调整下次扣款日期实现方案

核心是通过修改订阅的billing_cycle_anchor(账单周期锚点)参数实现,这个参数直接控制订阅后续所有周期的扣款出账日期,操作时机刚好匹配你已配置的invoice.payment_succeededwebhook监听逻辑,具体步骤如下:

1. Webhook事件过滤,定位首次支付场景

收到invoice.payment_succeeded事件时,先做两层校验,避免逻辑误触发:

  • 校验invoice.billing_reason字段值为subscription_create,确认这是用户首次订阅支付成功的首张发票,排除后续续费触发的同类型事件
  • 从事件payload中取出invoice.subscription字段值,即为需要修改的目标订阅ID

2. 计算目标扣款时间

按照你的业务规则计算需要的下次扣款时间,转成秒级Unix时间戳(Stripe API要求的时间格式)。
以你提到的「1个月周期,首次支付后下次扣款调整为当月月底前3天」为例:

  • 取首次支付成功的时间所在自然月,计算当月最后一天的0点时间戳,往前推3天即为目标时间
  • 必须校验计算出的时间晚于当前时间,否则API调用会报错

3. 调用更新订阅接口完成修改

调用Stripe的更新订阅API,传入两个核心参数:

  • billing_cycle_anchor:上一步算好的目标时间戳
  • proration_behavior:如果不需要因为周期调整向用户补收/退差价,直接设为none即可

请求参数示例:

{
  "billing_cycle_anchor": 1735392000,
  "proration_behavior": "none"
}

关键注意点

  • 不要在创建Checkout Session阶段提前设置billing_cycle_anchor,该参数会直接影响首次支付的出账时间,不符合你「首笔支付完成后再调整」的需求
  • 锚点设置完成后会永久生效,后续所有续费都会按照这个日期出账扣款,比如你设置为每月28号扣款,之后每个月都会固定在28号发起扣款,不需要重复修改
  • 如果你只是需要临时调整单次扣款日期,不需要永久修改续费周期,不要用这个方法,改用订阅日程(Subscription Schedule)做单次周期调整即可
  • 如果计算出的目标时间早于订阅原本的下次扣款时间,且你设置了proration_behavior=none,不会产生任何额外费用,也不会影响用户已经支付的首周期权益

内容的提问来源于stack exchange,提问作者user2219071

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 20:21:37