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

在Stripe中添加多笔定价并仅给订阅商品设置折扣的问题

解决Stripe订阅折扣仅作用于订阅项、不影响一次性付款的问题

方案1:拆分订阅与一次性付款为两张独立发票

彻底分离两笔费用,让折扣只作用在订阅对应的发票上。

  • 创建带折扣的订阅(仅包含订阅项)
  • 单独创建一次性付款的发票项并生成独立发票
import Stripe from 'stripe';

const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!, {
  apiVersion: '2024-06-20',
});

// 1. 创建带折扣的订阅
const subscription = await stripe.subscriptions.create({
  customer: CUSTOMER_ID,
  items: [{ price: RECURRING_PRICE_ID }],
  discounts: [{ coupon: YOUR_DISCOUNT_COUPON_ID }],
  payment_behavior: 'default_incomplete',
  expand: ['latest_invoice.payment_intent'],
});

// 2. 处理一次性付款
const invoiceItem = await stripe.invoiceItems.create({
  customer: CUSTOMER_ID,
  price: ONE_TIME_PRICE_ID,
});

const oneTimeInvoice = await stripe.invoices.create({
  customer: CUSTOMER_ID,
  collection_method: 'charge_automatically',
  auto_advance: true,
});

// 触发一次性发票付款
await stripe.invoices.pay(oneTimeInvoice.id);

方案2:用优惠券的价格限制实现同发票分离折扣

如果希望两笔费用显示在同一张发票,但仅订阅项享受折扣,可以给优惠券设置适用价格范围。

  1. 在Stripe后台创建优惠券时,找到「适用的价格」选项,只添加你的订阅价格ID(RECURRING_PRICE_ID)
  2. 创建订阅时同时添加一次性项并应用该优惠券
const subscription = await stripe.subscriptions.create({
  customer: CUSTOMER_ID,
  items: [{ price: RECURRING_PRICE_ID }],
  add_invoice_items: [{ price: ONE_TIME_PRICE_ID }],
  discounts: [{ coupon: YOUR_RESTRICTED_COUPON_ID }],
  payment_behavior: 'default_incomplete',
  expand: ['latest_invoice.payment_intent'],
});

这样Stripe会自动识别优惠券仅适用于订阅项,一次性付款不会被折扣。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 07:02:17