#Gyan - ACH DD
1 messages ยท Page 1 of 1 (latest)
When you created the checkout session did you specify setup_future_usage for the payment_method_options.us_bank_account parameter?
https://stripe.com/docs/api/checkout/sessions/create#create_checkout_session-payment_method_options-us_bank_account-setup_future_usage
okay i see now i am able to see the paymentMethod added.
So, now when i use the same customer Id next time will it list all the verified bank paymentMethods? let me check
is this how i know that this account is already linked and if i choose this account i will not be charged addition 1.5$ verification fee?
๐ stepping in as Snufkin needs to step away
ok
Yep
It should indicate if you already have a bank account attached.
And the customer won't have to verify that account again
okay, so 2 questions:
-
How can i findout, which transactions i was charged the fee for verification and which transactions i was not charged.
-
I choose the same bank account twice for the same customer Id. First time it was linked and the second time it should ideally just use the same paymentMethod attached to make the payment, but as per the dashboard it attached a duplicate paymentmethod in the customer object
Did you pass setup_future_usage again? I actually haven't tested this flow in a while so I may be mixing things up
yes i have added, i think that is working perfectly fine.
I am probably using wrong approach to charge the returning customer. What should be the exact flow for the returning customers? meaning they have a customer object and a verified bank PaymentMethod attached already.
Yeah exactly
Mostly you would show a UI of their saved paymentmethods
Then you would create a PaymentIntent to charge the saved PaymentMethod
If they select that option
okay and if they want to add another bank account just bring them to the create-checkout-session flow again?
Can you send me the doc link for this?
Yep
Grabbing docs
Though we don't really have any docs on building your own UI
You would do that yourself by listing the Customer's PaymentMethods
And then sending the info you want to your client
In terms of charging later, you would do something like: https://stripe.com/docs/payments/save-and-reuse?platform=ios&ui=payment-sheet#ios-charge-saved-payment-method
it has to be off_session? I have currently set it to on_session. Can on_session not be used to charge the customers this way?
Yes that is fine if the customer is actually on-session.
The example above is assuming you were charging a customer later on after they had provided their payment method details
On_session will mostly dictate that with a card payment they are there to complete 3DS if necessary.
for using on_session, do i have to invoke create-checkout-session again? or just have my own UI, that will display verified bank accounts and onClick of a "Pay" button i will create the paymentIntent and charge the account in the background?
okay, so overall what would you recommend to use on_session or off_session? which is more convnient?
You should use the one that is accurate for what is happening
If the customer is initiating the payment then they are on-session
If you are initiating the transaction and the customer isn't present then off-session is correct
We will optimize conversion based on the scenario
okay, i wanted to know how using on_session will have a benefit, suppose if creating a paymentIntent and charging the customer will fail, in that case how having the customer present there will be able to fix it?
On_session is mostly for if 3DS is required like I said before. Overall if there is a decline or something then you need to do the same thing regardless of on or off_session... you collect a new paymentmethod and try again.
But if you pass on_session and the issuer prompts 3DS, then the PaymentIntent will move to status: requires_action
And then you confirm again using confirmCardPayment with Stripe.JS to handle 3DS
If you have off_session set, and 3DS is required, then the PaymentIntent will just error for authentication_required
And that tells you that you need to bring the customer back on-session and attempt payment again