diff --git a/src/_zkapauthorizer/controller.py b/src/_zkapauthorizer/controller.py
index d852606c82891c4d1d0d75711e931aab00b896c8..5c387d4573c84eaedc4c184bbc984d7172aab1ba 100644
--- a/src/_zkapauthorizer/controller.py
+++ b/src/_zkapauthorizer/controller.py
@@ -163,11 +163,15 @@ class NonRedeemer(object):
 
 @implementer(IRedeemer)
 @attr.s
-class DoubleSpentRedeemer(object):
+class DoubleSpendRedeemer(object):
     """
-    A ``DoubleSpentRedeemer`` pretends to try to redeem vouchers for ZKAPs but
+    A ``DoubleSpendRedeemer`` pretends to try to redeem vouchers for ZKAPs but
     always fails with an error indicating the voucher has already been spent.
     """
+    @classmethod
+    def make(cls, section_name, node_config, announcement, reactor):
+        return cls()
+
     def random_tokens_for_voucher(self, voucher, count):
         return dummy_random_tokens(voucher, count)
 
@@ -495,5 +499,6 @@ def get_redeemer(plugin_name, node_config, announcement, reactor):
 _REDEEMERS = {
     u"non": NonRedeemer.make,
     u"dummy": DummyRedeemer.make,
+    u"double-spend": DoubleSpendRedeemer.make,
     u"ristretto": RistrettoRedeemer.make,
 }
diff --git a/src/_zkapauthorizer/tests/test_controller.py b/src/_zkapauthorizer/tests/test_controller.py
index bccd896145a8f9b476cd0d30660a607ff252dc43..c357ca4d8491d343ab42028f34c36cf0f606b5a9 100644
--- a/src/_zkapauthorizer/tests/test_controller.py
+++ b/src/_zkapauthorizer/tests/test_controller.py
@@ -96,7 +96,7 @@ from ..controller import (
     IRedeemer,
     NonRedeemer,
     DummyRedeemer,
-    DoubleSpentRedeemer,
+    DoubleSpendRedeemer,
     RistrettoRedeemer,
     PaymentController,
     AlreadySpent,
@@ -191,7 +191,7 @@ class PaymentControllerTests(TestCase):
         )
         controller = PaymentController(
             store,
-            DoubleSpentRedeemer(),
+            DoubleSpendRedeemer(),
         )
         controller.redeem(voucher)