diff --git a/modules/promotion/src/PromotionUsage.php b/modules/promotion/src/PromotionUsage.php
index 87ee6b3c..0bdfda46 100644
--- a/modules/promotion/src/PromotionUsage.php
+++ b/modules/promotion/src/PromotionUsage.php
@@ -41,6 +41,19 @@ class PromotionUsage implements PromotionUsageInterface {
       ->execute();
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function unregister(OrderInterface $order, PromotionInterface $promotion, CouponInterface $coupon = NULL) {
+    $query = $this->connection->delete('commerce_promotion_usage');
+    $query->condition('promotion_id', $promotion->id());
+    $query->condition('order_id', $order->id());
+    if ($coupon) {
+      $query->condition('coupon_id', $coupon->id());
+    }
+    $query->execute();
+  }
+
   /**
    * {@inheritdoc}
    */
@@ -101,7 +114,8 @@ class PromotionUsage implements PromotionUsageInterface {
       $query->condition('mail', $mail);
     }
     $query->groupBy('promotion_id');
-    $result = $query->execute()->fetchAllAssoc('promotion_id', \PDO::FETCH_ASSOC);
+    $result = $query->execute()
+      ->fetchAllAssoc('promotion_id', \PDO::FETCH_ASSOC);
     // Ensure that each promotion ID gets a count, even if it's not present
     // in the query due to non-existent usage.
     $counts = [];
diff --git a/modules/promotion/src/PromotionUsageInterface.php b/modules/promotion/src/PromotionUsageInterface.php
index 3b7fef7a..20db0e67 100644
--- a/modules/promotion/src/PromotionUsageInterface.php
+++ b/modules/promotion/src/PromotionUsageInterface.php
@@ -26,6 +26,18 @@ interface PromotionUsageInterface {
    */
   public function register(OrderInterface $order, PromotionInterface $promotion, CouponInterface $coupon = NULL);
 
+  /**
+   * Unregisters usage for the given order.
+   *
+   * @param \Drupal\commerce_order\Entity\OrderInterface $order
+   *   The order.
+   * @param \Drupal\commerce_promotion\Entity\PromotionInterface $promotion
+   *   The promotion.
+   * @param \Drupal\commerce_promotion\Entity\CouponInterface $coupon
+   *   (Optional) The used coupon.
+   */
+  public function unregister(OrderInterface $order, PromotionInterface $promotion, CouponInterface $coupon = NULL);
+
   /**
    * Reassigns usage to a new customer email.
    *
