Hi there,
I have the following use case and I'm not sure how best to achieve it using the Stripe Payment Intents API. I need to allow a customer to pay for a service (either online or in person using Stripe terminal), and then some time later, ask if they wish to leave a tip for the service that they just received. If they choose to leave a tip, ideally we would only create one charge for both their service and tip amounts. This use case would be very similar to the Uber payment flow, where you pay for your ride when being dropped off, but some time later are asked if you'd like to add a tip.
There are a couple of options I can see for how to achieve this:
Option 1: As we have the customer's payment method(s) stored and setup for off-session usage, we could just wait and confirm the payment intent once the tip amount is known. The downside to this is that if they don't have the funds available for the service, we won't know that until it's too late.
Option 2: We pre-authorise for the amount of the service prior to them receiving the service. Then, if they do decide to add a tip later, we create 2nd pre-auth for the new amount (service + tip) and cancel the first authorised intent. The downside to this is we have to create 2 intents, even if one is cancelled. Not sure how this would appear on customer statement and if it would look like we were trying to charge them twice?
Option 3: We just process the payment for the service and the payment for the tip as 2 separate intents. The downside to this is that the tip amount will be small relative to the service amount, and we'll get hit with the flat fee portion of the Stripe fee on both payments. This will impact how much of the tip we can pass on to the service provider. It will also cause 2 entries to appear on their bank statement.
If anyone has experience tackling this scenario, your advice would be very much appreciated.
Thanks,
Paul