diff --git a/events.xml b/events.xml
index bae7bfa1cf5a8324f550f69c59049c47b8d80a08..7794d2b9ed6590fb6df889cd0f043705d09047d1 100644
--- a/events.xml
+++ b/events.xml
@@ -5,6 +5,9 @@
     <event on="onQuiqqerOrderBasketToOrderEnd"
            fire="\QUI\ERP\Shipping\EventHandler::onQuiqqerOrderBasketToOrderEnd"
     />
+    <event on="onQuiqqerOrderUpdateBegin"
+           fire="\QUI\ERP\Shipping\EventHandler::onQuiqqerOrderUpdateBegin"
+    />
     <event on="onPackageSetup"
            fire="\QUI\ERP\Shipping\EventHandler::onPackageSetup"
     />
@@ -41,14 +44,12 @@
     <event on="onHeaderLoaded"
            fire="\QUI\ERP\Shipping\EventHandler::onTemplateGetHeader"
     />
-
     <event on="onQuiqqer::frontend-users::user-address-top"
            fire="\QUI\ERP\Shipping\EventHandler::onFrontendUsersAddressTop"
     />
     <event on="onQuiqqer::order::orderProcessCustomerDataEnd"
            fire="\QUI\ERP\Shipping\EventHandler::onOrderProcessCustomerDataEnd"
     />
-
     <event on="onQuiqqer::products::price::end"
            fire="\QUI\ERP\Shipping\EventHandler::onQuiqqerProductsPriceEnd"
     />
diff --git a/src/QUI/ERP/Shipping/EventHandler.php b/src/QUI/ERP/Shipping/EventHandler.php
index 21a4e26c7ddf1f9e326b112e770ca76b8874991c..1815b8cb27ef3e6fac549d0eaf432e9da10c35a7 100644
--- a/src/QUI/ERP/Shipping/EventHandler.php
+++ b/src/QUI/ERP/Shipping/EventHandler.php
@@ -15,6 +15,7 @@
 use function explode;
 use function json_decode;
 use function method_exists;
+use function str_replace;
 use function strpos;
 
 /**
@@ -554,4 +555,55 @@ public static function onQuiqqerOrderInit(QUI\ERP\Order\AbstractOrder $Order)
     {
         self::onQuiqqerOrderShippingOnEmpty($Order);
     }
+
+    /**
+     * @param \QUI\ERP\Order\AbstractOrder $Order
+     * @return void
+     */
+    public static function onQuiqqerOrderUpdateBegin(
+        QUI\ERP\Order\AbstractOrder $Order,
+        &$data = []
+    ) {
+        $Articles     = $Order->getArticles();
+        $PriceFactors = $Articles->getPriceFactors();
+
+        if (!$PriceFactors->count()) {
+            return;
+        }
+
+        // check if shipping factor exist
+        $shippingFactor = null;
+        $factors        = $PriceFactors->toArray();
+        $Shipping       = $Order->getShipping();
+
+        if (!$Shipping) {
+            return;
+        }
+
+        foreach ($factors as $index => $factor) {
+            if (strpos($factor['identifier'], 'shipping-pricefactor-') !== false) {
+                $shippingFactor = $factor;
+                break;
+            }
+        }
+
+        $identifier = $shippingFactor['identifier'];
+        $identifier = str_replace($identifier, 'shipping-pricefactor-', '');
+        $id         = (int)$identifier;
+
+        if ($id !== $Shipping->getId() && isset($index)) {
+            $Factor = $PriceFactors->getFactor($index);
+            $factor = $Factor->toArray();
+
+            $factor['identifier'] = 'shipping-pricefactor-' . $Shipping->getId();
+            $factor['title']      = $Shipping->getTitle();
+
+            $PriceFactors->setFactor(
+                $index,
+                new QUI\ERP\Accounting\PriceFactors\Factor($factor)
+            );
+
+            $data['articles'] = $Articles->toJSON();
+        }
+    }
 }