#devangbhuva97-3ds
1 messages · Page 1 of 1 (latest)
@mellow tartan hi! yes you need to complete the payment on the frontend.
Want to confirm every transaction from server side.
that's impossible I'm afraid! 3D Secure is a client-side action and you need to handle it on the frontend, you should follow https://stripe.com/docs/billing/subscriptions/elements and use our stripe.js library to collect the card details and complete 3D Secure withconfirmCardPayment.
Yes 3D secure is a client side action but is there any way to confirm payment from server side because we need to perform some action action before & after
Our flow is little dynamic. Customer can choose recurring or one time products & we are using setupIntent for off session payment
For one time products, we are able to figure out. There is confirm payment intent API to confirm payment from server side. So after 3D secure verification, we are calling that when we want to charge
yes that's manual confirmation (https://stripe.com/docs/payments/accept-a-payment-synchronously)
but not able to find similar way for subscription
we don't really support that in the Subscription API though.
yep we don't support it, that way of integrating is more of an 'escape hatch' for legacy integrations; you should build things according to our docs where the payment actions all happen client side instead and then use webhooks for any server-side actions, sorry!
If customer will choose 2 subscription products, then it's required authentication for both subscription for card 4000002500003155?
I'm little bit confused on setupIntent & paymentIntent use case. When actually setupIntent is really required? Can you also help me to more idea on that? So we can use it in proper direction.
Right now in every flow, we are creating first setup intent.
I read doc - setup intent will be used for off session payments
When actually setupIntent is really required
when you accept the card from the customer now, but won't charge it until later(hours/days later)
So if we create subscription, then setup intent is required before that? or it'll manage automatically in next billing cycle?
you don't really need a SetupIntent, since confirming the PaymentIntent of the first invoice is all you need to do to save the card.
if you're processing a payment now and saving the card, you use a PaymentIntent(it has setup_future_usage field which controls if the card is saved as well; and if you use the Subscriptions API it creates the correct PaymentIntent for you); you only use a SetupIntent if you're saving the card now without charging it and will charge it hours/days later.
Thanks @raw blaze for clear clarification on setup intent. In our case, we are always charging while collecting the card. So not needed setup intent.
4000002500003155 - This card requires authentication on all transactions, regardless of how the card is set up
What is meaning of regardless of how the card is set up ?
How I can setup card, not needed any further verification from customer for next billing cycle or any other payment?
" This card requires authentication on all transactions, regardless of how the card is set up" that's not the description of the 3155 card
it's the description of a different one
yes.. my bad - 4000002760003184
what it means is that even if you use a SetupIntent or a PaymentIntent with setup_future_usage, the card still requires authentication on future off_session payments
whereas the 3155 card lets you test the "happy path" where you authenticate it once, when the customer enters their details, and then future off-session payments process without 3DS.
Yuppp that I got it.. what about 4000002760003184?
what about it?
And when we talk about future off-session payments what is actual meaning?
it means for example the recurring payments of the subscription.
I mean if someone subscribe product using 4000002760003184, in every billing cycle, we need authentication. Right?
yes
One thing I noticed, from stripe dashboard, I can charge from existing saved card 4000002760003184 without authentication
yeah the dashboard gets an exemption
this is the exemption that the 3155 card simulates, and in practise you should get it. The other cards help you test for cases where it doesn't work.
https://stripe.com/ie/guides/strong-customer-authentication#phone-sales the dashboard processes a "MOTO" payment which is why it doesn't require authentication, but that's not really relevant here.
sorry it's my mistake.. I was trying in different card
How to handle this type of cases?
& for 4000002760003184 this type of card, stripe will send email to authentication or we need to handle it from our side. Like listen webhook & send authentication url to customer through email?
it's not related to the products, it's related to the payment. So if you have a subscription using https://stripe.com/docs/billing/subscriptions/multiple-products so it has two products, one for $50 and one for $40, it's just a single payment of $90 and that's what 3D Secure is run against.
but here limitations are all products should be in same billing cycle & same trial period. So we need to create separate subscription for each
then that is multiple separate payments and they'd need separate authentications yes
so I'd really attempt to change your business model to avoid that requirement if you can as it will just cause a lot of difficulty and complexity in the integration
Yes.. we have also same feeling now. It's not that much scalable solution which we have right now.
Thank you so much @raw blaze for clearing doubts within short time. Feel great to talk with you! Have a good day
Hey @raw blaze one more question on indian stripe account
When buyers of your goods or services are located outside India
When buyers of your goods or services are located outside India
How to identify it's services or goods?
It's part for stripe account onboarding?
AFAIK if you pass a shipping address it is a good, otherwise it's a service.
Ohhh that's case 😃
Hey @raw blaze I'm passing billing address in customer & not passing shipping address in payment. But still getting error for indian stripe account
As per Indian regulations, goods export transactions require a billing and a shipping address. More info here: https://stripe.com/docs/india-exports
do you have a request ID req_xxx https://support.stripe.com/questions/finding-the-id-for-an-api-request
this is wrong
well you're charging in USD which makes this an export transaction
therefore it's going to to require a billing address at least(the error message is probably just generic).
the best way to do that is to collect the customer's address and pass it when confirming the SetupIntent/PaymentIntent : https://stripe.com/docs/js/setup_intents/confirm_card_setup#stripe_confirm_card_setup-with_element-payment_method-billing_details
But how we can identify that which account requires shipping address in SetupIntent/PaymentIntent?
As per this doc - https://stripe.com/docs/india-accept-international-payments#international-payments-for-services, if customer accepts payment for service, then require buyer’s name, billing address or description
When buyers of your goods or services are located outside India
& as per this doc - https://stripe.com/docs/india-accept-international-payments#international-payments-for-goods, if customer accepts payment for goods, then require buyer’s name, billing address, shipping address or description
When buyers of your goods or services are located outside India
I saw international payment success without shipping address in couple of indian accounts
I know very little about this part of the API unfortunately. Either way you're not passing a billing address in the example you shared so I'd start by doing that and seeing what changes. The billing address is always needed, you can look at the shipping address later if you still get errors.
@mellow tartan When you mention that you saw some successes, do you have the ids of those PaymentIntents and the ids of ones that fail?
As karllekko said, it's probably the requirements specific to India but we can confirm from examples
@civic wedge success payment intent: pi_1JUsiDLQ5NLthNrHu5UvYsDe
Request id: req_fDEf0do7etphMx
failed payment intent: pi_3JXl3kSBOGpc6PMH0DLjreQ6
request id: req_uDJRC0bnKPaCOi
Is that an international payment? I see the merchant in IN and then the address of the customer is also in IN
(the successful one)
no... success one pi_1JUsiDLQ5NLthNrHu5UvYsDe is $1 payment
merchant is IN but address of the customer is US
Let me clear some confusion here
We have 2 merchants & both merchants are IN & accept international payments
For one merchant, if we pass only address in customer creation, payment will be success
but for second merchant, it will be failed
So we are trying to find different between 2 indian accounts. We will guide our users
OK so let's make sure we're on the same page here. That successful payment (https://dashboard.stripe.com/test/logs/req_fDEf0do7etphMx) was made when that Customer has an address in India (https://dashboard.stripe.com/test/logs/req_IAkGAGjoqap5WA). Does that fit your understanding?
The general rule here is "if the address of the Customer is not in India, you have to provide both a billing and shipping address".
So if you're seeing a case where a payment succeeded when the Customer's address was not in India, that's where I'm wondering what's going on.
https://dashboard.stripe.com/test/logs/req_fDEf0do7etphMx - this customer address is not in India (customer: cus_K9ASk0n31c2Ibm )
Ok... let me create new request with new customer
👍 For that request the most recent update in that Customer's logs set the address to that India address ~2 minutes before the payment
(the Customer later was updated to have a US address, but that was after the payment)
----------------------------new request------------------
Payment intent: pi_1JXlYYLQ5NLthNrHlw0qKAis
Customer: cus_KC9r9RGRpSBai5
I'm pretty unfamiliar with how we set up Indian merchants, but do you know if your account is specified as goods or services? That payment would succeed if it was for services, but I'd expect it to fail for goods.
It should fail for Goods because you need a billing address on the card, yeah.
Sure..
Also share some onboarding doc where customer has to select it's services or goods? Because our almost all customers accept payment for services but due to not aware about this, they by mistake select goods option during onboarding. So we will guide them on that as well how to create stripe account for services
As far as I'm aware, when you onboard in India you go through the export classification steps in https://support.stripe.com/questions/accepting-international-payments-from-stripe-accounts-in-india and the Transaction purpose code there indicates to Stripe whether you're doing Goods or Services. However, we wouldn't know here on the engineering side how that translates to a specific classification. You'd want to contact the support team via https://support.stripe.com/contact to get a definitive answer to how to make sure it's specifically Goods or Services.
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.
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.
(We definitely classify based on that as there are differences between the merchants used in those two requests that succeeded or failed)
Can we get account Transaction purpose code using API?
So based on that, we will pass shipping address in payment intent. We don't want to pass for everyone
I'm not aware of anywhere that you'd see that code in the API.
Looking, though.
We expose MCC (which isn't the same as India TPC) but I'd suggest asking the support team as well. They may have a cheatsheet you can use to map from one to Goods/Services.
Sure.. let me know once you will get mapping cheatsheet from your team
To be clear, I don't have those answers here. You'll need to contact the support team directly via https://support.stripe.com/contact
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.
They will know the exact answers for your account
Ok.. but how will get code from API? I checked account API but there is not that type of data
We don't expose it directly. The support team will be able to answer if there is a way to derive it or get it from the Dashboard, etc.
Ok got it
That may be added to the API down the road but today, it doesn't show.
Thanks @civic wedge for your support!!