#dmitry-card
1 messages ยท Page 1 of 1 (latest)
Hi! So to check the card's country, the payment methods needs to exist on Stripe's end. And then you can see it here: https://stripe.com/docs/api/payment_methods/object#payment_method_object-card-country
So in your case it would need to happen after step 6, which I guess would be too late. So you have two options:
- Ask the customer up front what is the card country
- Or instead of using a PaymentIntent (to make a charge and save the card), use a SetupIntent (to only save the card). Then make a charge only if the card match your criteria.
Earlier in this chat, I was advised against using SetupIntent in this case, because it could lead to two charges in quick succession (one $1 charge for confirming the card, and the other for the actual payment), and that can lead to higer decline rates
As for asking the customer upfront, this doesn't seem reliable. What's preventing the customer from providing false information?
When creating a SetupIntent, no charge should be created.
In general, if you have the choice between doing a PaymentIntent with setup_future_usage and a SetupIntent followed by a PaymentIntent, then yes we would recommend the former. But since you want to check the card country, you should do the later.
I was told by Stripe that SetupIntent can initiate a $1 charge: https://support.stripe.com/questions/unexpected-1-charge-on-customers-bank-statement
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.
Oh right, this may happen, but this is a temporary charge that will disappear from their statement.
Plus, using SetupIntent + confirming the card might trigger a 3DS challenge. And then, when we take the actual payment, in may trigger another 3DS challenge. Two 3DS challenges on one page may be super-confusing for the customer
Hi ๐ jumping in as my colleague needed to step away.
The smoothest way that I can think of to achieve this, is to leverage Radar for Fraud Teams to build block rules that block payments from countries you don't permit.
https://stripe.com/docs/radar/rules#block-rules
But I'm also looking for alternative approaches.
We want to add validation based on our backend business logic (ie enable some countries for certain customers)
Gotcha. I'm doing some testing and it looks like the country of a card payment method is populated as soon as the payment method is created, but I'm not sure how likely it is that it will be updated during validation.
If you want to be sure the information has been validated before using it to make a payment, then starting with a Setup Intent is going to be the best approach. It is possible that doing so could result in two 3DS popups, but you can leverage this flow to minimize the chance of that occurring by making the Payment Intent off_session.
https://stripe.com/docs/payments/save-and-reuse
https://stripe.com/docs/api/payment_intents/create#create_payment_intent-off_session