Bug: [REFACTOR]: [PAYSAFE] populate error code and message for 200



populate error code and message for 200
diff --git a/crates/api_models/src/open_router.rs b/crates/api_models/src/open_router.rs
index 94d31a73787..7a6e361ea76 100644
--- a/crates/api_models/src/open_router.rs
+++ b/crates/api_models/src/open_router.rs
@@ -122,14 +122,14 @@ pub struct CoBadgedCardNetworks(pub Vec<CoBadgedCardNetworksInfo>);
 
 impl CoBadgedCardNetworks {
     pub fn get_card_networks(&self) -> Vec<common_enums::CardNetwork> {
-        self.0.iter().map(|info| info.network.clone()).collect()
+        self.0.iter().map(|info| info.network).collect()
     }
 
     pub fn get_signature_network(&self) -> Option<common_enums::CardNetwork> {
         self.0
             .iter()
             .find(|info| info.network.is_signature_network())
-            .map(|info| info.network.clone())
+            .map(|info| info.network)
     }
 }
 
diff --git a/crates/api_models/src/payment_methods.rs b/crates/api_models/src/payment_methods.rs
index 75c5f27df57..ae6555ad94c 100644
--- a/crates/api_models/src/payment_methods.rs
+++ b/crates/api_models/src/payment_methods.rs
@@ -408,7 +408,7 @@ impl PaymentMethodCreate {
                     card_holder_name: payment_method_migrate_card.card_holder_name.clone(),
                     nick_name: payment_method_migrate_card.nick_name.clone(),
                     card_issuing_country: payment_method_migrate_card.card_issuing_country.clone(),
-                    card_network: payment_method_migrate_card.card_network.clone(),
+                    card_network: payment_method_migrate_card.card_network,
                     card_issuer: payment_method_migrate_card.card_issuer.clone(),
                     card_type: payment_method_migrate_card.card_type.clone(),
                 });
