diff --git a/app/addons/stripe/payments/stripe.php b/app/addons/stripe/payments/stripe.php
index 39e4d9afe09c51b6ce56052bd545b8b3b4ea59af..d04b8b966ff9fa883361e9448a06320fba766db1 100644
--- a/app/addons/stripe/payments/stripe.php
+++ b/app/addons/stripe/payments/stripe.php
@@ -18,6 +18,7 @@ use Tygh\Addons\Stripe\Payments\Stripe;
 use Tygh\Enum\Addons\Stripe\PaymentTypes;
 use Tygh\Enum\NotificationSeverity;
 use Tygh\Enum\OrderStatuses;
+use Tygh\Tygh;
 
 /** @var array $order_info */
 /** @var array $processor_data */
@@ -34,6 +35,15 @@ if (defined('PAYMENT_NOTIFICATION')) {
         exit;
     }
 
+    /** @var \Tygh\Lock\Factory $lock_factory */
+    $lock_factory = Tygh::$app['lock.factory'];
+    $lock = $lock_factory->createLock('stripe_handle_order_status_' . $_REQUEST['order_id'], 60.0);
+    if (!$lock->acquire()) {
+        do {
+            $lock->wait();
+        } while (!$lock->acquire());
+    }
+
     if ($mode === 'cancel') {
         fn_change_order_status($_REQUEST['order_id'], OrderStatuses::INCOMPLETED);
     }
@@ -50,6 +60,8 @@ if (defined('PAYMENT_NOTIFICATION')) {
     ) {
         fn_change_non_settled_order_status($order_info, OrderStatuses::OPEN);
     }
+
+    $lock->release();
     fn_order_placement_routines('route', $_REQUEST['order_id']);
 }
 
diff --git a/app/addons/stripe/src/Webhook/Handlers/CheckoutSessionAsyncPaymentSucceeded.php b/app/addons/stripe/src/Webhook/Handlers/CheckoutSessionAsyncPaymentSucceeded.php
index 94835b8bd462316baeef9b631c8d001b4b3a642b..5a0bc22b5421dd7cf73015f913a0fb373458cef0 100644
--- a/app/addons/stripe/src/Webhook/Handlers/CheckoutSessionAsyncPaymentSucceeded.php
+++ b/app/addons/stripe/src/Webhook/Handlers/CheckoutSessionAsyncPaymentSucceeded.php
@@ -51,6 +51,15 @@ class CheckoutSessionAsyncPaymentSucceeded implements Handler
                 return;
             }
 
+            /** @var \Tygh\Lock\Factory $lock_factory */
+            $lock_factory = Tygh::$app['lock.factory'];
+            $lock = $lock_factory->createLock('stripe_handle_order_status_' . $payment_intent->metadata['order_id'], 60.0);
+            if (!$lock->acquire()) {
+                do {
+                    $lock->wait();
+                } while (!$lock->acquire());
+            }
+
             if (fn_allowed_for('ULTIMATE')) {
                 Registry::set('runtime.company_id', false);
             }
@@ -63,19 +72,10 @@ class CheckoutSessionAsyncPaymentSucceeded implements Handler
                 $order_info
                 && !in_array($order_info['status'], $settled_order_statuses)
             ) {
-                /** @var \Tygh\Lock\Factory $lock_factory */
-                $lock_factory = Tygh::$app['lock.factory'];
-                $lock = $lock_factory->createLock('stripe_webhook_handle_order_status_' . $payment_intent->metadata['order_id'], 60.0, false);
-                if (!$lock->acquire()) {
-                    do {
-                        $lock->wait();
-                    } while (!$lock->acquire());
-                }
-
                 fn_change_non_settled_order_status($order_info, OrderStatuses::PAID);
-
-                $lock->release();
             }
