Stripe, Place a hold on a payment method

Hello,

Can someone explain me how to emplement : placing a hold on a card and retrieve it. I found only found this: Place a hold on a payment method | Stripe Documentation
But i still don’t know how to make it happen whit bubble.

What i want to do is : Users can choose a subscription, render their cards but they are not debited. I want to choose if i accept the user or not, if i say yes then the user is charged. If i say no it’s canceled. So in my eyes placing a hold on a card is the best option but i don’t know how to make it.
If you have any advice or links, that will be a big help thank you

anyone ? :frowning:

Hi @ziryukochi have you find solution to this? I have a same feature exaclty like yours but didn’t know how to implement it,

Any solution?
Thank you

Hey man,

I found nothing, no yt videos, no information on the forum :frowning:

If you or someone find something please tell me.

Thank you and have a good day

i dont know if it macth with what you needed but the basic is same,

when i found fix solution, i ll reach you again.

Thank you, i will watch it.

It’s just a matter of terminology in stripe.

What you want is to create a ‘payment intent’ for the particular ‘payment method’ and tell it to only authorise.

Then later on you ‘capture’ the payment intent which makes the actual payment (otherwise it cancels in x days).

Yes but how to set it on bubble ?

Hi @NigelG can you give us a tutorial how to implement that? So far i use the stripe plugin to do that, but when it comes to transfer to seller it always failed,

  1. When it transfer to seller on the test mode, is the account need to be enable first? All my test seller account has a restricted status,

  2. What the workflow need to write to retrieve the transaction history of the seller to display

Very need solution to this, thank you before.

1 Like

Not immediately, and there may well be simpler ways of doing this via plugins.

But this is how you do it via the API connector (again, this is not the most straightforward way, but I like to be in control) when you have a stripe customer signed up but need to delay payment/collection.

When the customer signs up and connects their stripe account, save their customer id.

When you want to request payment.

Grab the customer’s list of payment methods.

Grab the customer’s default payment method.

Create the payment intent (payment method is either the customer default, or the first one in the list of methods).

Note you can set the “description” here to whatever you want. Save the payment id created.

Capture the payment via the payment id.

Then the webhook will fire for both the payment hold (if you set it up to do so).

image

And the capture (with the description and the customer).

image

(ignore the Return AB Info - this app is calling another Bubble app with the results of the webhooks).

Hello,

I am trying something now that seems working for me, here are the steps:

  1. Install Stipe.js 2: Stripe.js 2 Plugin | Bubble

  2. Add your API keys to the plugin

  3. Add Stripe Token from Element Tree anywhere on the page

  4. Create 2 fields in your database: StripeCustomerID and StripeIntentID

  5. Go where you want the charge to be held and add an action to Create Customer pass the customer id from the action to current user StripeCustomerID. and right after the create customer action add action Convert card into StripeToken A.

  6. Add a new event StripeToken A has been created.

  7. inside it add Stripe.js - Card - Create action put the Customer ID from Current User StripeCustomerID and token be This Stripe Card Token

  8. After the previous action add Stripe.js - PaymentIntent - Create and set the CustomerID from current user, amount, currency code and 2 important options are:
    a. Capture now: no.
    b. Confirm now: yes.
    c. off session: yes.

  9. after the previous action add a new action “Make changes to current user” and fill the StripeIntentID with the result of the Stripe.js - PaymentIntent - Create action ID

  10. Now when you test you will see the payment in stripe with a status incomplete.

  11. Go to the approval button on your dashboard where you want to capture the payment and add action: Stripe.js - PaymentIntent - Capture, this will make the payment status be capture and it will get you the money.

For any further inquiries, we can support at https://quodless.com

Hope this helps!

Does this method allow you to hold funds for more than 7 days?