#donald_best-practices

1 messages ยท Page 1 of 1 (latest)

hardy fogBOT
#

๐Ÿ‘‹ Welcome to your new thread!

โฒ๏ธ We'll be here soon! We typically respond in a few minutes, but in some cases we might need a bit more time (e.g., server's busy, you've got a complex question, etc.).

โฑ๏ธ We close idle threads, which makes them read-only. Once a thread is closed it won't be reopened, but you can start a new thread if you have another question.

๐Ÿ”— This thread will always be available, even after it's closed. You can find it again using Discord's search, or you can save this link: https://discord.com/channels/841573134531821608/1252567774451204177

๐Ÿ“ Have more to share? Add details, code, screenshots, videos, etc. below.

toxic bloom
#

Is this the best way to structure this?
Yes that's an option. Or you save the payment method after you collect the first payment

mighty nexus
#

We only charge the users off-session. When the user creates an account in our app they go through the SetupIntent flow to save their card details, and then when the session ends we use our servers to create a PaymentIntent without the user having to open the app

toxic bloom
#

So yes what you are implementing to good

mighty nexus
#

Thanks!
Also do you have any recommendations for checking the users card is still valid at the start of the session? Ideally we'd like to charge a small deposit, e.g. ยฃ1 before they start the session - however I think if we did two separate transactions then it would be more expensive in terms of stripe fees.
Is there a way to charge a small deposit at the start of the session and then adjust this payment to the full amount at the end of the session? Or are we better just checking the expiry date of the card when starting the session, and hoping it won't decline at the end?

toxic bloom
#

Also do you have any recommendations for checking the users card is still valid at the start of the session?
It depends on the goal here. If you want to make sure that the payment method is a valid one, so no need to do this, because when you collect the payment method with SetupIntent, it's already verified/auth.
If you want to make sure that there is funds available, then you can try placing a hold on the funds https://docs.stripe.com/payments/place-a-hold-on-a-payment-method.
What you can do actually is to place a hold on a Amount (it could be an average of a session cost) and if over cpature is available then you charge the final amount or cancel the hold and create another off-session payment with the final amount:
https://docs.stripe.com/payments/overcapture

mighty nexus
#

Thanks again!

The goal is to ensure as best we can that the payment will go through at the end.
The length of time for a session could vary quite significantly, so we wouldn't want to scare customers who have a short session by placing a large amount on hold. I imagine then that placing a small amount on hold won't help that much with stopping the risk that the payment gets declined at the end?

There also could be a few months between the user initially setting up their account and their sessions, so the main reason for the deposit is to make sure that the card is still valid after this time. Is it a good idea to store the expiry date of the card, and then when we start a session check that it is still valid this way?

toxic bloom
#

I imagine then that placing a small amount on hold won't help that much with stopping the risk that the payment gets declined at the end?
yes

mighty nexus
# toxic bloom > Also do you have any recommendations for checking the users card is still vali...

Overcapture looks promising! Although I think as we don't want to place too large an amount on hold I think most of the time we would be over the percentage limit in the documentation.

If we cancel a payment that is on hold, is this counted as a transaction for the purposes of stripe billing? (i.e. would we pay an additional 20p if each transaction is counted as two https://stripe.com/gb/pricing )

Find Stripe fees and pricing information. Find our processing fees for credit cards, pricing models and pay-as-you-go fees for businesses.

toxic bloom
#

Is it a good idea to store the expiry date of the card, and then when we start a session check that it is still valid this way?
You shouldn't store any card details in your integration... if the session period may be more than a Month, then you should charge/bill the customer periodicly (one sub amount per month for example)

#

And not wait untill the end of the session to charge everything

mighty nexus
#

Sorry I should've been more specific - it's likely to be between 1-24 hours

mighty nexus
toxic bloom
#

it's likely to be between 1-24 hours
So you can place a hold in that case

#

that's the only good approach

#

in case it's autoupdated by the card network

hardy fogBOT
mighty nexus
#

Ok would you say it's accurate that two options are:

  1. Place a reasonably large amount on hold and then either overcapture or cancel this transaction, and charge with updated total at the end of the session

  2. Don't place anything on hold, and check the expiry date of the card when starting a session. Then at the end of the session charge the full amount and accept the risk that occasionally this payment may not go through

toxic bloom
#

Yes. Personally I would opt for the option 1.

dapper pasture
#

๐Ÿ‘‹ taking over for my colleague. Let me know if there's any follow-up Qs I can answer!

mighty nexus
#

Do you know if in case where we are charging more than we overcapture we are liable for 1.5% + 20p stripe fee on the cancelled held amount?

dapper pasture
hardy fogBOT