diff --git a/src/PaymentServer/Issuer.hs b/src/PaymentServer/Issuer.hs
index a3473b57c7d81044dc8604c8d18bc75979fabadd..939910ccbd3e419f7b1a28978984c9268c2b2208 100644
--- a/src/PaymentServer/Issuer.hs
+++ b/src/PaymentServer/Issuer.hs
@@ -14,7 +14,8 @@ module PaymentServer.Issuer
   ) where
 
 import PaymentServer.Ristretto
-  ( ristretto
+  ( Issuance(Issuance)
+  , ristretto
   )
 
 import Data.Text
@@ -68,5 +69,5 @@ ristrettoIssue
 ristrettoIssue signingKey tokens = do
   let issuance = ristretto signingKey tokens
   case issuance of
-    Right (publicKey, tokens, proof) -> Right $ ChallengeBypass publicKey tokens proof
+    Right (Issuance publicKey tokens proof) -> Right $ ChallengeBypass publicKey tokens proof
     Left err -> Left . pack . show $ err
diff --git a/src/PaymentServer/Ristretto.hs b/src/PaymentServer/Ristretto.hs
index 77f07359b7c9fbabab439a4a3194569c019cbce9..49278604ace90dd209440e47edd1d421c07c06ab 100644
--- a/src/PaymentServer/Ristretto.hs
+++ b/src/PaymentServer/Ristretto.hs
@@ -3,7 +3,8 @@
 {-# LANGUAGE EmptyDataDecls #-}
 
 module PaymentServer.Ristretto
-  ( randomSigningKey
+  ( Issuance(Issuance)
+  , randomSigningKey
   , ristretto
   ) where
 
@@ -62,14 +63,15 @@ foreign import ccall "batch_dleq_proof_encode_base64" batch_dleq_proof_encode_ba
 foreign import ccall "batch_dleq_proof_destroy" batch_dleq_proof_destroy :: Ptr C_BatchDLEQProof -> IO ()
 
 -- | Private type to represent the return value of ristretto.
-type Issuance =
-  ( Text         -- ^ The base64-encoded public key corresponding to the
-                 -- signing key which generated the signatures.
-  , [Text]       -- ^ A list of base64-encoded token signatures.
-  , Text         -- ^ The base64-encoded batch DLEQ proof that the signatures
-                 -- were made with the signing key corresponding to the public
-                 -- key.
-  )
+data Issuance =
+  Issuance
+  { publicKey  :: Text   -- ^ The base64-encoded public key corresponding to the
+                         -- signing key which generated the signatures.
+  , signatures :: [Text] -- ^ A list of base64-encoded token signatures.
+  , proof      :: Text   -- ^ The base64-encoded batch DLEQ proof that the signatures
+                         -- were made with the signing key corresponding to the public
+                         -- key.
+  }
 
 data RistrettoFailure
   = SigningKeyAllocation
@@ -147,7 +149,7 @@ ristretto textSigningKey textTokens =
                             False -> do
                               encodedSignedTokens <- mapM peekCString encodedCStringSignedTokens
                               encodedProof <- newEncodedProof blindedTokens signedTokens signingKey
-                              return $ Right (pack encodedPublicKey, map pack encodedSignedTokens, pack encodedProof)
+                              return . Right $ Issuance (pack encodedPublicKey) (map pack encodedSignedTokens) (pack encodedProof)
 
 
 -- | randomSigningKey generates a new signing key at random and returns it