In short — that’s the default behavior. If the product isn’t virtual, WooCommerce order status always remains “Processing” because the payment is completed, delivery of the order is not.  “Processing” doesn’t mean it’s processing payment — it means it’s being processed/fulfilled by the site owner. All payment gateway in WooCommercewill updates the status to “Processing” once the payment is done. When you deliver the product, mark it as completed.

If the product is “Virtual” and “Downloadable”, the order status will automatically be “Completed” because you don’t have to deliver the product and there is nothing to process.

Read more details about the order statuses in WooCommerce.

If you want to make the orders as “Completed” without “Processing” for all products, you can use the following custom code snippet:

 * Auto Complete all WooCommerce orders.
 * return @void
add_action( 'woocommerce_thankyou', 'sa1494_woocommerce_auto_complete_order' );
function sa1494_woocommerce_auto_complete_order( $order_id ) { 

    if ( ! $order_id ) {

    $order = wc_get_order( $order_id );
    $order->update_status( 'completed' );

In case it helps, here’s how to easily add custom code snippets to your WordPress site.

That’s all. You might want to add Prabhu Pay payment to your WordPress site.

Why is my WooCommerce order status always “Processing”?
Tagged on:

Leave a Reply

Your email address will not be published.

Pin It on Pinterest