0
votes

With Stripe, how to use the payment method created from setup intent for multiple customers?

According tp the Create Setup Intent API, it only let us define one customer ID.

param name: customer (optional)

description of this param: attached to the Customer on successful setup. Payment methods attached to other Customers cannot be used with this SetupIntent.ID of the Customer this SetupIntent belongs to, ifone exists. If present, the SetupIntent’s payment method will be

TLDR

I want to let the same user to reuse same payment method to subscribe items with different presentment currencies,

I assume I should solve this requirement by directly creating multiple customer objects for a single user, and using create Setup Intent API to attach his/her same payment method for multiple "customer objects".

But, I am not sure if this is possible, therefore I welcome any recommendation for alternative approaches, such as using attach payment method to customers API, or any workarounds.


PS: Detail info (for why I am interested to ask this question)

Business requirement:

My business requirement is that customers have to subscribe to international services that must be presented with different presentment currencies. To makes thing even harder, each customer has to use the same list of saved payment methods to subscribe to services with different presentment currencies in the future. In other words, users should not have to re-enter card info again if they subscribe to items in different presentment currencies.

Limitation of the Stripe API:

  1. Why not just use single customer object for subscribing to services (aka "price" objects) with multiple presentment currency?

I tried and it results in an error. According to this Stripe documentation, it indeed says that each customer can only be used for transactions in single currency. If the user in my app want to subscribe to another service with another currency, I need to create new "Customer" object in Stripe.

  1. Why not just use /v1/payment_methods/:pm_id/attach api to attch payment method to multiple customer object?

Because according to this Attact payment method to customer API doc, Stripe does not recommend, yet I do not fully understand the risk of not performing any necessary steps as it warns. Therefore, it is just my risk averse instinct to avoid this.

To attach a new PaymentMethod to a customer for future payments, we recommend you use a SetupIntent or a PaymentIntent with setup_future_usage. These approaches will perform any necessary steps to ensure that the PaymentMethod can be used in a future payment.


1

1 Answers

1
votes

This is not supported. A payment method can only be consumed once if not attached, and attaching to a customer counts as a consumption. A PM can only be attached to a single customer, so you'll need to collect the payment details for each.

Stripe recommends using that customer's currency for all presentment to optimize for their experience, though that may not be suitable for all use cases.