如何在不向客户收费的情况下更新Stripe订阅的结束日期
修改Stripe订阅结束日期且不产生费用的方法
要实现仅调整订阅结束日期而不向客户收费,核心是阻止Stripe计算按比例(prorated)费用,具体操作分两种场景:
场景1:修改订阅的取消结束日期
如果是调整已设置取消计划的订阅终止时间(比如原本计划在X日结束订阅,现在改到Y日),调用订阅更新接口时需指定新的cancel_at时间戳,并设置proration_behavior: 'none'禁用费用计算。
示例代码(Node.js SDK):
const stripe = require('stripe')('你的密钥'); const updatedSubscription = await stripe.subscriptions.update( 'sub_你的订阅ID', { cancel_at: 1719859200, // 新的结束时间(Unix秒级时间戳) proration_behavior: 'none' } );
场景2:延长当前计费周期的结束日期
如果要延长活跃订阅的当前计费周期结束时间(不触发新计费),同样使用proration_behavior: 'none',结合billing_cycle_anchor参数设置新的周期结束时间戳。
示例代码(Node.js SDK):
const stripe = require('stripe')('你的密钥'); const updatedSubscription = await stripe.subscriptions.update( 'sub_你的订阅ID', { billing_cycle_anchor: 1719859200, // 新的计费周期结束时间(Unix秒级时间戳) proration_behavior: 'none' } );
控制台操作方式
如果通过Stripe Dashboard操作:
- 进入目标订阅详情页,点击「Edit subscription」
- 在「Proration」选项中选择「Do not prorate」
- 设置新的结束日期(或计费周期锚点),确认保存即可
注意事项
proration_behavior: 'none'是核心参数,必须添加,否则Stripe会自动计算并生成按比例账单- 时间戳需使用Unix秒级格式,不要用毫秒级,否则会导致时间设置错误
- 若订阅已处于待取消状态,修改
cancel_at时同样需要带上该参数,避免意外触发费用
内容的提问来源于stack exchange,提问作者crivella
相关产品推荐
相关产品推荐