diff --git a/crates/api_models/src/payments.rs b/crates/api_models/src/payments.rs
index 8c8052b14d0..c6f4b2db738 100644
--- a/crates/api_models/src/payments.rs
+++ b/crates/api_models/src/payments.rs
@@ -2251,10 +2251,7 @@ impl Card {
                 .card_issuer
                 .clone()
                 .or(additional_card_info.card_issuer),
-            card_network: self
-                .card_network
-                .clone()
-                .or(additional_card_info.card_network.clone()),
+            card_network: self.card_network.or(additional_card_info.card_network),
             card_type: self.card_type.clone().or(additional_card_info.card_type),
             card_issuing_country: self
                 .card_issuing_country
diff --git a/crates/api_models/src/profile_acquirer.rs b/crates/api_models/src/profile_acquirer.rs
index 9689be7d995..5c6a3b3b333 100644
--- a/crates/api_models/src/profile_acquirer.rs
+++ b/crates/api_models/src/profile_acquirer.rs
@@ -76,7 +76,7 @@ impl
             profile_id: profile_id.clone(),
             acquirer_assigned_merchant_id: acquirer_config.acquirer_assigned_merchant_id.clone(),
             merchant_name: acquirer_config.merchant_name.clone(),
-            network: acquirer_config.network.clone(),
+            network: acquirer_config.network,
             acquirer_bin: acquirer_config.acquirer_bin.clone(),
             acquirer_ica: acquirer_config.acquirer_ica.clone(),
             acquirer_fraud_rate: acquirer_config.acquirer_fraud_rate,
diff --git a/crates/common_enums/src/enums.rs b/crates/common_enums/src/enums.rs
index 581858a85de..5b0d1d3d9cc 100644
--- a/crates/common_enums/src/enums.rs
+++ b/crates/common_enums/src/enums.rs
@@ -2504,6 +2504,7 @@ pub enum MandateStatus {
 /// Indicates the card network.
 #[derive(
     Clone,
+    Copy,
     Debug,
     Eq,
     Hash,
diff --git a/crates/external_services/src/grpc_client/revenue_recovery/recovery_decider_client.rs b/crates/external_services/src/grpc_client/revenue_recovery/recovery_decider_client.rs
index 877de2bc77b..aa6b3c4908c 100644
--- a/crates/external_services/src/grpc_client/revenue_recovery/recovery_decider_client.rs
+++ b/crates/external_services/src/grpc_client/revenue_recovery/recovery_decider_client.rs
@@ -79,10 +79,9 @@ impl RecoveryDeciderClientConfig {
             .base_url
             .parse::<tonic::transport::Uri>()
             .map_err(Report::from)
-            .change_context(RecoveryDeciderError::ConfigError(format!(
-                "Invalid URI: {}",
-                self.base_url
-            )))?;
+            .change_context_lazy(|| {
+                RecoveryDeciderError::ConfigError(format!("Invalid URI: {}", self.base_url))
+            })?;
 
         let service_client = DeciderClient::with_origin(hyper_client, uri);
 
diff --git a/crates/hyperswitch_connectors/src/connectors/adyen/transformers.rs b/crates/hyperswitch_connectors/src/connectors/adyen/transformers.rs
index 200f6b400c3..679de5cdd1b 100644
--- a/crates/hyperswitch_connectors/src/connectors/adyen/transformers.rs
+++ b/crates/hyperswitch_connectors/src/connectors/adyen/transformers.rs
@@ -2222,7 +2222,7 @@ impl TryFrom<(&Card, Option<Secret<String>>)> for AdyenPaymentMethod<'_> {
             expiry_year: card.get_expiry_year_4_digit(),
             cvc: Some(card.card_cvc.clone()),
             holder_name: card_holder_name,
-            brand: card.card_network.clone().and_then(get_adyen_card_network),
+            brand: card.card_network.and_then(get_adyen_card_network),
             network_payment_reference: None,
         };
         Ok(AdyenPaymentMethod::AdyenCard(Box::new(adyen_card)))
@@ -2386,7 +2386,7 @@ impl TryFrom<(&WalletData, &PaymentsAuthorizeRouterData)> for AdyenPaymentMethod
                             .billing_address
                             .name
                             .or(item.get_optional_billing_full_name()),
-                        brand: Some(paze_decrypted_data.payment_card_network.clone())
+                        brand: Some(paze_decrypted_data.payment_card_network)
                             .and_then(get_adyen_card_network),
                         network_payment_reference: None,
                     };
@@ -2886,7 +2886,6 @@ impl
                     ) => {
                         let brand = match card_details_for_network_transaction_id
                             .card_network
-                            .clone()
                             .and_then(get_adyen_card_network)
                         {
                             Some(card_network) => card_network,
diff --git a/crates/hyperswitch_connectors/src/connectors/bankofamerica/transformers.rs b/crates/hyperswitch_connectors/src/connectors/bankofamerica/transformers.rs
index 30454d3aaee..2b146d1e262 100644
--- a/crates/hyperswitch_connectors/src/connectors/bankofamerica/transformers.rs
+++ b/crates/hyperswitch_connectors/src/connectors/bankofamerica/transformers.rs
@@ -2579,7 +2579,7 @@ impl TryFrom<&hyperswitch_domain_models::payment_method_data::Card> for PaymentI
     fn try_from(
         ccard: &hyperswitch_domain_models::payment_method_data::Card,
     ) -> Result<Self, Self::Error> {
-        let card_type = match ccard.card_network.clone().and_then(get_boa_card_type) {
+        let card_type = match ccard.card_network.and_then(get_boa_card_type) {
             Some(card_network) => Some(card_network.to_string()),
             None => ccard.get_card_issuer().ok().map(String::from),
         };
diff --git a/crates/hyperswitch_connectors/src/connectors/barclaycard/transformers.rs b/crates/hyperswitch_connectors/src/connectors/barclaycard/transformers.rs
index b14d6c7409b..4970f4e7b3c 100644
--- a/crates/hyperswitch_connectors/src/connectors/barclaycard/transformers.rs
+++ b/crates/hyperswitch_connectors/src/connectors/barclaycard/transformers.rs
@@ -2874,11 +2874,7 @@ impl TryFrom<&hyperswitch_domain_models::payment_method_data::Card> for PaymentI
     fn try_from(
         ccard: &hyperswitch_domain_models::payment_method_data::Card,
     ) -> Result<Self, Self::Error> {
-        let card_type = match ccard
-            .card_network
-            .clone()
-            .and_then(get_barclaycard_card_type)
-        {
+        let card_type = match ccard.card_network.and_then(get_barclaycard_card_type) {
             Some(card_network) => Some(card_network.to_string()),
             None => ccard.get_card_issuer().ok().map(String::from),
         };
diff --git a/crates/hyperswitch_connectors/src/connectors/cybersource/transformers.rs b/crates/hyperswitch_connectors/src/connectors/cybersource/transformers.rs
index cbd97ccf845..f393095b3a4 100644
--- a/crates/hyperswitch_connectors/src/connectors/cybersource/transformers.rs
+++ b/crates/hyperswitch_connectors/src/connectors/cybersource/transformers.rs
@@ -171,11 +171,7 @@ impl TryFrom<&SetupMandateRouterData> for CybersourceZeroMandateRequest {
 
         let (payment_information, solution) = match item.request.payment_method_data.clone() {
             PaymentMethodData::Card(ccard) => {
-                let card_type = match ccard
-                    .card_network
-                    .clone()
-                    .and_then(get_cybersource_card_type)
-                {
+                let card_type = match ccard.card_network.and_then(get_cybersource_card_type) {
                     Some(card_network) => Some(card_network.to_string()),
                     None => ccard.get_card_issuer().ok().map(String::from),
                 };
@@ -1404,9 +1400,9 @@ impl
             })
             .ok();
 
-        let raw_card_type = ccard.card_network.clone().or(additional_card_network);
+        let raw_card_type = ccard.card_network.or(additional_card_network);
 
-        let card_type = match raw_card_type.clone().and_then(get_cybersource_card_type) {
+        let card_type = match raw_card_type.and_then(get_cybersource_card_type) {
             Some(card_network) => Some(card_network.to_string()),
             None => ccard.get_card_issuer().ok().map(String::from),
         };
@@ -1891,11 +1887,7 @@ impl
         let bill_to = build_bill_to(item.router_data.get_optional_billing(), email)?;
         let order_information = OrderInformationWithBill::from((item, bill_to));
 
-        let card_type = match ccard
-            .card_network
-            .clone()
-            .and_then(get_cybersource_card_type)
-        {
+        let card_type = match ccard.card_network.and_then(get_cybersource_card_type) {
             Some(card_network) => Some(card_network.to_string()),
             None => ccard.get_card_issuer().ok().map(String::from),
         };
@@ -2175,10 +2167,11 @@ impl
                         })?,
                 },
             }));
+        let card_network = google_pay_data.info.card_network.clone();
         let processing_information = ProcessingInformation::try_from((
             item,
             Some(PaymentSolution::GooglePay),
-            Some(google_pay_data.info.card_network.clone()),
+            Some(card_network.clone()),
         ))?;
         let client_reference_information = ClientReferenceInformation::from(item);
         let merchant_defined_information = item
@@ -2188,11 +2181,10 @@ impl
             .clone()
             .map(convert_metadata_to_merchant_defined_info);
 
-        let ucaf_collection_indicator =
-            match google_pay_data.info.card_network.to_lowercase().as_str() {
-                "mastercard" => Some("2".to_string()),
-                _ => None,
-            };
+        let ucaf_collection_indicator = match card_network.to_lowercase().as_str() {
+            "mastercard" => Some("2".to_string()),
+            _ => None,
+        };
 
         Ok(Self {
             processing_information,
@@ -2638,11 +2630,7 @@ impl TryFrom<&CybersourceRouterData<&PaymentsAuthorizeRouterData>> for Cybersour
     ) -> Result<Self, Self::Error> {
         match item.router_data.request.payment_method_data.clone() {
             PaymentMethodData::Card(ccard) => {
-                let card_type = match ccard
-                    .card_network
-                    .clone()
-                    .and_then(get_cybersource_card_type)
-                {
+                let card_type = match ccard.card_network.and_then(get_cybersource_card_type) {
                     Some(card_network) => Some(card_network.to_string()),
                     None => ccard.get_card_issuer().ok().map(String::from),
                 };
@@ -3401,11 +3389,7 @@ impl TryFrom<&CybersourceRouterData<&PaymentsPreProcessingRouterData>>
         )?;
         let payment_information = match payment_method_data {
             PaymentMethodData::Card(ccard) => {
-                let card_type = match ccard
-                    .card_network
-                    .clone()
-                    .and_then(get_cybersource_card_type)
-                {
+                let card_type = match ccard.card_network.and_then(get_cybersource_card_type) {
                     Some(card_network) => Some(card_network.to_string()),
                     None => ccard.get_card_issuer().ok().map(String::from),
                 };
diff --git a/crates/hyperswitch_connectors/src/connectors/netcetera/transformers.rs b/crates/hyperswitch_connectors/src/connectors/netcetera/transformers.rs
index e8f1e8ffc64..ce231f7e2ac 100644
--- a/crates/hyperswitch_connectors/src/connectors/netcetera/transformers.rs
+++ b/crates/hyperswitch_connectors/src/connectors/netcetera/transformers.rs
@@ -393,7 +393,6 @@ impl TryFrom<&NetceteraRouterData<&PreAuthNRouterData>> for NetceteraPreAuthenti
                 .request
                 .card
                 .card_network
-                .clone()
                 .map(|card_network| {
                     is_cobadged_card().map(|is_cobadged_card| {
                         is_cobadged_card
@@ -516,7 +515,6 @@ impl TryFrom<&NetceteraRouterData<&ConnectorAuthenticationRouterData>>
             acct_number: card.card_number,
             scheme_id: card
                 .card_network
-                .clone()
                 .and_then(|card_network| {
                     is_cobadged_card.then_some(netcetera_types::SchemeId::try_from(card_network))
                 })
diff --git a/crates/hyperswitch_connectors/src/connectors/riskified/transformers/api.rs b/crates/hyperswitch_connectors/src/connectors/riskified/transformers/api.rs
index 61a4d8e157a..ecaed0d31ff 100644
--- a/crates/hyperswitch_connectors/src/connectors/riskified/transformers/api.rs
+++ b/crates/hyperswitch_connectors/src/connectors/riskified/transformers/api.rs
@@ -269,7 +269,7 @@ impl TryFrom<&RiskifiedRouterData<&FrmCheckoutRouterData>> for RiskifiedPayments
                             .clone()
                             .map(|last_four| format!("XXXX-XXXX-XXXX-{last_four}"))
                             .map(Secret::new),
-                        credit_card_company: card_info.card_network.clone(),
+                        credit_card_company: card_info.card_network,
                     }),
                     Some(_) | None => None,
                 },
diff --git a/crates/hyperswitch_connectors/src/connectors/stripe/transformers.rs b/crates/hyperswitch_connectors/src/connectors/stripe/transformers.rs
index c7b728db21f..930cc3f23af 100644
--- a/crates/hyperswitch_connectors/src/connectors/stripe/transformers.rs
+++ b/crates/hyperswitch_connectors/src/connectors/stripe/transformers.rs
@@ -1567,7 +1567,6 @@ impl
             payment_method_auth_type: Some(payment_method_auth_type),
             payment_method_data_card_preferred_network: card
                 .card_network
-                .clone()
                 .and_then(get_stripe_card_network),
             request_incremental_authorization: if request_incremental_authorization {
                 Some(StripeRequestIncrementalAuthorization::IfAvailable)
@@ -1930,7 +1929,6 @@ impl TryFrom<(&PaymentsAuthorizeRouterData, MinorUnit)> for PaymentIntentRequest
                             payment_method_data_card_preferred_network:
                                 card_details_for_network_transaction_id
                                     .card_network
-                                    .clone()
                                     .and_then(get_stripe_card_network),
                             request_incremental_authorization: None,
                             request_extended_authorization: None,
diff --git a/crates/hyperswitch_connectors/src/connectors/worldpayvantiv/transformers.rs b/crates/hyperswitch_connectors/src/connectors/worldpayvantiv/transformers.rs
index 98761cb8cc9..b1350a708b1 100644
--- a/crates/hyperswitch_connectors/src/connectors/worldpayvantiv/transformers.rs
+++ b/crates/hyperswitch_connectors/src/connectors/worldpayvantiv/transformers.rs
@@ -3900,7 +3900,7 @@ fn get_vantiv_card_data(
 > {
     match payment_method_data {
         PaymentMethodData::Card(card) => {
-            let card_type = match card.card_network.clone() {
+            let card_type = match card.card_network {
                 Some(card_type) => WorldpayvativCardType::try_from(card_type)?,
                 None => WorldpayvativCardType::try_from(&card.get_card_issuer()?)?,
             };
@@ -3918,7 +3918,7 @@ fn get_vantiv_card_data(
             ))
         }
         PaymentMethodData::CardDetailsForNetworkTransactionId(card_data) => {
-            let card_type = match card_data.card_network.clone() {
+            let card_type = match card_data.card_network {
                 Some(card_type) => WorldpayvativCardType::try_from(card_type)?,
                 None => WorldpayvativCardType::try_from(&card_data.get_card_issuer()?)?,
             };
diff --git a/crates/hyperswitch_connectors/src/utils.rs b/crates/hyperswitch_connectors/src/utils.rs
index 85051693105..bfbbe05cae1 100644
--- a/crates/hyperswitch_connectors/src/utils.rs
+++ b/crates/hyperswitch_connectors/src/utils.rs
@@ -2034,7 +2034,6 @@ impl PaymentsAuthorizeRequestData for PaymentsAuthorizeData {
         match &self.additional_payment_method_data {
             Some(payments::AdditionalPaymentData::Card(card_data)) => Ok(card_data
                 .card_network
-                .clone()
                 .ok_or_else(|| errors::ConnectorError::MissingRequiredField {
                     field_name: "card_network",
                 })?),
diff --git a/crates/hyperswitch_domain_models/src/bulk_tokenization.rs b/crates/hyperswitch_domain_models/src/bulk_tokenization.rs
index ccefd3e34e1..2f0dfe2de52 100644
--- a/crates/hyperswitch_domain_models/src/bulk_tokenization.rs
+++ b/crates/hyperswitch_domain_models/src/bulk_tokenization.rs
@@ -201,7 +201,7 @@ impl ForeignFrom<&TokenizeCardRequest> for payment_methods_api::MigrateCardDetai
             card_holder_name: card.card_holder_name.clone(),
             nick_name: card.nick_name.clone(),
             card_issuing_country: card.card_issuing_country.clone(),
-            card_network: card.card_network.clone(),
+            card_network: card.card_network,
             card_issuer: card.card_issuer.clone(),
             card_type: card
                 .card_type
diff --git a/crates/hyperswitch_domain_models/src/payment_method_data.rs b/crates/hyperswitch_domain_models/src/payment_method_data.rs
index 59202837dc2..fdda9e865a3 100644
--- a/crates/hyperswitch_domain_models/src/payment_method_data.rs
+++ b/crates/hyperswitch_domain_models/src/payment_method_data.rs
@@ -2391,7 +2391,7 @@ impl CardDetailsPaymentMethod {
             card_number: None,
             card_holder_name: self.card_holder_name.clone(),
             card_issuer: self.card_issuer.clone(),
-            card_network: self.card_network.clone(),
+            card_network: self.card_network,
             card_type: self.card_type.clone(),
             issuer_country: self.clone().get_issuer_country_alpha2(),
             last4_digits: self.last4_digits,
@@ -2536,7 +2536,7 @@ impl From<Card> for payment_methods::CardDetail {
             card_holder_name: None,
             nick_name: None,
             card_issuing_country: None,
-            card_network: card_data.card_network.clone(),
+            card_network: card_data.card_network,
             card_issuer: None,
             card_type: None,
         }
@@ -2553,7 +2553,7 @@ impl From<NetworkTokenData> for payment_methods::CardDetail {
             card_holder_name: None,
             nick_name: None,
             card_issuing_country: None,
-            card_network: network_token_data.card_network.clone(),
+            card_network: network_token_data.card_network,
             card_issuer: None,
             card_type: None,
         }
diff --git a/crates/hyperswitch_domain_models/src/payments.rs b/crates/hyperswitch_domain_models/src/payments.rs
index 370bafd2a90..d1b1a155ec0 100644
--- a/crates/hyperswitch_domain_models/src/payments.rs
+++ b/crates/hyperswitch_domain_models/src/payments.rs
@@ -1083,7 +1083,7 @@ where
         let billing_connector_payment_method_details = Some(
             diesel_models::types::BillingConnectorPaymentMethodDetails::Card(
                 diesel_models::types::BillingConnectorAdditionalCardInfo {
-                    card_network: self.revenue_recovery_data.card_network.clone(),
+                    card_network: self.revenue_recovery_data.card_network,
                     card_issuer: self.revenue_recovery_data.card_issuer.clone(),
                 },
             ),
diff --git a/crates/kgraph_utils/src/mca.rs b/crates/kgraph_utils/src/mca.rs
index b33fdde3099..eddde1e8709 100644
--- a/crates/kgraph_utils/src/mca.rs
+++ b/crates/kgraph_utils/src/mca.rs
@@ -852,10 +852,10 @@ fn compile_config_graph(
                     ));
                 }
                 (kgraph_types::PaymentMethodFilterKey::CardNetwork(cn), filter) => {
-                    let dir_val_cn = cn.clone().into_dir_value()?;
+                    let dir_val_cn = cn.into_dir_value()?;
                     pmt_enabled.push(dir_val_cn);
                     let cn_node = builder.make_value_node(
-                        cn.clone().into_dir_value().map(Into::into)?,
+                        cn.into_dir_value().map(Into::into)?,
                         Some("CardNetwork"),
                         None::<()>,
                     );
diff --git a/crates/payment_methods/src/core/migration/payment_methods.rs b/crates/payment_methods/src/core/migration/payment_methods.rs
index 494e1987e21..d400e79f407 100644
--- a/crates/payment_methods/src/core/migration/payment_methods.rs
+++ b/crates/payment_methods/src/core/migration/payment_methods.rs
@@ -60,7 +60,7 @@ pub async fn migrate_payment_method(
 
     req.card = Some(api_models::payment_methods::MigrateCardDetail {
         card_issuing_country: card_bin_details.issuer_country.clone(),
-        card_network: card_bin_details.card_network.clone(),
+        card_network: card_bin_details.card_network,
         card_issuer: card_bin_details.card_issuer.clone(),
         card_type: card_bin_details.card_type.clone(),
         ..card_details.clone()
@@ -72,7 +72,7 @@ pub async fn migrate_payment_method(
                 merchant_context.get_merchant_key_store(),
                 connector_mandate_details,
                 merchant_id,
-                card_bin_details.card_network.clone(),
+                card_bin_details.card_network,
             )
             .await?;
     };
@@ -248,8 +248,7 @@ impl
             Ok(Self {
                 scheme: card_details
                     .card_network
-                    .clone()
-                    .or(card_bin_info.card_network.clone())
+                    .or(card_bin_info.card_network)
                     .map(|card_network| card_network.to_string()),
                 last4_digits: Some(last4_digits.clone()),
                 issuer_country: card_details
@@ -268,10 +267,7 @@ impl
                     .card_issuer
                     .clone()
                     .or(card_bin_info.card_issuer),
-                card_network: card_details
-                    .card_network
-                    .clone()
-                    .or(card_bin_info.card_network),
+                card_network: card_details.card_network.or(card_bin_info.card_network),
                 card_type: card_details.card_type.clone().or(card_bin_info.card_type),
                 saved_to_locker: false,
             })
@@ -279,7 +275,6 @@ impl
             Ok(Self {
                 scheme: card_details
                     .card_network
-                    .clone()
                     .map(|card_network| card_network.to_string()),
                 last4_digits: Some(last4_digits.clone()),
                 issuer_country: card_details.card_issuing_country.clone(),
@@ -292,7 +287,7 @@ impl
                 nick_name: card_details.nick_name.clone(),
                 card_isin: Some(card_isin.clone()),
                 card_issuer: card_details.card_issuer.clone(),
-                card_network: card_details.card_network.clone(),
+                card_network: card_details.card_network,
                 card_type: card_details.card_type.clone(),
                 saved_to_locker: false,
             })
@@ -347,10 +342,7 @@ impl
                     .card_issuer
                     .clone()
                     .or(card_bin_info.card_issuer),
-                card_network: card_details
-                    .card_network
-                    .clone()
-                    .or(card_bin_info.card_network),
+                card_network: card_details.card_network.or(card_bin_info.card_network),
                 card_type: card_details.card_type.clone().or(card_bin_info.card_type),
                 saved_to_locker: false,
             })
@@ -372,7 +364,7 @@ impl
                 nick_name: card_details.nick_name.clone(),
                 card_isin: Some(card_isin.clone()),
                 card_issuer: card_details.card_issuer.clone(),
-                card_network: card_details.card_network.clone(),
+                card_network: card_details.card_network,
                 card_type: card_details.card_type.clone(),
                 saved_to_locker: false,
             })
diff --git a/crates/payment_methods/src/helpers.rs b/crates/payment_methods/src/helpers.rs
index b3450c4aed0..a3ade983ace 100644
--- a/crates/payment_methods/src/helpers.rs
+++ b/crates/payment_methods/src/helpers.rs
@@ -19,7 +19,7 @@ pub async fn populate_bin_details_for_payment_method_create(
     {
         api::CardDetail {
             card_issuer: card_details.card_issuer.to_owned(),
-            card_network: card_details.card_network.clone(),
+            card_network: card_details.card_network,
             card_type: card_details.card_type.to_owned(),
             card_issuing_country: card_details.card_issuing_country.to_owned(),
             card_exp_month: card_details.card_exp_month.clone(),
@@ -41,7 +41,7 @@ pub async fn populate_bin_details_for_payment_method_create(
             .flatten()
             .map(|card_info| api::CardDetail {
                 card_issuer: card_info.card_issuer,
-                card_network: card_info.card_network.clone(),
+                card_network: card_info.card_network,
                 card_type: card_info.card_type,
                 card_issuing_country: card_info.card_issuing_country,
                 card_exp_month: card_details.card_exp_month.clone(),
diff --git a/crates/router/src/core/cards_info.rs b/crates/router/src/core/cards_info.rs
index 9b9982df654..3e993709abe 100644
--- a/crates/router/src/core/cards_info.rs
+++ b/crates/router/src/core/cards_info.rs
@@ -212,7 +212,7 @@ impl<'a> CardInfoMigrateExecutor<'a> {
             self.record.card_iin.clone(),
             card_info_models::UpdateCardInfo {
                 card_issuer: self.record.card_issuer.clone(),
-                card_network: self.record.card_network.clone(),
+                card_network: self.record.card_network,
                 card_type: self.record.card_type.clone(),
                 card_subtype: self.record.card_subtype.clone(),
                 card_issuing_country: self.record.card_issuing_country.clone(),
diff --git a/crates/router/src/core/debit_routing.rs b/crates/router/src/core/debit_routing.rs
index a09fc2ab1f5..1ce8ca3d39e 100644
--- a/crates/router/src/core/debit_routing.rs
+++ b/crates/router/src/core/debit_routing.rs
@@ -734,7 +734,7 @@ fn find_matching_networks(
 
             api::ConnectorRoutingData {
                 connector_data: connector_routing_data.connector_data.clone(),
-                network: Some(network.clone()),
+                network: Some(*network),
                 action_type: connector_routing_data.action_type.clone(),
             }
         })
diff --git a/crates/router/src/core/payment_methods.rs b/crates/router/src/core/payment_methods.rs
index 06622842281..2279188d789 100644
--- a/crates/router/src/core/payment_methods.rs
+++ b/crates/router/src/core/payment_methods.rs
@@ -724,7 +724,7 @@ pub(crate) fn get_payment_method_create_request(
                     .transpose()
                     .ok()
                     .flatten(),
-                card_network: card.card_network.clone(),
+                card_network: card.card_network,
                 card_issuer: card.card_issuer.clone(),
                 card_type: card
                     .card_type
@@ -771,7 +771,7 @@ pub(crate) async fn get_payment_method_create_request(
             Some(payment_method) => match pm_data {
                 domain::PaymentMethodData::Card(card) => {
                     let card_network = get_card_network_with_us_local_debit_network_override(
-                        card.card_network.clone(),
+                        card.card_network,
                         card.co_badged_card_data.as_ref(),
                     );
 
@@ -782,7 +782,7 @@ pub(crate) async fn get_payment_method_create_request(
                         card_holder_name: billing_name,
                         nick_name: card.nick_name.clone(),
                         card_issuing_country: card.card_issuing_country.clone(),
-                        card_network: card_network.clone(),
+                        card_network,
                         card_issuer: card.card_issuer.clone(),
                         card_type: card.card_type.clone(),
                     };
@@ -1312,7 +1312,7 @@ pub async fn populate_bin_details_for_payment_method(
                             .ok()
                             .flatten()
                     }),
-                    card_network: card_info.as_ref().and_then(|val| val.card_network.clone()),
+                    card_network: card_info.as_ref().and_then(|val| val.card_network),
                     card_issuer: card_info.as_ref().and_then(|val| val.card_issuer.clone()),
                     card_type: card_info.as_ref().and_then(|val| {
                         val.card_type
@@ -1380,7 +1380,7 @@ impl PaymentMethodExt for domain::PaymentMethodVaultingData {
                                 .ok()
                                 .flatten()
                         }),
-                        card_network: card_info.as_ref().and_then(|val| val.card_network.clone()),
+                        card_network: card_info.as_ref().and_then(|val| val.card_network),
                         card_issuer: card_info.as_ref().and_then(|val| val.card_issuer.clone()),
                         card_type: card_info.as_ref().and_then(|val| {
                             val.card_type
diff --git a/crates/router/src/core/payment_methods/cards.rs b/crates/router/src/core/payment_methods/cards.rs
index 322557129d4..68f945b51ba 100644
--- a/crates/router/src/core/payment_methods/cards.rs
+++ b/crates/router/src/core/payment_methods/cards.rs
@@ -366,7 +366,7 @@ impl PaymentMethodsController for PmCards<'_> {
             card_holder_name: network_token_data.card_holder_name.clone(),
             nick_name: network_token_data.nick_name.clone(),
             card_issuing_country: network_token_data.card_issuing_country.clone(),
-            card_network: network_token_data.card_network.clone(),
+            card_network: network_token_data.card_network,
             card_issuer: network_token_data.card_issuer.clone(),
             card_type: network_token_data.card_type.clone(),
         };
@@ -1539,7 +1539,7 @@ pub async fn add_payment_method_data(
                             expiry_year: Some(card.card_exp_year),
                             nick_name: card.nick_name,
                             card_holder_name: card.card_holder_name,
-                            card_network: card_info.as_ref().and_then(|ci| ci.card_network.clone()),
+                            card_network: card_info.as_ref().and_then(|ci| ci.card_network),
                             card_isin: Some(card_isin),
                             card_issuer: card_info.as_ref().and_then(|ci| ci.card_issuer.clone()),
                             card_type: card_info.as_ref().and_then(|ci| ci.card_type.clone()),
@@ -3311,7 +3311,7 @@ pub async fn list_payment_methods(
             let mut card_network_types = vec![];
             for card_network_type in payment_method_types_hm.1 {
                 card_network_types.push(CardNetworkTypes {
-                    card_network: card_network_type.0.clone(),
+                    card_network: *card_network_type.0,
                     eligible_connectors: card_network_type.1.clone(),
                     surcharge_details: None,
                 })
diff --git a/crates/router/src/core/payment_methods/surcharge_decision_configs.rs b/crates/router/src/core/payment_methods/surcharge_decision_configs.rs
index 6c448dfa62a..1b626296877 100644
--- a/crates/router/src/core/payment_methods/surcharge_decision_configs.rs
+++ b/crates/router/src/core/payment_methods/surcharge_decision_configs.rs
@@ -178,7 +178,7 @@ pub async fn perform_surcharge_decision_management_for_payment_method_list(
             if let Some(card_network_list) = &mut payment_method_type_response.card_networks {
                 for card_network_type in card_network_list.iter_mut() {
                     backend_input.payment_method.card_network =
-                        Some(card_network_type.card_network.clone());
+                        Some(card_network_type.card_network);
                     let surcharge_details = surcharge_source
                         .generate_surcharge_details_and_populate_surcharge_metadata(
                             &backend_input,
@@ -188,7 +188,7 @@ pub async fn perform_surcharge_decision_management_for_payment_method_list(
                                 types::SurchargeKey::PaymentMethodData(
                                     payment_methods_enabled.payment_method,
                                     payment_method_type_response.payment_method_type,
-                                    Some(card_network_type.card_network.clone()),
+                                    Some(card_network_type.card_network),
                                 ),
                             ),
                         )?;
@@ -414,7 +414,7 @@ pub async fn perform_surcharge_decision_management_for_saved_cards(
 
 //         let card_network = match customer_payment_method.payment_method_data.as_ref() {
 //             Some(api_models::payment_methods::PaymentMethodListData::Card(card)) => {
-//                 card.card_network.clone()
+//                 card.card_network
 //             }
 //             _ => None,
 //         };
diff --git a/crates/router/src/core/payment_methods/tokenize.rs b/crates/router/src/core/payment_methods/tokenize.rs
index f0eaea45d98..f689289d724 100644
--- a/crates/router/src/core/payment_methods/tokenize.rs
+++ b/crates/router/src/core/payment_methods/tokenize.rs
@@ -269,7 +269,7 @@ where
             card_holder_name: card_details.card_holder_name.clone(),
             issuer_country: card_details.card_issuing_country.clone(),
             card_issuer: card_details.card_issuer.clone(),
-            card_network: card_details.card_network.clone(),
+            card_network: card_details.card_network,
             card_type: card_details.card_type.clone(),
             saved_to_locker,
             co_badged_card_data: card_details
@@ -299,7 +299,7 @@ where
             card_holder_name: card_details.card_holder_name.clone(),
             issuer_country: card_details.card_issuing_country.clone(),
             card_issuer: card_details.card_issuer.clone(),
-            card_network: card_details.card_network.clone(),
+            card_network: card_details.card_network,
             card_type: card_details.card_type.clone(),
             saved_to_locker,
             co_badged_card_data: None,
diff --git a/crates/router/src/core/payment_methods/tokenize/card_executor.rs b/crates/router/src/core/payment_methods/tokenize/card_executor.rs
index 905d2d3a126..eab9c423fa4 100644
--- a/crates/router/src/core/payment_methods/tokenize/card_executor.rs
+++ b/crates/router/src/core/payment_methods/tokenize/card_executor.rs
@@ -117,9 +117,7 @@ impl<'a> NetworkTokenizationBuilder<'a, CardRequestValidated> {
                 }),
             card_network: optional_card_info
                 .as_ref()
-                .map_or(card_req.card_network.clone(), |card_info| {
-                    card_info.card_network.clone()
-                }),
+                .map_or(card_req.card_network, |card_info| card_info.card_network),
             card_type: optional_card_info.as_ref().map_or(
                 card_req
                     .card_type
@@ -255,7 +253,7 @@ impl<'a> NetworkTokenizationBuilder<'a, CardTokenStored> {
             card_holder_name: card.card_holder_name.clone(),
             card_fingerprint: None,
             nick_name: card.nick_name.clone(),
-            card_network: card.card_network.clone(),
+            card_network: card.card_network,
             card_isin: Some(card.card_number.clone().get_card_isin()),
             card_issuer: card.card_issuer.clone(),
             card_type: card.card_type.clone(),
@@ -554,7 +552,7 @@ impl CardNetworkTokenizeExecutor<'_, domain::TokenizeCardRequest> {
                 card_holder_name: card_details.card_holder_name.clone(),
                 nick_name: card_details.nick_name.clone(),
                 card_issuing_country: card_details.card_issuing_country.clone(),
-                card_network: card_details.card_network.clone(),
+                card_network: card_details.card_network,
                 card_issuer: card_details.card_issuer.clone(),
                 card_type: card_details.card_type.clone(),
             }),
diff --git a/crates/router/src/core/payment_methods/tokenize/payment_method_executor.rs b/crates/router/src/core/payment_methods/tokenize/payment_method_executor.rs
index ca9c2d9d140..d71b32a3dab 100644
--- a/crates/router/src/core/payment_methods/tokenize/payment_method_executor.rs
+++ b/crates/router/src/core/payment_methods/tokenize/payment_method_executor.rs
@@ -144,7 +144,7 @@ impl<'a> NetworkTokenizationBuilder<'a, PmValidated> {
                 .and_then(|card_info| card_info.card_issuer.clone()),
             card_network: optional_card_info
                 .as_ref()
-                .and_then(|card_info| card_info.card_network.clone()),
+                .and_then(|card_info| card_info.card_network),
             card_type: optional_card_info
                 .as_ref()
                 .and_then(|card_info| card_info.card_type.clone()),
diff --git a/crates/router/src/core/payment_methods/transformers.rs b/crates/router/src/core/payment_methods/transformers.rs
index 53c07650507..247a1ead546 100644
--- a/crates/router/src/core/payment_methods/transformers.rs
+++ b/crates/router/src/core/payment_methods/transformers.rs
@@ -458,7 +458,6 @@ pub fn mk_add_card_response_hs(
     let card = api::CardDetailFromLocker {
         scheme: card
             .card_network
-            .clone()
             .map(|card_network| card_network.to_string()),
         last4_digits: Some(last4_digits),
         issuer_country: card.card_issuing_country,
diff --git a/crates/router/src/core/payments/helpers.rs b/crates/router/src/core/payments/helpers.rs
index 37703cd1bec..6c4e6696d2e 100644
--- a/crates/router/src/core/payments/helpers.rs
+++ b/crates/router/src/core/payments/helpers.rs
@@ -4939,7 +4939,7 @@ pub async fn get_additional_payment_data(
                     logger::debug!("Co-badged card data found");
 
                     (
-                        card_data.card_network.clone(),
+                        card_data.card_network,
                         co_badged_data
                             .co_badged_card_networks_info
                             .get_signature_network(),
@@ -4949,7 +4949,7 @@ pub async fn get_additional_payment_data(
                 .or_else(|| {
                     is_cobadged_based_on_regex.then(|| {
                         logger::debug!("Card network is cobadged (regex-based detection)");
-                        (card_data.card_network.clone(), None, None)
+                        (card_data.card_network, None, None)
                     })
                 })
                 .unwrap_or_else(|| {
@@ -4981,7 +4981,7 @@ pub async fn get_additional_payment_data(
                         payment_checks: None,
                         authentication_data: None,
                         is_regulated,
-                        signature_network: signature_network.clone(),
+                        signature_network,
                     }),
                 )))
             } else {
@@ -4999,7 +4999,7 @@ pub async fn get_additional_payment_data(
                         api_models::payments::AdditionalPaymentData::Card(Box::new(
                             api_models::payments::AdditionalCardInfo {
                                 card_issuer: card_info.card_issuer,
-                                card_network: card_network.clone().or(card_info.card_network),
+                                card_network: card_network.or(card_info.card_network),
                                 bank_code: card_info.bank_code,
                                 card_type: card_info.card_type,
                                 card_issuing_country: card_info.card_issuing_country,
@@ -5013,7 +5013,7 @@ pub async fn get_additional_payment_data(
                                 payment_checks: None,
                                 authentication_data: None,
                                 is_regulated,
-                                signature_network: signature_network.clone(),
+                                signature_network,
                             },
                         ))
                     });
@@ -5035,7 +5035,7 @@ pub async fn get_additional_payment_data(
                             payment_checks: None,
                             authentication_data: None,
                             is_regulated,
-                            signature_network: signature_network.clone(),
+                            signature_network,
                         },
                     ))
                 })))
@@ -5254,7 +5254,7 @@ pub async fn get_additional_payment_data(
                 .attach_printable(
                     "Card cobadge check failed due to an invalid card network regex",
                 )? {
-                true => card_data.card_network.clone(),
+                true => card_data.card_network,
                 false => None,
             };
 
@@ -5300,7 +5300,7 @@ pub async fn get_additional_payment_data(
                         api_models::payments::AdditionalPaymentData::Card(Box::new(
                             api_models::payments::AdditionalCardInfo {
                                 card_issuer: card_info.card_issuer,
-                                card_network: card_network.clone().or(card_info.card_network),
+                                card_network: card_network.or(card_info.card_network),
                                 bank_code: card_info.bank_code,
                                 card_type: card_info.card_type,
                                 card_issuing_country: card_info.card_issuing_country,
@@ -6499,7 +6499,7 @@ pub fn get_key_params_for_surcharge_details(
             Some((
                 common_enums::PaymentMethod::Card,
                 common_enums::PaymentMethodType::Credit,
-                card.card_network.clone(),
+                card.card_network,
             ))
         }
         domain::PaymentMethodData::CardRedirect(card_redirect_data) => Some((
@@ -7337,7 +7337,7 @@ pub async fn validate_merchant_connector_ids_in_connector_mandate_details(
         let payments_map = payment_mandate_reference.0.clone();
         for (migrating_merchant_connector_id, migrating_connector_mandate_details) in payments_map {
             match (
-                card_network.clone(),
+                card_network,
                 merchant_connector_account_details_hash_map.get(&migrating_merchant_connector_id),
             ) {
                 (Some(enums::CardNetwork::Discover), Some(merchant_connector_account_details)) => {
diff --git a/crates/router/src/core/payments/operations/payment_attempt_record.rs b/crates/router/src/core/payments/operations/payment_attempt_record.rs
index 9f630c8424b..6aaece02dc0 100644
--- a/crates/router/src/core/payments/operations/payment_attempt_record.rs
+++ b/crates/router/src/core/payments/operations/payment_attempt_record.rs
@@ -202,7 +202,7 @@ impl<F: Send + Clone + Sync>
             retry_count: request.retry_count,
             invoice_next_billing_time: request.invoice_next_billing_time,
             triggered_by: request.triggered_by,
-            card_network: request.card_network.clone(),
+            card_network: request.card_network,
             card_issuer: request.card_issuer.clone(),
         };
         let payment_address = hyperswitch_domain_models::payment_address::PaymentAddress::new(
diff --git a/crates/router/src/core/payments/operations/payment_confirm.rs b/crates/router/src/core/payments/operations/payment_confirm.rs
index cbfdd05362c..341350ac765 100644
--- a/crates/router/src/core/payments/operations/payment_confirm.rs
+++ b/crates/router/src/core/payments/operations/payment_confirm.rs
@@ -1156,7 +1156,6 @@ impl<F: Clone + Send + Sync> Domain<F, api::PaymentsRequest, PaymentData<F>> for
             let acquirer_config = additional_card_info.as_ref().and_then(|card_info| {
                 card_info
                     .card_network
-                    .clone()
                     .and_then(|network| business_profile.get_acquirer_details_from_network(network))
             });
             let country = business_profile
@@ -1186,7 +1185,7 @@ impl<F: Clone + Send + Sync> Domain<F, api::PaymentsRequest, PaymentData<F>> for
                         api_models::three_ds_decision_rule::PaymentMethodMetaData {
                             card_network: additional_card_info
                                 .as_ref()
-                                .and_then(|info| info.card_network.clone()),
+                                .and_then(|info| info.card_network),
                         },
                     ),
                     issuer: Some(api_models::three_ds_decision_rule::IssuerData {
diff --git a/crates/router/src/core/payments/routing.rs b/crates/router/src/core/payments/routing.rs
index 5e0f0eb1b81..e1c07763fe4 100644
--- a/crates/router/src/core/payments/routing.rs
+++ b/crates/router/src/core/payments/routing.rs
@@ -278,7 +278,7 @@ pub fn make_dsl_input(
             .payment_method_data
             .as_ref()
             .and_then(|pm_data| match pm_data {
-                domain::PaymentMethodData::Card(card) => card.card_network.clone(),
+                domain::PaymentMethodData::Card(card) => card.card_network,
 
                 _ => None,
             }),
@@ -390,7 +390,7 @@ pub fn make_dsl_input(
             .payment_method_data
             .as_ref()
             .and_then(|pm_data| match pm_data {
-                domain::PaymentMethodData::Card(card) => card.card_network.clone(),
+                domain::PaymentMethodData::Card(card) => card.card_network,
 
                 _ => None,
             }),
diff --git a/crates/router/src/core/payments/tokenization.rs b/crates/router/src/core/payments/tokenization.rs
index 759db4ef963..c625e3fcf08 100644
--- a/crates/router/src/core/payments/tokenization.rs
+++ b/crates/router/src/core/payments/tokenization.rs
@@ -610,7 +610,6 @@ where
                                 // scheme should be updated in case of co-badged cards
                                 let card_scheme = card
                                     .card_network
-                                    .clone()
                                     .map(|card_network| card_network.to_string())
                                     .or(existing_pm_data.scheme.clone());
 
@@ -983,7 +982,7 @@ async fn skip_saving_card_in_locker(
                 nick_name: None,
                 card_isin: card_isin.clone(),
                 card_issuer: card.card_issuer.clone(),
-                card_network: card.card_network.clone(),
+                card_network: card.card_network,
                 card_type: card.card_type.clone(),
                 saved_to_locker: false,
             };
@@ -1185,7 +1184,7 @@ pub async fn save_network_token_in_locker(
                             card_holder_name: None,
                             nick_name: None,
                             card_issuing_country: None,
-                            card_network: Some(token_response.card_brand.clone()),
+                            card_network: Some(token_response.card_brand),
                             card_issuer: None,
                             card_type: None,
                         };
diff --git a/crates/router/src/core/payments/transformers.rs b/crates/router/src/core/payments/transformers.rs
index 51a315bee8b..a9cc9437cb4 100644
--- a/crates/router/src/core/payments/transformers.rs
+++ b/crates/router/src/core/payments/transformers.rs
@@ -5687,7 +5687,7 @@ impl ForeignFrom<&diesel_models::types::BillingConnectorPaymentMethodDetails>
             diesel_models::types::BillingConnectorPaymentMethodDetails::Card(card_details) => {
                 Self::Card(api_models::payments::BillingConnectorAdditionalCardInfo {
                     card_issuer: card_details.card_issuer.clone(),
-                    card_network: card_details.card_network.clone(),
+                    card_network: card_details.card_network,
                 })
             }
         }
diff --git a/crates/router/src/core/payouts/helpers.rs b/crates/router/src/core/payouts/helpers.rs
index c80a089e5d4..c10651207a3 100644
--- a/crates/router/src/core/payouts/helpers.rs
+++ b/crates/router/src/core/payouts/helpers.rs
@@ -524,8 +524,7 @@ pub async fn save_payout_data_to_locker(
                     payment_method
                         .payment_method_issuer
                         .clone_from(&card_info.card_issuer);
-                    payment_method.card_network =
-                        card_info.card_network.clone().map(|cn| cn.to_string());
+                    payment_method.card_network = card_info.card_network.map(|cn| cn.to_string());
                     api::payment_methods::PaymentMethodsData::Card(
                         api::payment_methods::CardDetailsPaymentMethod {
                             last4_digits: card_details.as_ref().map(|c| c.card_number.get_last4()),
@@ -1491,7 +1490,7 @@ pub async fn get_additional_payout_data(
                     payout_additional::AdditionalPayoutMethodData::Card(Box::new(
                         payout_additional::CardAdditionalData {
                             card_issuer: card_info.card_issuer,
-                            card_network: card_info.card_network.clone(),
+                            card_network: card_info.card_network,
                             bank_code: card_info.bank_code,
                             card_type: card_info.card_type,
                             card_issuing_country: card_info.card_issuing_country,
diff --git a/crates/router/src/core/profile_acquirer.rs b/crates/router/src/core/profile_acquirer.rs
index dbe0beb54b0..5956c5aa134 100644
--- a/crates/router/src/core/profile_acquirer.rs
+++ b/crates/router/src/core/profile_acquirer.rs
@@ -34,7 +34,7 @@ pub async fn create_profile_acquirer(
     let incoming_acquirer_config = common_types::domain::AcquirerConfig {
         acquirer_assigned_merchant_id: request.acquirer_assigned_merchant_id.clone(),
         merchant_name: request.merchant_name.clone(),
-        network: request.network.clone(),
+        network: request.network,
         acquirer_bin: request.acquirer_bin.clone(),
         acquirer_ica: request.acquirer_ica.clone(),
         acquirer_fraud_rate: request.acquirer_fraud_rate,
diff --git a/crates/router/src/core/revenue_recovery.rs b/crates/router/src/core/revenue_recovery.rs
index f9662a745dd..cc85afb7d79 100644
--- a/crates/router/src/core/revenue_recovery.rs
+++ b/crates/router/src/core/revenue_recovery.rs
@@ -459,7 +459,7 @@ pub async fn perform_payments_sync(
             profile,
             merchant_context,
             new_revenue_recovery_payment_data,
-            payment_attempt,
+            &payment_attempt,
             &mut revenue_recovery_metadata,
         ),
     )
diff --git a/crates/router/src/core/revenue_recovery/types.rs b/crates/router/src/core/revenue_recovery/types.rs
index 3bdc822859f..216f8bcd45f 100644
--- a/crates/router/src/core/revenue_recovery/types.rs
+++ b/crates/router/src/core/revenue_recovery/types.rs
@@ -18,7 +18,8 @@ use diesel_models::{
 use error_stack::{self, ResultExt};
 use hyperswitch_domain_models::{
     api::ApplicationResponse,
-    business_profile, merchant_connector_account,
+    business_profile,
+    merchant_connector_account::MerchantConnectorAccount,
     merchant_context::{Context, MerchantContext},
     payments::{
         self as domain_payments, payment_attempt::PaymentAttempt, PaymentConfirmData,
@@ -128,7 +129,7 @@ impl RevenueRecoveryPaymentsAttemptStatus {
 
         let recovery_payment_attempt =
             hyperswitch_domain_models::revenue_recovery::RecoveryPaymentAttempt::from(
-                &payment_attempt,
+                payment_attempt,
             );
 
         let recovery_payment_tuple = recovery_incoming_flow::RecoveryPaymentTuple::new(
@@ -151,7 +152,7 @@ impl RevenueRecoveryPaymentsAttemptStatus {
                 // finish psync task as the payment was a success
                 db.as_scheduler()
                     .finish_process_with_business_status(
-                        process_tracker,
+                        process_tracker.clone(),
                         business_status::PSYNC_WORKFLOW_COMPLETE,
                     )
                     .await?;
@@ -214,7 +215,7 @@ impl RevenueRecoveryPaymentsAttemptStatus {
                 // TODO: Add support for retrying failed outgoing recordback webhooks
                 record_back_to_billing_connector(
                     state,
-                    &payment_attempt,
+                    payment_attempt,
                     payment_intent,
                     &revenue_recovery_payment_data.billing_mca,
                 )
@@ -294,7 +295,7 @@ impl RevenueRecoveryPaymentsAttemptStatus {
                 Box::pin(action.psync_response_handler(
                     state,
                     payment_intent,
-                    &process_tracker,
+                    process_tracker,
                     revenue_recovery_metadata,
                     revenue_recovery_payment_data,
                 ))
@@ -322,7 +323,7 @@ impl Decision {
         intent_status: enums::IntentStatus,
         called_connector: enums::PaymentConnectorTransmission,
         active_attempt_id: Option<id_type::GlobalAttemptId>,
-        revenue_recovery_data: &storage::revenue_recovery::RevenueRecoveryPaymentData,
+        revenue_recovery_data: &RevenueRecoveryPaymentData,
         payment_id: &id_type::GlobalPaymentId,
     ) -> RecoveryResult<Self> {
         logger::info!("Entering get_decision_based_on_params");
@@ -688,7 +689,7 @@ impl Action {
         state: &SessionState,
         payment_intent: &PaymentIntent,
         execute_task_process: &storage::ProcessTracker,
-        revenue_recovery_payment_data: &storage::revenue_recovery::RevenueRecoveryPaymentData,
+        revenue_recovery_payment_data: &RevenueRecoveryPaymentData,
         revenue_recovery_metadata: &mut PaymentRevenueRecoveryMetadata,
     ) -> Result<(), errors::ProcessTrackerError> {
         logger::info!("Entering execute_payment_task_response_handler");
@@ -822,7 +823,7 @@ impl Action {
 
     pub async fn payment_sync_call(
         state: &SessionState,
-        revenue_recovery_payment_data: &storage::revenue_recovery::RevenueRecoveryPaymentData,
+        revenue_recovery_payment_data: &RevenueRecoveryPaymentData,
         payment_intent: &PaymentIntent,
         process: &storage::ProcessTracker,
         profile: &domain::Profile,
@@ -914,7 +915,7 @@ impl Action {
                 }
 
                 RevenueRecoveryPaymentsAttemptStatus::Processing => {
-                    Ok(Self::SyncPayment(payment_attempt))
+                    Ok(Self::SyncPayment(payment_attempt.clone()))
                 }
                 RevenueRecoveryPaymentsAttemptStatus::InvalidStatus(action) => {
                     logger::info!(?action, "Invalid Payment Status For PCR PSync Payment");
@@ -935,7 +936,7 @@ impl Action {
         payment_intent: &PaymentIntent,
         psync_task_process: &storage::ProcessTracker,
         revenue_recovery_metadata: &mut PaymentRevenueRecoveryMetadata,
-        revenue_recovery_payment_data: &storage::revenue_recovery::RevenueRecoveryPaymentData,
+        revenue_recovery_payment_data: &RevenueRecoveryPaymentData,
     ) -> Result<(), errors::ProcessTrackerError> {
         logger::info!("Entering psync_response_handler");
 
@@ -1071,8 +1072,8 @@ impl Action {
     pub(crate) async fn decide_retry_failure_action(
         state: &SessionState,
         merchant_id: &id_type::MerchantId,
-        pt: storage::ProcessTracker,
-        revenue_recovery_payment_data: &storage::revenue_recovery::RevenueRecoveryPaymentData,
+        pt: &storage::ProcessTracker,
+        revenue_recovery_payment_data: &RevenueRecoveryPaymentData,
         payment_attempt: &PaymentAttempt,
         payment_intent: &PaymentIntent,
     ) -> RecoveryResult<Self> {
@@ -1305,7 +1306,7 @@ async fn record_back_to_billing_connector(
     state: &SessionState,
     payment_attempt: &PaymentAttempt,
     payment_intent: &PaymentIntent,
-    billing_mca: &merchant_connector_account::MerchantConnectorAccount,
+    billing_mca: &MerchantConnectorAccount,
 ) -> RecoveryResult<()> {
     logger::info!("Entering record_back_to_billing_connector");
 
@@ -1357,7 +1358,7 @@ async fn record_back_to_billing_connector(
 
 pub fn construct_invoice_record_back_router_data(
     state: &SessionState,
-    billing_mca: &merchant_connector_account::MerchantConnectorAccount,
+    billing_mca: &MerchantConnectorAccount,
     payment_attempt: &PaymentAttempt,
     payment_intent: &PaymentIntent,
 ) -> RecoveryResult<hyperswitch_domain_models::types::InvoiceRecordBackRouterData> {
diff --git a/crates/router/src/core/routing/helpers.rs b/crates/router/src/core/routing/helpers.rs
index 98b71748b35..f760ef23b12 100644
--- a/crates/router/src/core/routing/helpers.rs
+++ b/crates/router/src/core/routing/helpers.rs
@@ -365,7 +365,7 @@ impl DebitRoutingDecisionData {
         F: Send + Clone,
         D: OperationSessionGetters<F> + OperationSessionSetters<F> + Send + Sync + Clone,
     {
-        payment_data.set_card_network(self.card_network.clone());
+        payment_data.set_card_network(self.card_network);
         self.debit_routing_result
             .as_ref()
             .map(|data| payment_data.set_co_badged_card_data(data));
diff --git a/crates/router/src/core/unified_connector_service.rs b/crates/router/src/core/unified_connector_service.rs
index 32953cd5eaf..1683ff6bc44 100644
--- a/crates/router/src/core/unified_connector_service.rs
+++ b/crates/router/src/core/unified_connector_service.rs
@@ -282,7 +282,6 @@ pub fn build_unified_connector_service_payment_method(
 
             let card_network = card
                 .card_network
-                .clone()
                 .map(payments_grpc::CardNetwork::foreign_try_from)
                 .transpose()?;
 
diff --git a/crates/router/src/core/webhooks/network_tokenization_incoming.rs b/crates/router/src/core/webhooks/network_tokenization_incoming.rs
index a49ec40cbaa..90fb4037d42 100644
--- a/crates/router/src/core/webhooks/network_tokenization_incoming.rs
+++ b/crates/router/src/core/webhooks/network_tokenization_incoming.rs
@@ -392,7 +392,6 @@ impl From<(&api::payment_methods::CardDetail, &domain::PaymentMethod)>
             card: Some(data.clone()),
             card_network: data
                 .card_network
-                .clone()
                 .map(|card_network| card_network.to_string()),
             bank_transfer: None,
             wallet: None,
diff --git a/crates/router/src/core/webhooks/recovery_incoming.rs b/crates/router/src/core/webhooks/recovery_incoming.rs
index b56477cdac2..1b099988297 100644
--- a/crates/router/src/core/webhooks/recovery_incoming.rs
+++ b/crates/router/src/core/webhooks/recovery_incoming.rs
@@ -214,7 +214,11 @@ async fn handle_monitoring_threshold(
 ) -> CustomResult<webhooks::WebhookResponseTracker, errors::RevenueRecoveryError> {
     let db = &*state.store;
     let key_manager_state = &(state).into();
-    let monitoring_threshold_config = state.conf.revenue_recovery.monitoring_threshold_in_seconds;
+    let monitoring_threshold_config = state
+        .conf
+        .revenue_recovery
+        .monitoring_threshold_in_seconds
+        .into();
     let retry_algorithm_type = state.conf.revenue_recovery.retry_algorithm_type;
     let revenue_recovery_retry_algorithm = business_profile
         .revenue_recovery_retry_algorithm_data
diff --git a/crates/router/src/services/kafka/payment_attempt.rs b/crates/router/src/services/kafka/payment_attempt.rs
index 9afb697e14e..57afe3a8431 100644
--- a/crates/router/src/services/kafka/payment_attempt.rs
+++ b/crates/router/src/services/kafka/payment_attempt.rs
@@ -141,7 +141,7 @@ impl<'a> KafkaPaymentAttempt<'a> {
             debit_routing_savings: attempt.debit_routing_savings,
             signature_network: card_payment_method_data
                 .as_ref()
-                .and_then(|data| data.signature_network.clone()),
+                .and_then(|data| data.signature_network),
             is_issuer_regulated: card_payment_method_data.and_then(|data| data.is_regulated),
         }
     }
diff --git a/crates/router/src/services/kafka/payment_attempt_event.rs b/crates/router/src/services/kafka/payment_attempt_event.rs
index 46a05d6fcf1..6df58860b4f 100644
--- a/crates/router/src/services/kafka/payment_attempt_event.rs
+++ b/crates/router/src/services/kafka/payment_attempt_event.rs
@@ -142,7 +142,7 @@ impl<'a> KafkaPaymentAttemptEvent<'a> {
             debit_routing_savings: attempt.debit_routing_savings,
             signature_network: card_payment_method_data
                 .as_ref()
-                .and_then(|data| data.signature_network.clone()),
+                .and_then(|data| data.signature_network),
             is_issuer_regulated: card_payment_method_data.and_then(|data| data.is_regulated),
         }
     }
diff --git a/crates/router/src/types/api.rs b/crates/router/src/types/api.rs
index c54241e6b5f..a2172f8b518 100644
--- a/crates/router/src/types/api.rs
+++ b/crates/router/src/types/api.rs
@@ -224,7 +224,7 @@ impl SessionSurchargeDetails {
                 .get_surcharge_details(payments_types::SurchargeKey::PaymentMethodData(
                     payment_method,
                     payment_method_type,
-                    card_network.cloned(),
+                    card_network.copied(),
                 ))
                 .cloned(),
             Self::PreDetermined(surcharge_details) => Some(surcharge_details.clone()),
diff --git a/crates/router/src/types/storage/revenue_recovery.rs b/crates/router/src/types/storage/revenue_recovery.rs
index 4cde3bd99f8..09d7dfdb5bd 100644
--- a/crates/router/src/types/storage/revenue_recovery.rs
+++ b/crates/router/src/types/storage/revenue_recovery.rs
@@ -69,7 +69,7 @@ impl RevenueRecoveryPaymentData {
 
 #[derive(Debug, serde::Deserialize, Clone, Default)]
 pub struct RevenueRecoverySettings {
-    pub monitoring_threshold_in_seconds: i64,
+    pub monitoring_threshold_in_seconds: u32,
     pub retry_algorithm_type: enums::RevenueRecoveryAlgorithmType,
     pub recovery_timestamp: RecoveryTimestamp,
     pub card_config: RetryLimitsConfig,
diff --git a/crates/router/src/workflows/revenue_recovery.rs b/crates/router/src/workflows/revenue_recovery.rs
index e87b26e4c15..a2ac2b02185 100644
--- a/crates/router/src/workflows/revenue_recovery.rs
+++ b/crates/router/src/workflows/revenue_recovery.rs
@@ -368,7 +368,7 @@ pub(crate) async fn get_schedule_time_for_smart_retry(
     let decider_request = InternalDeciderRequest {
         first_error_message,
         billing_state,
-        card_funding: card_funding_str,
+        card_funding: payment_method_subtype_str,
         card_network: card_network_str,
         card_issuer: card_issuer_str,
         invoice_start_time: Some(start_time_proto),

## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [ ] Bugfix
- [ ] New feature
- [ ] Enhancement
- [x] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [ ] CI/CD

## Description
<!-- Describe your changes in detail -->


### Additional Changes

- [ ] This PR modifies the API contract
- [ ] This PR modifies the database schema
- [ ] This PR modifies application configuration/environment variables

<!--
Provide links to the files with corresponding changes.

Following are the paths where you can find config files:
1. `config`
2. `crates/router/src/configs`
3. `loadtest/config`
-->


## Motivation and Context
<!--
Why is this change required? What problem does it solve?
If it fixes an open issue, please link to the issue here.

If you don't have an issue, we'd recommend starting with one first so the PR
can focus on the implementation (unless it is an obvious bug or documentation fix
that will have little conversation).
-->


## How did you test it?
<!--
Did you write an integration/unit/API test to verify the code changes?
Or did you test this change manually (provide relevant screenshots)?
-->


## Checklist
<!-- Put an `x` in the boxes that apply -->

- [x] I formatted the code `cargo +nightly fmt --all`
- [x] I addressed lints thrown by `cargo clippy`
- [ ] I reviewed the submitted code
- [ ] I added unit tests for my changes where possible
