How can we improve WooCommerce?

(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.

47 votes
Vote
Sign in
Check!
(thinking…)
Reset
or sign in with
  • facebook
  • google
    Password icon
    I agree to the terms of service
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    Anonymous shared this idea  ·   ·  Flag idea as inappropriate…  ·  Admin →

    8 comments

    Sign in
    Check!
    (thinking…)
    Reset
    or sign in with
    • facebook
    • google
      Password icon
      I agree to the terms of service
      Signed in as (Sign out)
      Submitting...
      • Anonymous commented  ·   ·  Flag as inappropriate

        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.

      • TimTim commented  ·   ·  Flag as inappropriate

        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 SmithBrandon Smith commented  ·   ·  Flag as inappropriate

        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.

      • AdamAdam commented  ·   ·  Flag as inappropriate

        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.

      • Anonymous commented  ·   ·  Flag as inappropriate

        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

      Feedback and Knowledge Base