WooCommerce automatically completes orders for virtual-downloadable products after successful payment, but it won’t autocomplete other orders, as you may need to take actions between when the order is processed and completed. If you sell shippable products, you probably need to ship them before completing the order. If you sell virtual products like services, you probably have to do something between when the order is paid and completed.
However, this isn’t the case for all stores, and you may not need to take any action between when an order is paid for and completed. For example, you may want to auto-complete virtual orders, or even those with products that aren’t virtual or downloadable. Likewise, you may not want any orders to automatically complete at all.
In this case, you can use the WooCommerce Order Status Control extension to get greater control over when paid orders are automatically completed.
- WooCommerce 2.6.14+
- A payment gateway that is capable of marking an order as paid. Click here to read more about supported payment gateways.
- Ensure your store meets the plugin requirements.
- Download the extension from your WooCommerce dashboard.
- Go to Plugins > Add New > Upload and select the ZIP file you just downloaded.
- Click Install Now and then Activate.
- Click Configure and read the next section to learn how to setup the plugin.
To setup Order Status Control, go to WooCommerce > Settings > General and update the Orders to Auto-Complete setting to determine which paid orders should skip the Processing status and go directly to Completed status:
- None: No orders will be automatically completed.
- All Orders: All paid orders, regardless of purchased products, will be automatically completed.
- Virtual Orders: Orders that contain only Virtual products will be automatically completed.
- Virtual & Downloadable Orders: Only paid orders for products that are both Virtual and Downloadable will be automatically completed (i.e. WooCommerce’s standard behavior). This is the plugin’s default setting, which ensures that simply activating the plugin won’t impact order completions until you manually update this setting.
When an order that meets your criteria is paid, it will automatically update to Completed status, which will be documented in the Order Notes:
Order Status Control will only complete paid orders, which requires the payment method to call woocommerce_payment_complete() / $order->payment_complete(). Most payment methods do this already – PayPal, credit cards, e-checks, and other online payment systems will all trigger auto-completion.
Orders that haven’t been paid won’t auto-complete, since shipments/access to products shouldn’t happen until payment is received. If your gateway doesn’t identify when an order has been paid, Order Status Control won’t automatically complete the order. As such, Order Status Control will not auto-complete orders with the following payment methods:
- Check Payments (WooCommerce core)
- Direct Bank Transfer / BACS (WooCommerce core)
- Cash on Delivery (WooCommerce core)
- Any gateways that defaults to On Hold or Pending Payment instead of Processing