diff --git a/src/_zkapauthorizer/model.py b/src/_zkapauthorizer/model.py
index bccbf3d28d54d3a9cc01eb01e9b1ecea4b6180c6..88bad2c1d14e94924c000cec0b2483b43e60aec1 100644
--- a/src/_zkapauthorizer/model.py
+++ b/src/_zkapauthorizer/model.py
@@ -439,6 +439,13 @@ class VoucherStore(object):
                 for token in unblinded_tokens
             ),
         )
+        # Clean up the no-longer-needed random tokens.
+        cursor.executemany(
+            """
+            DELETE FROM [tokens] WHERE [voucher] = ? AND [redemption-group] = ?
+            """,
+            (voucher, group_id),
+        )
 
     @with_cursor
     def mark_voucher_double_spent(self, cursor, voucher):