diff --git a/vendor/magento/module-downloadable/Observer/SaveDownloadableOrderItemObserver.php b/vendor/magento/module-downloadable/Observer/SaveDownloadableOrderItemObserver.php
index 9351568c5a75..65be8e0ed9e7 100644
--- a/vendor/magento/module-downloadable/Observer/SaveDownloadableOrderItemObserver.php
+++ b/vendor/magento/module-downloadable/Observer/SaveDownloadableOrderItemObserver.php
@@ -98,12 +98,8 @@ public function execute(\Magento\Framework\Event\Observer $observer)
         if ($purchasedLink->getId()) {
             return $this;
         }
-        $storeId = $orderItem->getOrder()->getStoreId();
-        $orderStatusToEnableItem = $this->_scopeConfig->getValue(
-            \Magento\Downloadable\Model\Link\Purchased\Item::XML_PATH_ORDER_ITEM_STATUS,
-            ScopeInterface::SCOPE_STORE,
-            $storeId
-        );
+        $storeId = $orderItem->getOrder()->getStoreId() !== null ? (int)$orderItem->getOrder()->getStoreId() : null;
+        $orderItemStatusToEnableDownload = $this->getEnableDownloadStatus($storeId);
         if (!$product) {
             $product = $this->_createProductModel()->setStoreId(
                 $storeId
@@ -136,8 +132,9 @@ public function execute(\Magento\Framework\Event\Observer $observer)
                     );
                 $linkPurchased->setLinkSectionTitle($linkSectionTitle)->save();
                 $linkStatus = \Magento\Downloadable\Model\Link\Purchased\Item::LINK_STATUS_PENDING;
-                if ($orderStatusToEnableItem == \Magento\Sales\Model\Order\Item::STATUS_PENDING
+                if ($orderItemStatusToEnableDownload === \Magento\Sales\Model\Order\Item::STATUS_PENDING
                     || $orderItem->getOrder()->getState() == \Magento\Sales\Model\Order::STATE_COMPLETE
+                    || $orderItem->getStatusId() === $orderItemStatusToEnableDownload
                 ) {
                     $linkStatus = \Magento\Downloadable\Model\Link\Purchased\Item::LINK_STATUS_AVAILABLE;
                 }
@@ -211,6 +208,21 @@ protected function _createPurchasedItemModel()
         return $this->_itemFactory->create();
     }

+    /**
+     * Returns order item status to enable download.
+     *
+     * @param int|null $storeId
+     * @return int
+     */
+    private function getEnableDownloadStatus(?int $storeId): int
+    {
+        return (int)$this->_scopeConfig->getValue(
+            \Magento\Downloadable\Model\Link\Purchased\Item::XML_PATH_ORDER_ITEM_STATUS,
+            ScopeInterface::SCOPE_STORE,
+            $storeId
+        );
+    }
+
     /**
      * Create items collection.
      *
