(Pre)authorize only checkout for Paypal and Stripe
It's usually good practice to only charge the customer's card when products are ready to ship. By default, Woocommerce will immediately charge the customer, even though products may not ship for another couple of days. Ideally, I'd like Woocommerce to verify the card information upon checkout, then charge the card once the order has been marked as completed in the admin UI.
Both Stripe and Paypal standard are capable of doing this. For Paypal standard, you simply pass an additional paymentaction = authorization parameter, and you can later capture the payment using the API. https://developer.paypal.com/webapps/developer/docs/classic/paypal-payments-standard/integration-guide/Appx_websitestandard_htmlvariables/
The official Stripe plugin already collects the customer token, so it should be straightforward to not charge the customer until the order has been marked as complete.
Should add- I need this on Paypal Pro.
This is an essential feature for us, and seems like it would be fairly trivial to implement. Authorize on order receipt, and when you mark the order Completed, capture the payment.
We offer this solution. Please get in touch.
I agree, this is very much missed!!
I need this feature as well. I noticed it is available in the PayPal advanced extension but I do not use Paypal advanced. I am using PayPal standard and my current site allows me to capture and then authorize later. This is the only feature preventing me from switching over to woo commerce.
Brandon Smith commented
Agree, this would be great not just for Stripe, but all payment gateways. We ship our product 2x per month. Due to credit card merchant account regulations, we are not supposed to charge our customers more than 48 hours before we ship the product. I see that there is no built in support for this kind of functionality in the Woo Subscriptions plug in (I hope it's coming soon!), but for now they recommend using a "Free Trial Period" to delay the payment to the time of the shipping date. However, we want to give customers a coupon that gives them 10% off their first order. I've set up a Cart% coupon, which works as long as I don't have a trial period but when I have a trial period on the product, it nullifies this coupon.
I made a small modification that looks like it allows for authorization only: in class-wc-gateway-stripe, add $post_data['capture'] = 'false'; to line 396 in the "other charge data" section.
it is so basic that i don't get how this doesn't available from day one for the paypal pro
most of the online store need this features. so we will be able to charge the customer only if the order has been verified and or even shipped