+
+            $lock->release();
         } catch (Exception $e) {
             fn_log_event('general', 'runtime', [
                 'message' => __('stripe.webhook_handle_error', [
diff --git a/app/addons/stripe/src/Webhook/Handlers/PaymentIntentSucceeded.php b/app/addons/stripe/src/Webhook/Handlers/PaymentIntentSucceeded.php
index b8e1076034aabe684af9dc12be1bed98fdfd10a4..d78e07e88a4cfab3b88126cd408bb69de0ca77be 100644
--- a/app/addons/stripe/src/Webhook/Handlers/PaymentIntentSucceeded.php
+++ b/app/addons/stripe/src/Webhook/Handlers/PaymentIntentSucceeded.php
@@ -46,6 +46,15 @@ class PaymentIntentSucceeded implements Handler
                 return;
             }
 
+            /** @var \Tygh\Lock\Factory $lock_factory */
+            $lock_factory = Tygh::$app['lock.factory'];
+            $lock = $lock_factory->createLock('stripe_handle_order_status_' . $payment_intent->metadata['order_id'], 60.0);
+            if (!$lock->acquire()) {
+                do {
+                    $lock->wait();
+                } while (!$lock->acquire());
+            }
+
             if (fn_allowed_for('ULTIMATE')) {
                 Registry::set('runtime.company_id', false);
             }
@@ -58,19 +67,10 @@ class PaymentIntentSucceeded implements Handler
                 $order_info
                 && !in_array($order_info['status'], $settled_order_statuses)
             ) {
-                /** @var \Tygh\Lock\Factory $lock_factory */
-                $lock_factory = Tygh::$app['lock.factory'];
-                $lock = $lock_factory->createLock('stripe_webhook_handle_order_status_' . $payment_intent->metadata['order_id'], 60.0, false);
-                if (!$lock->acquire()) {
-                    do {
-                        $lock->wait();
-                    } while (!$lock->acquire());
-                }
-
                 fn_change_non_settled_order_status($order_info, OrderStatuses::PAID);
-
-                $lock->release();
             }
+
+            $lock->release();
         } catch (Exception $e) {
             fn_log_event('general', 'runtime', [
                 'message' => __('stripe.webhook_handle_error', [
diff --git a/app/addons/stripe_connect/Tygh/Addons/StripeConnect/Webhook/Handlers/PaymentIntentCanceled.php b/app/addons/stripe_connect/Tygh/Addons/StripeConnect/Webhook/Handlers/PaymentIntentCanceled.php
index 8a3cbf9ff56784b4cc7c6e064849e62fffd246ed..a66125bb7402dcf7a0d28b4655c00b88c008807b 100644
--- a/app/addons/stripe_connect/Tygh/Addons/StripeConnect/Webhook/Handlers/PaymentIntentCanceled.php
+++ b/app/addons/stripe_connect/Tygh/Addons/StripeConnect/Webhook/Handlers/PaymentIntentCanceled.php
@@ -49,7 +49,7 @@ class PaymentIntentCanceled implements Handler
 
             /** @var \Tygh\Lock\Factory $lock_factory */
             $lock_factory = Tygh::$app['lock.factory'];
-            $lock = $lock_factory->createLock('stripe_webhook_handle_order_status_' . $order_id, 60.0, false);
+            $lock = $lock_factory->createLock('stripe_connect_handle_order_status_' . $order_id, 60.0);
             if (!$lock->acquire()) {
                 do {
                     $lock->wait();
diff --git a/app/addons/stripe_connect/Tygh/Addons/StripeConnect/Webhook/Handlers/PaymentIntentSucceeded.php b/app/addons/stripe_connect/Tygh/Addons/StripeConnect/Webhook/Handlers/PaymentIntentSucceeded.php
index 7c431a20ccfa51c66b428314c47b21a83e95c8ce..1d80cd53a804a1ddc83ea0d2222696db5ec4be76 100644
--- a/app/addons/stripe_connect/Tygh/Addons/StripeConnect/Webhook/Handlers/PaymentIntentSucceeded.php
+++ b/app/addons/stripe_connect/Tygh/Addons/StripeConnect/Webhook/Handlers/PaymentIntentSucceeded.php
@@ -57,18 +57,19 @@ class PaymentIntentSucceeded implements Handler
 
             foreach ($orders as $order) {
                 $order_id = (int) $order['order_id'];
-                /** @var array $order */
-                $order = fn_get_order_info($order_id);
 
                 /** @var \Tygh\Lock\Factory $lock_factory */
                 $lock_factory = Tygh::$app['lock.factory'];
-                $lock = $lock_factory->createLock('stripe_webhook_handle_order_status_' . $order_id, 60.0, false);
+                $lock = $lock_factory->createLock('stripe_connect_handle_order_status_' . $order_id, 60.0);
                 if (!$lock->acquire()) {
                     do {
                         $lock->wait();
                     } while (!$lock->acquire());
                 }
 
+                /** @var array $order */
+                $order = fn_get_order_info($order_id);
+
                 if (
                     !in_array($order['status'], fn_get_settled_order_statuses())
                     && !$this->isOrderProcessed($order)
diff --git a/app/addons/stripe_connect/payments/stripe_connect.php b/app/addons/stripe_connect/payments/stripe_connect.php
index f3ae32fc0ecf1c9e86626cae450bf8ece8609810..4569517ed335ef19796d8e3ec762ea4d68640959 100644
--- a/app/addons/stripe_connect/payments/stripe_connect.php
+++ b/app/addons/stripe_connect/payments/stripe_connect.php
@@ -19,11 +19,20 @@ use Tygh\Enum\Addons\StripeConnect\PaymentTypes;
 use Tygh\Enum\NotificationSeverity;
 use Tygh\Enum\OrderStatuses;
 use Tygh\Enum\YesNo;
+use Tygh\Tygh;
 
 /** @var array $order_info */
 /** @var array $processor_data */
 
 if (defined('PAYMENT_NOTIFICATION') && !empty($_REQUEST['order_id'])) {
+    /** @var \Tygh\Lock\Factory $lock_factory */
+    $lock_factory = Tygh::$app['lock.factory'];
+    $lock = $lock_factory->createLock('stripe_connect_handle_order_status_' . $_REQUEST['order_id'], 60.0);
+    if (!$lock->acquire()) {
+        do {
+            $lock->wait();
+        } while (!$lock->acquire());
+    }
 
     $order_info = fn_get_order_info($_REQUEST['order_id']);
     if (!$order_info) {
@@ -34,6 +43,8 @@ if (defined('PAYMENT_NOTIFICATION') && !empty($_REQUEST['order_id'])) {
         fn_change_order_status($_REQUEST['order_id'], OrderStatuses::INCOMPLETED);
     }
 
+    $lock->release();
+
     if (
         $mode === 'cancel'
         || !$order_info
