如何获取Stripe按用量计费订阅的客户/价格组合税率?
解决Stripe计量型订阅提前获取含税价的问题
要给计量型(metered usage)订阅在创建前展示含税价,确实没法用Upcoming Invoice API直接设置数量——毕竟计量型的用量是后续上报的,不是订阅创建时固定的。这里给你两个靠谱的解决思路:
方案一:用Stripe Tax Calculation API直接计算税费
这是最直接的方式,脱离订阅和发票体系,单独计算客户与价格组合的税率和含税金额:
- 确认客户的税务信息:如果客户已经在Stripe系统中留存了地址,API会自动读取;如果没有,调用时需要传入客户的地址参数。
- 获取目标价格的不含税单价和税码(可从价格对象的
tax_code字段获取)。 - 调用Tax Calculation API,传入单价、客户ID、税码并启用自动税,就能直接得到对应的税率和含税金额。
Go代码示例:
taxCalculation, err := tax.Calculation(&stripe.TaxCalculationParams{ Customer: stripe.String(cus.ID), Currency: stripe.String("usd"), // 替换为你的价格币种 LineItems: []*stripe.TaxCalculationLineItemParams{ { Amount: stripe.Int64(1000), // 不含税单价,单位为分(比如10美元填1000) TaxCode: stripe.String("txcd_10000000"), // 从目标price对象获取的tax_code }, }, AutomaticTax: &stripe.TaxCalculationAutomaticTaxParams{ Enabled: stripe.Bool(true), }, }) if err != nil { // 处理错误逻辑 } // 提取税率和含税金额 taxRate := taxCalculation.TaxRate.Percent totalIncludingTax := taxCalculation.TotalAmount
你可以用这个单单位的税费,乘以给客户预估的用量,就能得到预估的含税总价。
方案二:临时创建无用量订阅查税费(备选)
如果不想用Tax Calculation API,也可以临时创建一个计量型订阅(不上报任何用量),再通过Upcoming Invoice API获取税率:
- 创建订阅时只关联计量型价格,暂不上报用量。
- 调用Upcoming Invoice API,传入该订阅ID并启用自动税,就能得到该客户对应价格的税率。
- 创建后立即取消订阅,避免产生不必要的账单和客户通知。
这个方案相对繁琐,还可能触发系统通知(需要额外配置订阅参数规避),所以优先推荐方案一。
内容的提问来源于stack exchange,提问作者jgillich
相关产品推荐
相关产品推荐

