diff --git a/src/_zkapauthorizer/_storage_server.py b/src/_zkapauthorizer/_storage_server.py
index 7cd3cd213e2aa1d647748ac5e578850fb706d1e6..4be0a0433541fb17403f1f56964e20a20d4adbcb 100644
--- a/src/_zkapauthorizer/_storage_server.py
+++ b/src/_zkapauthorizer/_storage_server.py
@@ -250,9 +250,6 @@ class ZKAPAuthorizerStorageServer(Referenceable):
             self._signing_key,
         )
 
-        # XXX Some shares may exist already so those passes aren't necessarily
-        # spent...
-        self._metric_spending_successes.observe(len(validation.valid))
 
         # Note: The *allocate_buckets* protocol allows for some shares to
         # already exist on the server.  When this is the case, the cost of the
@@ -281,6 +278,10 @@ class ZKAPAuthorizerStorageServer(Referenceable):
             allocated_size,
         )
 
+        # XXX Some shares may exist already so those passes aren't necessarily
+        # spent...
+        self._metric_spending_successes.observe(len(validation.valid))
+
         alreadygot, bucketwriters = self._original._allocate_buckets(
             storage_index,
             renew_secret,