#shaun-subscription-3ds
1 messages · Page 1 of 1 (latest)
hey there, this is supported, yes (setting up a PM for future use with a setup intent then using it with a subscription)
can you share the subscription id you're having issues with?
sub_1JkE5WARBDr9i9DALFYDElMV
it was incomplete for some reason when it was created
we use the payment method inside of the setup intent when creating the subscription
any ideas?
just a sec!
Ok yea, so the reason this required auth is because you used the '3184 test card, which always requires authentication: https://stripe.com/docs/testing#regulatory-cards
if you want to test the expected flow with auth on setup then future payments not requiring auth, you should use that first test card 4000002500003155
when set up (as you did here) the subscription wouldnt then be required to auth again
we're trying to test the flow with 3ds auth
oh gotcha
so that card will never work
ok if you want to have it auth each time thats fine, but then you need to confirm the payment intent returned after subscription creation (and future payments will hit this too with the 3184 card)
every payment needs authentication with the 3184 card
it doesnt matter if you set it up
the 3155 card is the one that works with setup for future usage and authentication up front
Ah, alright thanks. My colleague @strange hinge is going to take over to give you a hand -- i need to step away
Hello! Taking a look now, hang on...
To clarify, is your question about why this Subscription is showing as incomplete in the response to this request? https://dashboard.stripe.com/test/logs/req_sVQTq2eP3jmE7Z
correct
If that's the question the answer is the 3155 card requires authentication for all on-session payments, and you didn't specify off_session when creating this Subscription, so it's considered an on-session payment: https://stripe.com/docs/api/subscriptions/create#create_subscription-off_session
The documentation for the 3155 card is here: https://stripe.com/docs/testing#regulatory-cards
This card requires authentication for one-time payments. However, if you set up this card and use the saved card for subsequent off-session payments, no further authentication is needed.
The Subscription is incomplete because authentication hasn't been performed yet.
Does that make sense?
but if the setup intent was confirmed then wouldn't the authentication have been performed?
It was performed during the Setup Intent, yes, but that doesn't mean it won't be performed again. The 3155 card requires authentication for all on-session payments.
Setting it up with a Setup Intent or Payment Intent with setup_future_usage will only impact off-session payments.
Taking a step back, what are you trying to build exactly?
If I know more about your overall goals I can probably give you more helpful guidance.
we're trying to build out a flow where we collect payment in advance and don't actually create the subscription until they perform some separate verification flow (within our backend)
Will the customer be on-session when the Subscription starts after the verification is finished?
what does on-session mean?
They're still there... using your website, using your app, you can still prompt them and they'll take action.
they won't be
Okay, so you need to set off_session when creating the Subscription to let us know they're not there anymore. That way if authentication is required for the Subscription payment we will treat it like a decline instead of waiting for them to perform the required next action.
so in the example i sent above, was there a next action?
One point I want to make clear: card issuers/banks can require authentication for any transaction, even if the card has been set up/authenticated previously. Using a Setup Intent greatly reduces the chance that later off-session payments will require authentication, but it does not eliminate the possibility (nothing can eliminate the possibility).
Yes, in the example above the Payment Intent associated with the Invoice for the Subscription payment has a status of requires_action.
You can see this in your Dashboard here: https://dashboard.stripe.com/test/payments/pi_3JkF9CARBDr9i9DA3ikYEtMb
We treated that the way we did because you did not specify off_session when creating the Subscription.
We thought the customer was still there and could handle authentication through your integration.
So we put the Payment Intent in next_action status, set the Subscription to incomplete, and waited for your integration to present the authentication challenge to the customer so they could complete it.
Happy to help further if you have more questions! It's important to understand these details to build a solid integration. 🙂
ok, i'll try specifying off_session then
let's say it wasn't off-session, the setup intent is being passed from the client to our backend
and we create the subscription from our backend
what would be the next steps for us in that scenario?
If the customer is still on-session and the payment for the Subscription required authentication your integration should take note of that and prompt the customer to confirm the payment client-side (but if the customer is on-session you should confirm the payment client-side to begin with rather than doing it from your server first).
Can you tell me more about why you want to collect payment information prior to the verification and Subscription creation steps?
Is it literally that you just want to collect the payment info, or do you also want to verify it up front as well?
we want to collect payment info and have a decent amount of confidence that it will succeed. The reasoning is we need to verify that they have a special email before applying the subscription to their account.
So they'll go through a separate email verification flow and when they click the verify link from their email we want to create the subscription
they won't be logged in, so we wouldn't have their stripe account to link it to