Verfication multiple times using 3DS

Hey, I wanted to know, Is there any method in square for future payments using 3DS. Actually, in my app, we save the card first during booking and charge later when the booking is completed. I have implemented 3DS using verifyBuyer() function. But, as much I know, It requires verification two times, one during saving the card and also for charging the card. I mean, we do not charge the customer when they are in checkout flow. It would be difficult for us to take verification for charge. Is there any way to handle or deal with this case. Also, I wanted to know, do we need to verify every charge?

Currently, I am testing 3DS2 on sandbox and I need to verify two times. Firstly, when I save the card and secondly, when the booking is charged from the same card.

While charging the card, In create payment api, I need to pass the verification_token perimeter and if I do not pass the same, I receive an error message stating, “Card nonce already used with a different idempotency key; please request new nonce.”

Wanted to clarify, In real scenario, the customer will receive the verification request only when the payment is high risk and for no risk payments, do we need to pass the verification_token?

Yes, you have to call verifyBuyer() twice but you only need your customer to go through the verification process once when saving the card on file. The second time you can use the customer_id to get and pass in the customer information for charging a card on file with verifyBuyer(). Here is the link to our quickstart example of charging a card on file with a customer_id and call verifyBuyer(). :slightly_smiling_face:

Thank you @Bryan-Square for reply.