新 Stripe Checkout 中的税率

Posted

技术标签:

【中文标题】新 Stripe Checkout 中的税率【英文标题】:Tax Rate in new Stripe Checkout 【发布时间】:2019-09-29 13:30:46 【问题描述】:

我在 NodeJS server 上实现了新的 Stripe Checkout,但我无法指定发票的税率

据我了解税率应在Payment Intent API 中指定。事实上,新的Checkout 通过其CreateSession 自动创建Payment Intent(请参阅payment_intent_data),但我无法在创建时插入税率。 p>

如何做到这一点?我想要实现的是让用户知道Checkout UI 和最终email invoice 中的Tax %。

这是我的代码:

return stripe.checkout.sessions.create(
    payment_method_types: [paymentMethod],
    line_items: [
        name: name,
        description: description,
        images: [imageUrl],
        amount: amount,
        currency: currency,
        quantity: 1
    ],
    success_url: successUrl,
    cancel_url: cancelUrl,
    customer: stripeId,
    payment_intent_data: 
        receipt_email: email,
        metadata: 
            userId: userId,
            amount: amount,
            currency: currency,
            ref: ref,
            stripeId: stripeId,
            details: details
        
    
).then(session => 
    return res.send(session)

【问题讨论】:

税率仅适用于 Invoice 对象,这些对象主要与 Subscriptions 一起使用,而不是此结帐会话创建的一次性付款“订单项”。 stripe.com/docs/api/subscriptions/…stripe.com/docs/api/payment_intents/create我可能会通过电子邮件向 Stripe 发送有关此功能的请求! @duck 感谢您的回复。那么有没有办法在一次性付款“行项目”中插入税率? :( 我可以让用户知道收取的税款的百分比吗? 我的意思是,这是一个哈希列表,所以我想您可以为税额添加自己的行项目,但它不会使用 Stripe 的税率 atm @r4id4 我正在寻找相同的设置。您是否设法实现了它,如果是,如何实现? 很遗憾没有 【参考方案1】:

在回答此问题时,Stripe Checkout 不支持税率。

另一种方法是使用“设置”模式 Checkout [1] 收集付款详细信息,然后使用 Checkout 中收集的 PaymentMethod 和您想要使用的税率从您的服务器创建一个 PaymentIntent [2]。

[1]https://stripe.com/docs/payments/checkout/collecting

[2]https://stripe.com/docs/api/payment_intents/create

【讨论】:

w1zeman1p 您能详细说明第 [2] 点吗?我在 PaymentIntent API 文档中找不到任何关于添加税率的参考。 default_tax_ratestax_rates 出现在发票和订阅上,但不在 PaymentIntents 上。 很抱歉给您带来了困惑。 PaymentIntent 允许您指定总金额。因此,您将使用设置模式 Checkout 来存储 PaymentMethod,然后计算您自己的税款并将其添加到小计并创建 PaymentIntent。 谢谢 w1zeman1p,这就是我最终要做的事情 - 计算我的税收应用程序端并将总数发送到 Stripe。我将处理 Stripe 之外的税务文书工作。【参考方案2】:

现在支持条带结帐税率。

从“Stripe.net”35.12.0版本开始,您可以在创建新会话时设置默认税率。

var options = new SessionCreateOptions 
    PaymentMethodTypes = new List<string> 
        "card",
    ,
    SubscriptionData = new SessionSubscriptionDataOptions 
        DefaultTaxRates = new List<string> 
            _STRIPE_OPTIONS.Tax // Your tax rate id
        ,
        Items = new List<SessionSubscriptionDataItemOptions> 
            new SessionSubscriptionDataItemOptions 
                Plan = request.PlanId, // Your plan id
            ,
        ,
    ,
    Customer = customer.StripeCustomerId,
    SuccessUrl = _STRIPE_OPTIONS.SuccessUrl,
    CancelUrl = _STRIPE_OPTIONS.CancelUrl
;

var service = new SessionService();
var session = service.Create(options);

如果您正在使用,请不要忘记更新您的 webhook 版本。

【讨论】:

是的,从文档support.stripe.com/questions/… 阅读,如果我们正在通过模式:付款需要在发送付款之前计算税款。如果需要,我最终将增值税作为一个项目传递。【参考方案3】:

Stripe Checkout 一次性付款的税率现在处于测试阶段,请参阅此处:https://stripe.com/docs/payments/checkout/taxes

您可以通过电子邮件加入测试计划并试用。

目前,请注意,动态税率仅在美国、欧洲和此处指定的某些国家/地区 (https://stripe.com/docs/api/checkout/sessions/create#create_checkout_session-line_items-dynamic_tax_rates) 支持,因此请注意

【讨论】:

以上是关于新 Stripe Checkout 中的税率的主要内容,如果未能解决你的问题,请参考以下文章

Stripe Checkout 会话中的试用期

使用 Python Flask 自定义 Stripe Checkout

Stripe - 如何在 Checkout.Session 中获取账单地址信息

如何在 Stripe Checkout 仅客户端实现中包含元数据?

无法将价格传递给 Stripe Checkout nodejs

如何在 Stripe 的 Checkout 会话中添加试用期