AUTH and CAPTURE are two important functions of payment card processing.
As a merchant you can process transactions as:
- AUTH Only
- AUTH then CAPTURE
- AUTH and CAPTURE.
AUTH Only is simply authorizing for checking the validity of the card or fuel authorization.These transaction will never be settled.
AUTH then CAPTURE means an AUTH transaction (real time) followed by a delayed CAPTURE transaction for settlement. These capture transaction are batched.
AUTH and CAPTURE is both authorization and settlement in one transaction and in real-time.
In eCommerce world merchant normally opt for AUTH then CAPTURE because of following reasons:
- Fraud check after a successful AUTH but before shipping the products
- Delay in shipping of merchandise due to unavailability
- Partial delivery for multi product shipment
In brick and mortar world merchants uses a hybrid approach. Acquirer usually charge a high transaction fee for AUTH and CAPTURE in comparison to AUTH then CAPTURE.
In part 2 where you do this:
We set up a webhook to receive stripe events so after 30 days our webhook should receive a customer.subscription.updated event with a object.status == active am I right?
You might also consider implementing the customer.subscription.trial_will_end
webhook, this webhook will be sent three days before the customers trial is going to end and will allow you to send the customer a notification to update their payment information.
This way if the user does decide to go and update their payment information, Stripe will be able to take payment as soon as the customers trial has ended and they will be able to continue using your service without interruption.
#Scenario 1 If the user select the free plan, we just reactivate its account on our side and do nothing else because we configured the free plan on stripe to cost 0$. Did we implemented the right process with our free plan? are there better ways?
As far as I know this is the best way of implementing free plans using Stripe, I would just probably make sure that customers weren't sent any invoices unless it was required. I doubt users would expect to receive an invoice for each billing period if they were using a free plan.
#Scenario 2 If the user select a premium plan, we redirect him to a credit card form, that will be then sent to Stripe, and we update the stripe customer account with the temporary card token. What should we do next?:
- Should we wait for stripe to send us an event, if so, what event? customer.subscription.updated? charge.succeeded? What will be the value of object.status then?
- Should we directly reactivate the user account on our side and wait for a confirmation from stripe? If so, what would be the event name and data we should wait for?
Once the user has selected a plan and updated their payment information I would activate their account straight away providing that the response to the subscription update from Stripe was successful.
As long as you have configured your subscription preferences from your Stripe dashboard you should be able to let Stripe handle what it will do if the payment fails. Just make sure you implement the customer.subscription.updated
webhook as this will be the webhook that Stripe will send you if they mark a subscription as unpaid or cancelled allowing you to update your own records accordingly.
Best Answer
FORCE is also known as CAPTURE ONLY. This transaction type allows you to manually capture funds for transactions that were previously authorized outside the payment gateway. Additionally, because a Capture Only requires the Authorization Code of an original, successfully authorized transaction, you can use this transaction type to force captures for transactions that were declined by the payment gateway as a result of Address Verification Service (AVS) or Card Code Verification (CCV) rejection settings. Though they were declined by the payment gateway, an Authorization Code is usually still issued by the credit card issuing bank.