I use WooCommerce order status manager which is interfering with statuses but i do not use any custom codes, only for attaching pdf to email and for adding information to BACS payments which should not be a problem.
I am using WooCommerce: Auto complete paid orders answer code to change the order status to a custom status, with the following code:
add_action( 'woocommerce_payment_complete_order_status', 'change_status_of_paid_orders', 10, 3 );
function change_status_of_paid_orders( $status, $order_id, $order ) {
    return 'card-on-hold';
}
    
But problem is, that it takes several minutes to change the status and sometimes it will not be triggered at all.
I am not programmer and I do not know how to troubleshoot my issue, therefore I am asking for help or some directions.
My order statuses are for:
- new COD order: 
processing, - new BACS order: 
on-hold, - new CARDPAY order: custom status 
card-on-hold. 
I tried to change priority to 9, 2 but it did not help it was not even triggered.
Thank you for any help.