diff --git a/vendor/magento/module-inventory-configuration/Model/InventoryConfiguration.php b/vendor/magento/module-inventory-configuration/Model/InventoryConfiguration.php
new file mode 100644
index 000000000000..acccac199005
--- /dev/null
+++ b/vendor/magento/module-inventory-configuration/Model/InventoryConfiguration.php
@@ -0,0 +1,130 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+declare(strict_types=1);
+
+namespace Magento\InventoryConfiguration\Model;
+
+use Magento\CatalogInventory\Api\StockConfigurationInterface;
+
+class InventoryConfiguration implements \Magento\InventoryConfigurationApi\Model\InventoryConfigurationInterface
+{
+    /**
+     * @var StockConfigurationInterface
+     */
+    private $legacyStockConfiguration;
+
+    /**
+     * @param StockConfigurationInterface $legacyStockConfiguration
+     */
+    public function __construct(StockConfigurationInterface $legacyStockConfiguration)
+    {
+        $this->legacyStockConfiguration = $legacyStockConfiguration;
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function canSubtractQty($store = null): bool
+    {
+        return $this->legacyStockConfiguration->canSubtractQty($store);
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function getMinQty($store = null): float
+    {
+        return $this->legacyStockConfiguration->getMinQty($store);
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function getMinSaleQty($store = null, ?int $customerGroupId = null): float
+    {
+        return $this->legacyStockConfiguration->getMinSaleQty($store, $customerGroupId);
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function getMaxSaleQty($store = null): float
+    {
+        return $this->legacyStockConfiguration->getMaxSaleQty($store);
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function getNotifyStockQty($store = null): float
+    {
+        return $this->legacyStockConfiguration->getNotifyStockQty($store);
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function isQtyIncrementsEnabled($store = null): bool
+    {
+        return $this->legacyStockConfiguration->getEnableQtyIncrements($store);
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function getQtyIncrements($store = null): float
+    {
+        return $this->legacyStockConfiguration->getQtyIncrements($store);
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function getBackorders($store = null): int
+    {
+        return $this->legacyStockConfiguration->getBackorders($store);
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function getManageStock($store = null): int
+    {
+        return $this->legacyStockConfiguration->getManageStock($store);
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function isCanBackInStock($store = null): bool
+    {
+        return $this->legacyStockConfiguration->getCanBackInStock($store);
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function isShowOutOfStock($store = null): bool
+    {
+        return $this->legacyStockConfiguration->isShowOutOfStock($store);
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function isAutoReturnEnabled($store = null): bool
+    {
+        return $this->legacyStockConfiguration->isAutoReturnEnabled($store);
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function isDisplayProductStockStatus($store = null): bool
+    {
+        return $this->legacyStockConfiguration->isDisplayProductStockStatus($store);
+    }
+}
diff --git a/vendor/magento/module-inventory-configuration/etc/di.xml b/vendor/magento/module-inventory-configuration/etc/di.xml
index 269616f24940..f6201230e799 100644
--- a/vendor/magento/module-inventory-configuration/etc/di.xml
+++ b/vendor/magento/module-inventory-configuration/etc/di.xml
@@ -14,6 +14,7 @@
     <preference for="Magento\InventoryConfigurationApi\Model\IsSourceItemManagementAllowedForProductTypeInterface" type="Magento\InventoryConfiguration\Model\IsSourceItemManagementAllowedForProductType"/>
     <preference for="Magento\InventoryConfigurationApi\Model\IsSourceItemManagementAllowedForSkuInterface" type="Magento\InventoryConfiguration\Model\IsSourceItemManagementAllowedForSku"/>
     <preference for="Magento\InventoryConfigurationApi\Model\GetAllowedProductTypesForSourceItemManagementInterface" type="Magento\InventoryConfiguration\Model\GetAllowedProductTypesForSourceItemManagement"/>
+    <preference for="Magento\InventoryConfigurationApi\Model\InventoryConfigurationInterface" type="Magento\InventoryConfiguration\Model\InventoryConfiguration"/>
     <type name="Magento\CatalogInventory\Model\System\Config\Backend\Minqty">
         <plugin name="allow_negative_min_qty_in_config"
                 type="Magento\InventoryConfiguration\Plugin\CatalogInventory\Model\System\Config\Backend\Minqty\AllowNegativeMinQtyInConfigPlugin"/>
diff --git a/vendor/magento/module-inventory-configuration-api/Model/InventoryConfigurationInterface.php b/vendor/magento/module-inventory-configuration-api/Model/InventoryConfigurationInterface.php
new file mode 100644
index 000000000000..72f4cc714cba
--- /dev/null
+++ b/vendor/magento/module-inventory-configuration-api/Model/InventoryConfigurationInterface.php
@@ -0,0 +1,121 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+declare(strict_types=1);
+
+namespace Magento\InventoryConfigurationApi\Model;
+
+/**
+ * Interface for configuration of inventory
+ */
+interface InventoryConfigurationInterface
+{
+    /**
+     * Check if is possible subtract value from item qty
+     *
+     * @param int $store
+     * @return bool
+     */
+    public function canSubtractQty($store = null): bool;
+
+    /**
+     * Get min quantity
+     *
+     * @param int $store
+     * @return float
+     */
+    public function getMinQty($store = null): float;
+
+    /**
+     * Get min sale quantity
+     *
+     * @param int $store
+     * @param int|null $customerGroupId
+     * @return float
+     */
+    public function getMinSaleQty($store = null, ?int $customerGroupId = null): float;
+
+    /**
+     * Get max sale quantity
+     *
+     * @param int $store
+     * @return float
+     */
+    public function getMaxSaleQty($store = null): float;
+
+    /**
+     * Get notify stock quantity
+     *
+     * @param int $store
+     * @return float
+     */
+    public function getNotifyStockQty($store = null): float;
+
+    /**
+     * Retrieve whether Quantity Increments is enabled
+     *
+     * @param int $store
+     * @return bool
+     */
+    public function isQtyIncrementsEnabled($store = null): bool;
+
+    /**
+     * Get quantity Increments
+     *
+     * @param int $store
+     * @return float
+     */
+    public function getQtyIncrements($store = null): float;
+
+    /**
+     * Retrieve backorders status
+     *
+     * @param int $store
+     * @return int
+     */
+    public function getBackorders($store = null): int;
+
+    /**
+     * Retrieve Manage Stock data wrapper
+     *
+     * @param int $store
+     * @return int
+     */
+    public function getManageStock($store = null): int;
+
+    /**
+     * Retrieve can Back in stock
+     *
+     * @param int $store
+     * @return bool
+     */
+    public function isCanBackInStock($store = null): bool;
+
+    /**
+     * Display out of stock products option
+     *
+     * @param int $store
+     * @return bool
+     */
+    public function isShowOutOfStock($store = null): bool;
+
+    /**
+     * Check if credit memo items auto return option is enabled
+     *
+     * @param int $store
+     * @return bool
+     */
+    public function isAutoReturnEnabled($store = null): bool;
+
+    /**
+     * Get 'Display product stock status' option value
+     *
+     * Shows if it is necessary to show product stock status ('in stock'/'out of stock')
+     *
+     * @param int $store
+     * @return bool
+     */
+    public function isDisplayProductStockStatus($store = null): bool;
+}
diff --git a/vendor/magento/module-inventory-source-deduction-api/Model/SourceDeductionService.php b/vendor/magento/module-inventory-source-deduction-api/Model/SourceDeductionService.php
index f837fe2caf32..73e90d4050ad 100644
--- a/vendor/magento/module-inventory-source-deduction-api/Model/SourceDeductionService.php
+++ b/vendor/magento/module-inventory-source-deduction-api/Model/SourceDeductionService.php
@@ -12,6 +12,7 @@
 use Magento\InventoryApi\Api\Data\SourceItemInterface;
 use Magento\InventoryConfigurationApi\Api\Data\StockItemConfigurationInterface;
 use Magento\InventoryConfigurationApi\Api\GetStockItemConfigurationInterface;
+use Magento\InventoryConfigurationApi\Model\InventoryConfigurationInterface;
 use Magento\InventorySalesApi\Api\GetStockBySalesChannelInterface;
 
 /**
@@ -44,22 +45,30 @@ class SourceDeductionService implements SourceDeductionServiceInterface
      */
     private $decrementSourceItem;
 
+    /**
+     * @var InventoryConfigurationInterface
+     */
+    private $inventoryConfiguration;
+
     /**
      * @param GetSourceItemBySourceCodeAndSku $getSourceItemBySourceCodeAndSku
      * @param GetStockItemConfigurationInterface $getStockItemConfiguration
      * @param GetStockBySalesChannelInterface $getStockBySalesChannel
      * @param DecrementSourceItemQty $decrementSourceItem
+     * @param InventoryConfigurationInterface $inventoryConfiguration
      */
     public function __construct(
         GetSourceItemBySourceCodeAndSku $getSourceItemBySourceCodeAndSku,
         GetStockItemConfigurationInterface $getStockItemConfiguration,
         GetStockBySalesChannelInterface $getStockBySalesChannel,
-        DecrementSourceItemQty $decrementSourceItem
+        DecrementSourceItemQty $decrementSourceItem,
+        InventoryConfigurationInterface $inventoryConfiguration
     ) {
         $this->getSourceItemBySourceCodeAndSku = $getSourceItemBySourceCodeAndSku;
         $this->getStockItemConfiguration = $getStockItemConfiguration;
         $this->getStockBySalesChannel = $getStockBySalesChannel;
         $this->decrementSourceItem = $decrementSourceItem;
+        $this->inventoryConfiguration = $inventoryConfiguration;
     }
 
     /**
@@ -121,9 +130,17 @@ private function getSourceStockStatus(
     ): int {
         $sourceItemQty = $sourceItem->getQuantity() ?: self::ZERO_STOCK_QUANTITY;
         $currentStatus = (int)$stockItemConfiguration->getExtensionAttributes()->getIsInStock();
-        $calculatedStatus = $sourceItemQty === $stockItemConfiguration->getMinQty() && !$stockItemConfiguration->getBackorders()
-            ? SourceItemInterface::STATUS_OUT_OF_STOCK
-            : SourceItemInterface::STATUS_IN_STOCK;
+        $calculatedStatus =  SourceItemInterface::STATUS_IN_STOCK;
+
+        if ($sourceItemQty === $stockItemConfiguration->getMinQty() && !$stockItemConfiguration->getBackorders()) {
+            $calculatedStatus = SourceItemInterface::STATUS_OUT_OF_STOCK;
+        }
+
+        if ($this->inventoryConfiguration->isCanBackInStock() && $sourceItemQty > $stockItemConfiguration->getMinQty()
+            && $currentStatus === SourceItemInterface::STATUS_OUT_OF_STOCK
+        ) {
+            return SourceItemInterface::STATUS_IN_STOCK;
+        }
 
         return $currentStatus === SourceItemInterface::STATUS_OUT_OF_STOCK ? $currentStatus : $calculatedStatus;
     }
