diff --git a/crates/cdk/src/wallet/keysets.rs b/crates/cdk/src/wallet/keysets.rs
index 9e5babc5..546c17a5 100644
--- a/crates/cdk/src/wallet/keysets.rs
+++ b/crates/cdk/src/wallet/keysets.rs
@@ -50,7 +50,7 @@ impl Wallet {
     /// Queries mint for current keysets then gets [`Keys`] for any unknown
     /// keysets
     #[instrument(skip(self))]
-    pub async fn get_active_mint_keyset(&self) -> Result<KeySetInfo, Error> {
+    pub async fn get_active_mint_keysets(&self) -> Result<Vec<KeySetInfo>, Error> {
         let keysets = self.client.get_mint_keysets(self.mint_url.clone()).await?;
         let keysets = keysets.keysets;
 
@@ -86,6 +86,21 @@ impl Wallet {
             }
         }
 
-        active_keysets.first().ok_or(Error::NoActiveKeyset).cloned()
+        Ok(active_keysets)
+    }
+
+    /// Get active keyset for mint with the lowest fees
+    ///
+    /// Queries mint for current keysets then gets [`Keys`] for any unknown
+    /// keysets
+    #[instrument(skip(self))]
+    pub async fn get_active_mint_keyset(&self) -> Result<KeySetInfo, Error> {
+        let active_keysets = self.get_active_mint_keysets().await?;
+
+        let keyset_with_lowest_fee = active_keysets
+            .into_iter()
+            .min_by_key(|key| key.input_fee_ppk)
+            .ok_or(Error::NoActiveKeyset)?;
+        Ok(keyset_with_lowest_fee)
     }
 }