diff --git a/vendor/magento/module-sales/Model/ResourceModel/Order/Handler/State.php b/vendor/magento/module-sales/Model/ResourceModel/Order/Handler/State.php
index de15a627583..47395b17afe 100644
--- a/vendor/magento/module-sales/Model/ResourceModel/Order/Handler/State.php
+++ b/vendor/magento/module-sales/Model/ResourceModel/Order/Handler/State.php
@@ -9,7 +9,7 @@ namespace Magento\Sales\Model\ResourceModel\Order\Handler;
 use Magento\Sales\Model\Order;
 
 /**
- * Class State
+ * Checking order status and adjusting order status before saving
  */
 class State
 {
@@ -34,6 +34,7 @@ class State
             if (in_array($currentState, [Order::STATE_PROCESSING, Order::STATE_COMPLETE])
                 && !$order->canCreditmemo()
                 && !$order->canShip()
+                && $order->getIsNotVirtual()
             ) {
                 $order->setState(Order::STATE_CLOSED)
                     ->setStatus($order->getConfig()->getStateDefaultStatus(Order::STATE_CLOSED));
