Validating cards without charging them

I’m working on an app for a client where they can create promos that will then be sent out by influencers. Once an influencer sends out a promo it is desired to pay them for their work. My question comes before all that. The client wants to validate a credit card when a promo is created, before any charge is initiated. I’m using the Stripe.js 2 plugin by copilot to handle all of this, and I’m relatively new to working with it. I’ve looked around Stripe API reference and their documents and I can’t really find an answer. Has anyone figured out if this is even possible?

Use a card number 42424242… with any exp date and cvc code. This while you are in dev mode with Stripe. This will allow you to test without being charged at all.

1 Like

If I’m not mistaken, I think the OP is asking how to validate a card before actually running a live charge on it.

2 Likes

Correct, we need to validate a card every time a data type of promo is created.

Short answers…

Just save the card against the customer, which will validate the card (but not check a balance etc).

If you have the Stripe customer (cu_xxxxxxx) and a payment method (pm_xxxxx)…

then you can use the Stripe API to create a Payment Intent for a nominal amount, which you then never Capture - just like a hotel takes a hold on your card,

Or do the classic … take 1p and then refund it.

The latter 2 you will need agreement from the card holder.

2 Likes

Thank you for the help. This is the method I was looking for!

1 Like

When you say agreement, do you mean something like accepting terms of service?

Yeah :slight_smile:

Telling them that you will take 1p and return it, or whatever you are going to do!

1 Like

Just to expound on @NigelG’s spot-on response, you’ll need to set the capture_method parameter of the Create a PaymentIntent call to “manual”. (I’m not intimately familiar with Stripe.js 2, though, so I can’t provide details on working with that specific plugin.)

-Steve

2 Likes

Ok thanks, just making sure. I’ll get back to my team and hopefully they accept the solution.

And just one more follow-up, does this method need to be done with a payment intent, or could this also be accomplished with a charge?

Placing a “hold” on a card (hotel check-in) you just create a Payment Intent as above.

The Charge is when you take the money (up to the Intent Amount).

If you wanted to take a small amount, then you just charge as normal. You could take a nominal amount and then take that off the final total.

2 Likes

Okay thank you for answering.