diff --git a/vendor/magento/module-order-cancellation/Model/CancelOrder.php b/vendor/magento/module-order-cancellation/Model/CancelOrder.php
index cd17687c34b..0389e88a5f9 100644
--- a/vendor/magento/module-order-cancellation/Model/CancelOrder.php
+++ b/vendor/magento/module-order-cancellation/Model/CancelOrder.php
@@ -60,7 +60,7 @@ class CancelOrder
     ): Order {
         $payment = $order->getPayment();
 
-        if ($payment->getAmountPaid() !== null) {
+        if ($payment->getAmountPaid() !== null || $payment->getMethod() === 'free') {
             $order = $payment->getMethodInstance()->isOffline()
                 ? $this->handleOfflinePayment($order)
                 : $this->handleOnlinePayment($order);
