#LBG-events
1 messages ยท Page 1 of 1 (latest)
Hi, looking to this test event : evt_1KnikRLJLkeHRLt1VJs3TrOO
Why is there a "plan" and a "price" key in the event items.data key ? What is the difference between those 2 ? They have the same id ?
The "plan" key is duplicated" in the object key as well
basically Price is a new(well, since 2019, so new-ish) object that replaces Plan
Plan is still included in the object so that older intergrations using the Plans API are able to still work with the event and not break. It's the same information in both plan and price, just formatted differently. It's for backwards-compatibility.
Ok so I should use "price" then
yep!
Other question: we are using Checkout Session in subscription mode to create a payment_method and a subscription. The subscription created uses the payment_method created at the same time. How to update the payment_method (card) on the customer object AND the payment_method on the subscription object in a SCA way ?
Do we have to create a Session to update the payment_method so the customer can CONTINUE to pay his subscription ?
HI ๐ just to clarify, you're asking if in the future a customer needs to update their payment method, what flow you can build for that?
Hi @nimble kelp. Yes, knowing that there is a subscription using this payment_method
Perfect, there are a couple ways that you can do that.
This guide walks through using Checkout:
https://stripe.com/docs/payments/checkout/subscriptions/update-payment-details
Or, you can look into using the Customer Portal (I need to double check whether this automatically updates a customer's subscriptions, or if that still needs to be handled manually).
https://stripe.com/docs/billing/subscriptions/integrating-customer-portal
Ok, give me a moment to check on those links please
Sorry for the delay while I tested. The Customer Portal flow that I tested did also update the default payment method for a customer's subscription, that had a default payment method explicitly set previously, if the "Use as default payment method" checkbox was checked.
Ok, I'm running some tests
While I am running some tests I have another question. For the subscription I already mentioned, we are using a Volume pricing, with tiers. What is the best way to upgrade or downgrade the tiers of the subscription in a SCA compliant way ?
Updating a subscription like that probably won't cause the user to need to re-authorize by themselves
Updating your subscriptions won't throw any new scenarios at you. As long as you are otherwise collecting card details via our SCA compliant products, you will be okay
What do you mean by "Updating a subscription like that" ?
Do you mean updating the tiers by updating the quantity ?
I was referring to any kind of change that affects the monthly recurring price. I thought your question was mostly about if updating subscription quantities has SCA implications.
If you are referring to this kind of tiered pricing, then yes https://stripe.com/docs/products-prices/pricing-models#tiered-pricing
Are you unclear on how to change the quantity, or are you referring to some other kind of update?
This is what we use. Yes my initial question was does updating quantity could have SCA implications ? Like a new SetupIntent to complete or something else ?
No, it does not have SCA implications. It is ultimately up to a bank when to ask for 3DS authentication, but they don't know when you make a Stripe call to update one of your subscriptions.
Like it could be possible that on the next payment, the bank will ask, but we already reccommend that you are ready to respond if a bank asks for SCA auth on any recurring payment so you will hopefully have that path covered already.
Is your integration currently set up to ask your users to re-authenticate on recurring payments?
All the bank will see is the difference in the payment price, going from 29โฌ/month to 99โฌ/month might trigger a SCA on the issuer side indeed
Well, seeing all our current issues with SCA, I don't think we cover the re-authentication on recurring payments
Do you refer to this :
Yes, that is the easiest way to do it. If you have that setting turned on, you should be covered in this scenario.
If you have that on, as the setting indicates, we will reach out to your users to do 3DS confirmation if a payment requires it.
Do you confirm that the Radar Rules are correct for re-authentication on recurring payments ?
(It's by default I think)
Unfortunatley I am less familiar with Radar. You can reach out to our support team for that question, they can better address whether those rules will suit your needs https://support.stripe.com/?contact=true
Find help and support for Stripe. Our support center provides answers on all types of situations, including account information, charges and refunds, and subscriptions information. Get your questions answered and find international support for Stripe.
Ok, we'll do our own reminder for all failed payment by sending a custom mail with invoice_url anyway
In our current integration, we first create a Session in setup mode to save the customer's credit card as a payment_method. Then, the user can navigate on our front to choose a subscription. Once chosen, we create a subscription on the customer's. Unfortunately we missed the setupIntent completion in our integration (sample: seti_1KkdXRLJLkeHRLt1NjAADvIj)
I guess this SetupIntent is to set the payment_method as off_session, potentially requiring the user's consent with a new SCA authent
We are currently migrating to a Session in subscription so to create the payment method AND the subscription at the same time. We cannot create a Session with payment_intent_data.setup_future_usage = off_session when using a mode = subscription
Do you confirm that Stripe automatically set it as off_session as the mode = subscription ?
Hi ๐ I'm stepping in for @neon trail Give me a minute to get caught up
Hu @plush sonnet
Other question : what is the best webhook event to catch to access to the new payment_method information following a Checkout Session ? checkout.session.completed ?
Or maybe payment_method.attached or payment_method_updated ?
Hmmm ... ๐ค
Checkout sessions will generate the checkout.session.completed as well as payment_intent.succeeded and charge.succeeded events.
What payment method info do you need to extract?
id, card brand, expiring year, last 4 digits, etc.
In that case, the Charge object returned in charge.succeeded will have that data without requiring additional API calls
OK et me try this, thanks
What do you think about this ?
What is the "it" here? This does not make sense to me
I refer to the setup_future_usage for the payment_method created with the Session in mode subscription
Do you have a request ID for the Checkout session creation?
Is this this event ? evt_1KnmkkLJLkeHRLt1dtL0bCWH
I create the Session manually and copy paste the url to a browser to complete the flow
Here's how you can find a request ID: https://support.stripe.com/questions/finding-the-id-for-an-api-request
Find help and support for Stripe. Our support center provides answers on all types of situations, including account information, charges and refunds, and subscriptions information. Get your questions answered and find international support for Stripe.
There is is field in the SetupIntent I sent you
Request IDs start with req_ and it would be a big help
Thank you!
If I am not mistaking, this Session (req_W5audkJzqBDPQS) creates a SetupIntent (evt_1KnmkkLJLkeHRLt1dtL0bCWH) with usage = off_session
So that would set the payment_method in off_session mode, no ?
That is correct
Perfect
What happens if we use a card configured for off_session for on_session payments ?
(with StripeJS confirm payment flow)
Do you mean the same card numbers or passing the actual payment method ID?
payment method id*, sorry, all our payment_methods are credit cards
How are you passing the ID in this case? What API calls are being made?
The customer has to pay his platform subscription, off_session, just like seen previously. But he has to be able to create direct charges to a Connect Standard Account, always on_session. To do this, we create the platform customer on the Standard Account if it does not exists already (clone of the Platform Customer), then we clone the Platform Customer payment_method_id and create a payment_intent between the cloned Customer (on the Standard Account) and the Standard Account using the new payment_method_id created (the clone)
(With StripeJS Confirm Payment by payment method : https://stripe.com/docs/js/payment_intents/payment_method)
Hope I explained well
Hmmm...
No I see what you mean. The cloned payment_method object was created with off_session: true but now the ID is being used for an on-session payment
Yes
Does this affects the original payment_method_id ? Will it stay in off_session mode even though its clones are being used on_session ?
Okay okay okay. I get it now.
Despite being called a "clone", there is no actual relationship between the payment method created on the Platform and the Standard Account. Each is a separate entity
So doing something with the "clone" won't impact the original
Does that simplify things?
Meanwhile, I was doing some tests on this, and unfortunately no charge.succeeded event was generated. But, I can use payment_method.attached to get all the payment method information I need
Ah sorry, at the time I was writing that I was thinking you were using Checkout in payment mode
No worries, do you agree with the fact that payment_method.attached is the best event to catch payment method information after a Checkout Session in subscription mode OR in setup mode (the customer is updating his payment method) ?
Yes that is a good event to listen for since it will cover both uses of the Checkout Session
Ok thank you so much for all the information you provided with your pals, huge help
I'll work on the work flow to update the payment method and will come back to you if needed
๐