diff -u b/modules/promotion/src/Plugin/Commerce/PromotionOffer/BuyXGetY.php b/modules/promotion/src/Plugin/Commerce/PromotionOffer/BuyXGetY.php --- b/modules/promotion/src/Plugin/Commerce/PromotionOffer/BuyXGetY.php +++ b/modules/promotion/src/Plugin/Commerce/PromotionOffer/BuyXGetY.php @@ -467,6 +467,9 @@ return $order_item->getData("promotion:{$promotion->id()}:auto_add_quantity"); }); foreach ($auto_add_order_items as $order_item) { + $order_item->setAdjustments(array_filter($order_item->getAdjustments(), function (Adjustment $adjustment) use ($promotion) { + return $adjustment->getSourceId() !== $promotion->id(); + })); $new_quantity = Calculator::subtract($order_item->getQuantity(), $order_item->getData("promotion:{$promotion->id()}:auto_add_quantity")); $order_item->setQuantity($new_quantity); }