add_filter( 'wc_order_is_editable', function( $is_editable, $order ) { if( $order->get_status() == 'processing' ) { $is_editable = true; } return $is_editable; }, 10, 2 ); add_filter( 'woocommerce_valid_order_statuses_for_cancel', function( $statuses, $order ) { if( $order->get_status() == 'processing' ) { $statuses[] = 'processing'; } return $statuses; }, 10, 2 );

Processing status: enable admin editing and customer cancelling
For orders in Processing status, this code allows the customer to click the Cancel button in the My Account dashboard. It also allows the administrator to modify the order as if it was in the On Hold or Pending status.