diff --git a/vendor/magento/module-customer-balance/Model/Creditmemo/Balance.php b/vendor/magento/module-customer-balance/Model/Creditmemo/Balance.php
index 735fef3d49b..c6160827811 100644
--- a/vendor/magento/module-customer-balance/Model/Creditmemo/Balance.php
+++ b/vendor/magento/module-customer-balance/Model/Creditmemo/Balance.php
@@ -9,7 +9,9 @@ namespace Magento\CustomerBalance\Model\Creditmemo;
 
 use Magento\CustomerBalance\Model\Balance\History;
 use Magento\CustomerBalance\Model\BalanceFactory;
+use Magento\Framework\App\ObjectManager;
 use Magento\Framework\Exception\NoSuchEntityException;
+use Magento\Sales\Api\OrderRepositoryInterface;
 use Magento\Sales\Model\Order\Creditmemo;
 use Magento\Store\Model\StoreManagerInterface;
 
@@ -28,22 +30,31 @@ class Balance
      */
     private $storeManager;
 
+    /**
+     * @var OrderRepositoryInterface
+     */
+    private $orderRepository;
+
     /**
      * @param BalanceFactory $balanceFactory
      * @param StoreManagerInterface $storeManager
+     * @param OrderRepositoryInterface|null $orderRepository
      */
     public function __construct(
         BalanceFactory $balanceFactory,
-        StoreManagerInterface $storeManager
+        StoreManagerInterface $storeManager,
+        ?OrderRepositoryInterface $orderRepository = null
     ) {
         $this->balanceFactory = $balanceFactory;
         $this->storeManager = $storeManager;
+        $this->orderRepository = $orderRepository ?: ObjectManager::getInstance()->get(OrderRepositoryInterface::class);
     }
 
     /**
      * Save refunded customer balance.
      *
      * @param Creditmemo $creditmemo
+     * @return void
      * @throws NoSuchEntityException
      */
     public function save(Creditmemo $creditmemo) :void
@@ -63,6 +74,7 @@ class Balance
             $order->setCustomerBalanceRefunded(
                 $order->getCustomerBalanceRefunded() + $customerBalanceRefunded
             );
+            $this->orderRepository->save($order);
             $status = $order->getConfig()->getStateDefaultStatus($order->getState());
             $comment = __(
                 'We refunded %1 to Store Credit',
diff --git a/vendor/magento/module-customer-balance/Plugin/CreditMemoResolver.php b/vendor/magento/module-customer-balance/Plugin/CreditMemoResolver.php
index 5d77925ebfe..69cbb29adc5 100644
--- a/vendor/magento/module-customer-balance/Plugin/CreditMemoResolver.php
+++ b/vendor/magento/module-customer-balance/Plugin/CreditMemoResolver.php
@@ -63,7 +63,8 @@ class CreditMemoResolver
             return true;
         }
 
-        if ($this->comparator->equal((float)$subject->getBaseTotalPaid(), $totalRefunded)) {
+        // If total invoiced is equal to total refunded amount then CreditMemo can not be created anymore
+        if ($this->comparator->equal($totalRefunded, $totalInvoiced)) {
             return false;
         }
 
