diff --git a/vendor/magento/module-sales-rule/Model/Coupon/Usage/Processor.php b/vendor/magento/module-sales-rule/Model/Coupon/Usage/Processor.php
index 7bd347f5245d6..4abfd534f741d 100644
--- a/vendor/magento/module-sales-rule/Model/Coupon/Usage/Processor.php
+++ b/vendor/magento/module-sales-rule/Model/Coupon/Usage/Processor.php
@@ -152,7 +152,8 @@ public function updateCouponUsages(UpdateInfo $updateInfo): void
     private function lockLoadedCoupon(Coupon $coupon, UpdateInfo $updateInfo): void
     {
         $isIncrement = $updateInfo->isIncrement();
-        $lockName = self::LOCK_NAME . $coupon->getCode();
+        // Lock name based on coupon id, rather than coupon code that may contain illegal symbols for file based lock
+        $lockName = self::LOCK_NAME . $coupon->getId();
         if ($this->lockManager->lock($lockName, self::LOCK_TIMEOUT)) {
             try {
                 $coupon = $this->couponRepository->getById($coupon->getId());

