Bug: [REFACTOR] Add new variant for routing approach



### Feature Description

We need to add a new variant other for `RoutingApproach` enum so that it does not break on stagger.

### Possible Implementation

We need to introduce a enum variant `Other(String)` which will be defaulted to when deser errors happen

### Have you spent some time checking if this feature request has been raised before?

- [x] I checked and didn't find a similar issue

### Have you read the Contributing Guidelines?

- [x] I have read the [Contributing Guidelines](https://github.com/juspay/hyperswitch/blob/main/docs/CONTRIBUTING.md)

### Are you willing to submit a PR?

Yes, I am willing to submit a PR!
diff --git a/crates/analytics/docs/clickhouse/scripts/payment_attempts.sql b/crates/analytics/docs/clickhouse/scripts/payment_attempts.sql
index 16815e9a33d..314c265a19c 100644
--- a/crates/analytics/docs/clickhouse/scripts/payment_attempts.sql
+++ b/crates/analytics/docs/clickhouse/scripts/payment_attempts.sql
@@ -45,6 +45,7 @@ CREATE TABLE payment_attempt_queue (
     `card_network` Nullable(String),
     `routing_approach` LowCardinality(Nullable(String)),
     `debit_routing_savings` Nullable(UInt32),
+    `routing_strategy` LowCardinality(Nullable(String)),
     `sign_flag` Int8
 ) ENGINE = Kafka SETTINGS kafka_broker_list = 'kafka0:29092',
 kafka_topic_list = 'hyperswitch-payment-attempt-events',
@@ -100,6 +101,7 @@ CREATE TABLE payment_attempts (
     `card_network` Nullable(String),
     `routing_approach` LowCardinality(Nullable(String)),
     `debit_routing_savings` Nullable(UInt32),
+    `routing_strategy` LowCardinality(Nullable(String)),
     `sign_flag` Int8,
     INDEX connectorIndex connector TYPE bloom_filter GRANULARITY 1,
     INDEX paymentMethodIndex payment_method TYPE bloom_filter GRANULARITY 1,
@@ -158,6 +160,7 @@ CREATE MATERIALIZED VIEW payment_attempt_mv TO payment_attempts (
     `card_network` Nullable(String),
     `routing_approach` LowCardinality(Nullable(String)),
     `debit_routing_savings` Nullable(UInt32),
+    `routing_strategy` LowCardinality(Nullable(String)),
     `sign_flag` Int8
 ) AS
 SELECT
@@ -208,6 +211,7 @@ SELECT
     card_network,
     routing_approach,
     debit_routing_savings,
+    routing_strategy,
     sign_flag
 FROM
     payment_attempt_queue
diff --git a/crates/analytics/src/payments/core.rs b/crates/analytics/src/payments/core.rs
index c1922ffe924..d286819b369 100644
--- a/crates/analytics/src/payments/core.rs
+++ b/crates/analytics/src/payments/core.rs
@@ -440,7 +440,7 @@ pub async fn get_filters(
             PaymentDimensions::CardLast4 => fil.card_last_4,
             PaymentDimensions::CardIssuer => fil.card_issuer,
             PaymentDimensions::ErrorReason => fil.error_reason,
-            PaymentDimensions::RoutingApproach => fil.routing_approach.map(|i| i.as_ref().to_string()),
+            PaymentDimensions::RoutingStrategy => fil.routing_strategy.map(|i| i.as_ref().to_string()),
         })
         .collect::<Vec<String>>();
         res.query_data.push(FilterValue {
diff --git a/crates/analytics/src/payments/distribution.rs b/crates/analytics/src/payments/distribution.rs
index ab82e48f407..9bc5d551ad7 100644
--- a/crates/analytics/src/payments/distribution.rs
+++ b/crates/analytics/src/payments/distribution.rs
@@ -37,7 +37,7 @@ pub struct PaymentDistributionRow {
     pub total: Option<bigdecimal::BigDecimal>,
     pub count: Option<i64>,
     pub error_message: Option<String>,
-    pub routing_approach: Option<DBEnumWrapper<storage_enums::RoutingApproach>>,
+    pub routing_strategy: Option<DBEnumWrapper<storage_enums::RoutingApproach>>,
     #[serde(with = "common_utils::custom_serde::iso8601::option")]
     pub start_bucket: Option<PrimitiveDateTime>,
     #[serde(with = "common_utils::custom_serde::iso8601::option")]
diff --git a/crates/analytics/src/payments/distribution/payment_error_message.rs b/crates/analytics/src/payments/distribution/payment_error_message.rs
index d5fa0569452..96443641ed4 100644
--- a/crates/analytics/src/payments/distribution/payment_error_message.rs
+++ b/crates/analytics/src/payments/distribution/payment_error_message.rs
@@ -160,7 +160,7 @@ where
                         i.card_last_4.clone(),
                         i.card_issuer.clone(),
                         i.error_reason.clone(),
-                        i.routing_approach.as_ref().map(|i| i.0),
+                        i.routing_strategy.as_ref().map(|i| i.0),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payments/filters.rs b/crates/analytics/src/payments/filters.rs
index b6ebf094e81..8f9e79ddd5f 100644
--- a/crates/analytics/src/payments/filters.rs
+++ b/crates/analytics/src/payments/filters.rs
@@ -65,5 +65,5 @@ pub struct PaymentFilterRow {
     pub card_issuer: Option<String>,
     pub error_reason: Option<String>,
     pub first_attempt: Option<bool>,
-    pub routing_approach: Option<DBEnumWrapper<RoutingApproach>>,
+    pub routing_strategy: Option<DBEnumWrapper<RoutingApproach>>,
 }
diff --git a/crates/analytics/src/payments/metrics.rs b/crates/analytics/src/payments/metrics.rs
index b19c661322d..a7e5019fa80 100644
--- a/crates/analytics/src/payments/metrics.rs
+++ b/crates/analytics/src/payments/metrics.rs
@@ -52,7 +52,7 @@ pub struct PaymentMetricRow {
     pub first_attempt: Option<bool>,
     pub total: Option<bigdecimal::BigDecimal>,
     pub count: Option<i64>,
-    pub routing_approach: Option<DBEnumWrapper<storage_enums::RoutingApproach>>,
+    pub routing_strategy: Option<DBEnumWrapper<storage_enums::RoutingApproach>>,
     #[serde(with = "common_utils::custom_serde::iso8601::option")]
     pub start_bucket: Option<PrimitiveDateTime>,
     #[serde(with = "common_utils::custom_serde::iso8601::option")]
diff --git a/crates/analytics/src/payments/metrics/avg_ticket_size.rs b/crates/analytics/src/payments/metrics/avg_ticket_size.rs
index 8ec175cf8da..ace7158abf4 100644
--- a/crates/analytics/src/payments/metrics/avg_ticket_size.rs
+++ b/crates/analytics/src/payments/metrics/avg_ticket_size.rs
@@ -122,7 +122,7 @@ where
                         i.card_last_4.clone(),
                         i.card_issuer.clone(),
                         i.error_reason.clone(),
-                        i.routing_approach.as_ref().map(|i| i.0),
+                        i.routing_strategy.as_ref().map(|i| i.0),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payments/metrics/connector_success_rate.rs b/crates/analytics/src/payments/metrics/connector_success_rate.rs
index eb4518f6d23..40b07865468 100644
--- a/crates/analytics/src/payments/metrics/connector_success_rate.rs
+++ b/crates/analytics/src/payments/metrics/connector_success_rate.rs
@@ -117,7 +117,7 @@ where
                         i.card_last_4.clone(),
                         i.card_issuer.clone(),
                         i.error_reason.clone(),
-                        i.routing_approach.as_ref().map(|i| i.0),
+                        i.routing_strategy.as_ref().map(|i| i.0),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payments/metrics/debit_routing.rs b/crates/analytics/src/payments/metrics/debit_routing.rs
index 584221205cd..4c005a0ac34 100644
--- a/crates/analytics/src/payments/metrics/debit_routing.rs
+++ b/crates/analytics/src/payments/metrics/debit_routing.rs
@@ -127,7 +127,7 @@ where
                         i.card_last_4.clone(),
                         i.card_issuer.clone(),
                         i.error_reason.clone(),
-                        i.routing_approach.as_ref().map(|i| i.0),
+                        i.routing_strategy.as_ref().map(|i| i.0),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payments/metrics/payment_count.rs b/crates/analytics/src/payments/metrics/payment_count.rs
index ed23a400fb7..3927f378e54 100644
--- a/crates/analytics/src/payments/metrics/payment_count.rs
+++ b/crates/analytics/src/payments/metrics/payment_count.rs
@@ -108,7 +108,7 @@ where
                         i.card_last_4.clone(),
                         i.card_issuer.clone(),
                         i.error_reason.clone(),
-                        i.routing_approach.as_ref().map(|i| i.0),
+                        i.routing_strategy.as_ref().map(|i| i.0),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payments/metrics/payment_processed_amount.rs b/crates/analytics/src/payments/metrics/payment_processed_amount.rs
index 302acf097ed..7be48e29fb1 100644
--- a/crates/analytics/src/payments/metrics/payment_processed_amount.rs
+++ b/crates/analytics/src/payments/metrics/payment_processed_amount.rs
@@ -122,7 +122,7 @@ where
                         i.card_last_4.clone(),
                         i.card_issuer.clone(),
                         i.error_reason.clone(),
-                        i.routing_approach.as_ref().map(|i| i.0),
+                        i.routing_strategy.as_ref().map(|i| i.0),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payments/metrics/payment_success_count.rs b/crates/analytics/src/payments/metrics/payment_success_count.rs
index d1f437d812d..3558afafa21 100644
--- a/crates/analytics/src/payments/metrics/payment_success_count.rs
+++ b/crates/analytics/src/payments/metrics/payment_success_count.rs
@@ -115,7 +115,7 @@ where
                         i.card_last_4.clone(),
                         i.card_issuer.clone(),
                         i.error_reason.clone(),
-                        i.routing_approach.as_ref().map(|i| i.0),
+                        i.routing_strategy.as_ref().map(|i| i.0),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payments/metrics/retries_count.rs b/crates/analytics/src/payments/metrics/retries_count.rs
index 63ebfaefca6..3fc04a27d3a 100644
--- a/crates/analytics/src/payments/metrics/retries_count.rs
+++ b/crates/analytics/src/payments/metrics/retries_count.rs
@@ -112,7 +112,7 @@ where
                         i.card_last_4.clone(),
                         i.card_issuer.clone(),
                         i.error_reason.clone(),
-                        i.routing_approach.as_ref().map(|i| i.0),
+                        i.routing_strategy.as_ref().map(|i| i.0),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payments/metrics/sessionized_metrics/avg_ticket_size.rs b/crates/analytics/src/payments/metrics/sessionized_metrics/avg_ticket_size.rs
index a5138777361..51fe55f0902 100644
--- a/crates/analytics/src/payments/metrics/sessionized_metrics/avg_ticket_size.rs
+++ b/crates/analytics/src/payments/metrics/sessionized_metrics/avg_ticket_size.rs
@@ -123,7 +123,7 @@ where
                         i.card_last_4.clone(),
                         i.card_issuer.clone(),
                         i.error_reason.clone(),
-                        i.routing_approach.as_ref().map(|i| i.0),
+                        i.routing_strategy.as_ref().map(|i| i.0),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payments/metrics/sessionized_metrics/connector_success_rate.rs b/crates/analytics/src/payments/metrics/sessionized_metrics/connector_success_rate.rs
index 626f11aa229..10cb5c55812 100644
--- a/crates/analytics/src/payments/metrics/sessionized_metrics/connector_success_rate.rs
+++ b/crates/analytics/src/payments/metrics/sessionized_metrics/connector_success_rate.rs
@@ -118,7 +118,7 @@ where
                         i.card_last_4.clone(),
                         i.card_issuer.clone(),
                         i.error_reason.clone(),
-                        i.routing_approach.as_ref().map(|i| i.0),
+                        i.routing_strategy.as_ref().map(|i| i.0),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payments/metrics/sessionized_metrics/debit_routing.rs b/crates/analytics/src/payments/metrics/sessionized_metrics/debit_routing.rs
index f7c84e1b65c..4a31c7c6838 100644
--- a/crates/analytics/src/payments/metrics/sessionized_metrics/debit_routing.rs
+++ b/crates/analytics/src/payments/metrics/sessionized_metrics/debit_routing.rs
@@ -128,7 +128,7 @@ where
                         i.card_last_4.clone(),
                         i.card_issuer.clone(),
                         i.error_reason.clone(),
-                        i.routing_approach.as_ref().map(|i| i.0),
+                        i.routing_strategy.as_ref().map(|i| i.0),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payments/metrics/sessionized_metrics/failure_reasons.rs b/crates/analytics/src/payments/metrics/sessionized_metrics/failure_reasons.rs
index 5ed76cc4938..95d8509a483 100644
--- a/crates/analytics/src/payments/metrics/sessionized_metrics/failure_reasons.rs
+++ b/crates/analytics/src/payments/metrics/sessionized_metrics/failure_reasons.rs
@@ -183,7 +183,7 @@ where
                         i.card_last_4.clone(),
                         i.card_issuer.clone(),
                         i.error_reason.clone(),
-                        i.routing_approach.as_ref().map(|i| i.0),
+                        i.routing_strategy.as_ref().map(|i| i.0),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payments/metrics/sessionized_metrics/payment_count.rs b/crates/analytics/src/payments/metrics/sessionized_metrics/payment_count.rs
index 79d57477e13..74e2b10a435 100644
--- a/crates/analytics/src/payments/metrics/sessionized_metrics/payment_count.rs
+++ b/crates/analytics/src/payments/metrics/sessionized_metrics/payment_count.rs
@@ -109,7 +109,7 @@ where
                         i.card_last_4.clone(),
                         i.card_issuer.clone(),
                         i.error_reason.clone(),
-                        i.routing_approach.as_ref().map(|i| i.0),
+                        i.routing_strategy.as_ref().map(|i| i.0),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payments/metrics/sessionized_metrics/payment_processed_amount.rs b/crates/analytics/src/payments/metrics/sessionized_metrics/payment_processed_amount.rs
index 0a2ab1f8a23..197f6b53efe 100644
--- a/crates/analytics/src/payments/metrics/sessionized_metrics/payment_processed_amount.rs
+++ b/crates/analytics/src/payments/metrics/sessionized_metrics/payment_processed_amount.rs
@@ -140,7 +140,7 @@ where
                         i.card_last_4.clone(),
                         i.card_issuer.clone(),
                         i.error_reason.clone(),
-                        i.routing_approach.as_ref().map(|i| i.0),
+                        i.routing_strategy.as_ref().map(|i| i.0),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payments/metrics/sessionized_metrics/payment_success_count.rs b/crates/analytics/src/payments/metrics/sessionized_metrics/payment_success_count.rs
index e59402933aa..0582a3caf5f 100644
--- a/crates/analytics/src/payments/metrics/sessionized_metrics/payment_success_count.rs
+++ b/crates/analytics/src/payments/metrics/sessionized_metrics/payment_success_count.rs
@@ -116,7 +116,7 @@ where
                         i.card_last_4.clone(),
                         i.card_issuer.clone(),
                         i.error_reason.clone(),
-                        i.routing_approach.as_ref().map(|i| i.0),
+                        i.routing_strategy.as_ref().map(|i| i.0),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payments/metrics/sessionized_metrics/payments_distribution.rs b/crates/analytics/src/payments/metrics/sessionized_metrics/payments_distribution.rs
index d7305cd0792..285eb087c53 100644
--- a/crates/analytics/src/payments/metrics/sessionized_metrics/payments_distribution.rs
+++ b/crates/analytics/src/payments/metrics/sessionized_metrics/payments_distribution.rs
@@ -119,7 +119,7 @@ where
                         i.card_last_4.clone(),
                         i.card_issuer.clone(),
                         i.error_reason.clone(),
-                        i.routing_approach.as_ref().map(|i| i.0),
+                        i.routing_strategy.as_ref().map(|i| i.0),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payments/metrics/sessionized_metrics/retries_count.rs b/crates/analytics/src/payments/metrics/sessionized_metrics/retries_count.rs
index 83307d75f7a..a8f172e849f 100644
--- a/crates/analytics/src/payments/metrics/sessionized_metrics/retries_count.rs
+++ b/crates/analytics/src/payments/metrics/sessionized_metrics/retries_count.rs
@@ -112,7 +112,7 @@ where
                         i.card_last_4.clone(),
                         i.card_issuer.clone(),
                         i.error_reason.clone(),
-                        i.routing_approach.as_ref().map(|i| i.0),
+                        i.routing_strategy.as_ref().map(|i| i.0),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payments/metrics/sessionized_metrics/success_rate.rs b/crates/analytics/src/payments/metrics/sessionized_metrics/success_rate.rs
index 8159a615ba8..2a8629afeda 100644
--- a/crates/analytics/src/payments/metrics/sessionized_metrics/success_rate.rs
+++ b/crates/analytics/src/payments/metrics/sessionized_metrics/success_rate.rs
@@ -112,7 +112,7 @@ where
                         i.card_last_4.clone(),
                         i.card_issuer.clone(),
                         i.error_reason.clone(),
-                        i.routing_approach.as_ref().map(|i| i.0),
+                        i.routing_strategy.as_ref().map(|i| i.0),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payments/metrics/success_rate.rs b/crates/analytics/src/payments/metrics/success_rate.rs
index 032f3219a68..0d0ec088fa4 100644
--- a/crates/analytics/src/payments/metrics/success_rate.rs
+++ b/crates/analytics/src/payments/metrics/success_rate.rs
@@ -111,7 +111,7 @@ where
                         i.card_last_4.clone(),
                         i.card_issuer.clone(),
                         i.error_reason.clone(),
-                        i.routing_approach.as_ref().map(|i| i.0),
+                        i.routing_strategy.as_ref().map(|i| i.0),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payments/types.rs b/crates/analytics/src/payments/types.rs
index 7bb23d7af78..66bc70df720 100644
--- a/crates/analytics/src/payments/types.rs
+++ b/crates/analytics/src/payments/types.rs
@@ -110,11 +110,11 @@ where
                 .attach_printable("Error adding first attempt filter")?;
         }
 
-        if !self.routing_approach.is_empty() {
+        if !self.routing_strategy.is_empty() {
             builder
                 .add_filter_in_range_clause(
-                    PaymentDimensions::RoutingApproach,
-                    &self.routing_approach,
+                    PaymentDimensions::RoutingStrategy,
+                    &self.routing_strategy,
                 )
                 .attach_printable("Error adding routing approach filter")?;
         }
diff --git a/crates/analytics/src/sqlx.rs b/crates/analytics/src/sqlx.rs
index 10f039fcc72..7e2add383cd 100644
--- a/crates/analytics/src/sqlx.rs
+++ b/crates/analytics/src/sqlx.rs
@@ -731,8 +731,8 @@ impl<'a> FromRow<'a, PgRow> for super::payments::metrics::PaymentMetricRow {
             ColumnNotFound(_) => Ok(Default::default()),
             e => Err(e),
         })?;
-        let routing_approach: Option<DBEnumWrapper<RoutingApproach>> =
-            row.try_get("routing_approach").or_else(|e| match e {
+        let routing_strategy: Option<DBEnumWrapper<RoutingApproach>> =
+            row.try_get("routing_strategy").or_else(|e| match e {
                 ColumnNotFound(_) => Ok(Default::default()),
                 e => Err(e),
             })?;
@@ -767,7 +767,7 @@ impl<'a> FromRow<'a, PgRow> for super::payments::metrics::PaymentMetricRow {
             card_issuer,
             error_reason,
             first_attempt,
-            routing_approach,
+            routing_strategy,
             total,
             count,
             start_bucket,
@@ -840,8 +840,8 @@ impl<'a> FromRow<'a, PgRow> for super::payments::distribution::PaymentDistributi
             ColumnNotFound(_) => Ok(Default::default()),
             e => Err(e),
         })?;
-        let routing_approach: Option<DBEnumWrapper<RoutingApproach>> =
-            row.try_get("routing_approach").or_else(|e| match e {
+        let routing_strategy: Option<DBEnumWrapper<RoutingApproach>> =
+            row.try_get("routing_strategy").or_else(|e| match e {
                 ColumnNotFound(_) => Ok(Default::default()),
                 e => Err(e),
             })?;
@@ -887,7 +887,7 @@ impl<'a> FromRow<'a, PgRow> for super::payments::distribution::PaymentDistributi
             total,
             count,
             error_message,
-            routing_approach,
+            routing_strategy,
             start_bucket,
             end_bucket,
         })
@@ -962,8 +962,8 @@ impl<'a> FromRow<'a, PgRow> for super::payments::filters::PaymentFilterRow {
             ColumnNotFound(_) => Ok(Default::default()),
             e => Err(e),
         })?;
-        let routing_approach: Option<DBEnumWrapper<RoutingApproach>> =
-            row.try_get("routing_approach").or_else(|e| match e {
+        let routing_strategy: Option<DBEnumWrapper<RoutingApproach>> =
+            row.try_get("routing_strategy").or_else(|e| match e {
                 ColumnNotFound(_) => Ok(Default::default()),
                 e => Err(e),
             })?;
@@ -983,7 +983,7 @@ impl<'a> FromRow<'a, PgRow> for super::payments::filters::PaymentFilterRow {
             card_issuer,
             error_reason,
             first_attempt,
-            routing_approach,
+            routing_strategy,
         })
     }
 }
diff --git a/crates/analytics/src/utils.rs b/crates/analytics/src/utils.rs
index 36121e56ebb..c572aaa85e7 100644
--- a/crates/analytics/src/utils.rs
+++ b/crates/analytics/src/utils.rs
@@ -24,7 +24,7 @@ pub fn get_payment_dimensions() -> Vec<NameDescription> {
         PaymentDimensions::ProfileId,
         PaymentDimensions::CardNetwork,
         PaymentDimensions::MerchantId,
-        PaymentDimensions::RoutingApproach,
+        PaymentDimensions::RoutingStrategy,
     ]
     .into_iter()
     .map(Into::into)
diff --git a/crates/api_models/src/analytics/payments.rs b/crates/api_models/src/analytics/payments.rs
index ec5719f1adb..135fd4d2ee2 100644
--- a/crates/api_models/src/analytics/payments.rs
+++ b/crates/api_models/src/analytics/payments.rs
@@ -44,7 +44,7 @@ pub struct PaymentFilters {
     #[serde(default)]
     pub first_attempt: Vec<bool>,
     #[serde(default)]
-    pub routing_approach: Vec<RoutingApproach>,
+    pub routing_strategy: Vec<RoutingApproach>,
 }
 
 #[derive(
@@ -86,7 +86,7 @@ pub enum PaymentDimensions {
     CardLast4,
     CardIssuer,
     ErrorReason,
-    RoutingApproach,
+    RoutingStrategy,
 }
 
 #[derive(
@@ -207,7 +207,7 @@ pub struct PaymentMetricsBucketIdentifier {
     pub card_last_4: Option<String>,
     pub card_issuer: Option<String>,
     pub error_reason: Option<String>,
-    pub routing_approach: Option<RoutingApproach>,
+    pub routing_strategy: Option<RoutingApproach>,
     #[serde(rename = "time_range")]
     pub time_bucket: TimeRange,
     // Coz FE sucks
@@ -233,7 +233,7 @@ impl PaymentMetricsBucketIdentifier {
         card_last_4: Option<String>,
         card_issuer: Option<String>,
         error_reason: Option<String>,
-        routing_approach: Option<RoutingApproach>,
+        routing_strategy: Option<RoutingApproach>,
         normalized_time_range: TimeRange,
     ) -> Self {
         Self {
@@ -251,7 +251,7 @@ impl PaymentMetricsBucketIdentifier {
             card_last_4,
             card_issuer,
             error_reason,
-            routing_approach,
+            routing_strategy,
             time_bucket: normalized_time_range,
             start_time: normalized_time_range.start_time,
         }
@@ -274,7 +274,7 @@ impl Hash for PaymentMetricsBucketIdentifier {
         self.card_last_4.hash(state);
         self.card_issuer.hash(state);
         self.error_reason.hash(state);
-        self.routing_approach.map(|i| i.to_string()).hash(state);
+        self.routing_strategy.map(|i| i.to_string()).hash(state);
         self.time_bucket.hash(state);
     }
 }
diff --git a/crates/common_enums/src/enums.rs b/crates/common_enums/src/enums.rs
index 9f45c679ed0..687e42728f2 100644
--- a/crates/common_enums/src/enums.rs
+++ b/crates/common_enums/src/enums.rs
@@ -8566,6 +8566,7 @@ impl RoutingApproach {
             "SR_SELECTION_V3_ROUTING" => Self::SuccessRateExploitation,
             "SR_V3_HEDGING" => Self::SuccessRateExploration,
             "NTW_BASED_ROUTING" => Self::DebitRouting,
+            "DEFAULT" => Self::StraightThroughRouting,
             _ => Self::DefaultFallback,
         }
     }
diff --git a/crates/diesel_models/src/payment_attempt.rs b/crates/diesel_models/src/payment_attempt.rs
index 361db5f1353..29b41bab5ea 100644
--- a/crates/diesel_models/src/payment_attempt.rs
+++ b/crates/diesel_models/src/payment_attempt.rs
@@ -207,6 +207,7 @@ pub struct PaymentAttempt {
     pub setup_future_usage_applied: Option<storage_enums::FutureUsage>,
     pub routing_approach: Option<storage_enums::RoutingApproach>,
     pub connector_request_reference_id: Option<String>,
+    pub routing_strategy: Option<String>,
 }
 
 #[cfg(feature = "v1")]
@@ -428,6 +429,7 @@ pub struct PaymentAttemptNew {
     pub setup_future_usage_applied: Option<storage_enums::FutureUsage>,
     pub routing_approach: Option<storage_enums::RoutingApproach>,
     pub connector_request_reference_id: Option<String>,
+    pub routing_strategy: Option<String>,
 }
 
 #[cfg(feature = "v1")]
@@ -461,7 +463,7 @@ pub enum PaymentAttemptUpdate {
         tax_amount: Option<MinorUnit>,
         updated_by: String,
         merchant_connector_id: Option<id_type::MerchantConnectorAccountId>,
-        routing_approach: Option<storage_enums::RoutingApproach>,
+        routing_strategy: Option<String>,
     },
     AuthenticationTypeUpdate {
         authentication_type: storage_enums::AuthenticationType,
@@ -502,7 +504,7 @@ pub enum PaymentAttemptUpdate {
         order_tax_amount: Option<MinorUnit>,
         connector_mandate_detail: Option<ConnectorMandateReferenceId>,
         card_discovery: Option<storage_enums::CardDiscovery>,
-        routing_approach: Option<storage_enums::RoutingApproach>,
+        routing_strategy: Option<String>,
         connector_request_reference_id: Option<String>,
     },
     VoidUpdate {
@@ -555,6 +557,7 @@ pub enum PaymentAttemptUpdate {
         connector_mandate_detail: Option<ConnectorMandateReferenceId>,
         charges: Option<common_types::payments::ConnectorChargeResponseData>,
         setup_future_usage_applied: Option<storage_enums::FutureUsage>,
+        routing_strategy: Option<String>,
     },
     UnresolvedResponseUpdate {
         status: storage_enums::AttemptStatus,
@@ -1054,7 +1057,7 @@ pub struct PaymentAttemptUpdateInternal {
     pub issuer_error_code: Option<String>,
     pub issuer_error_message: Option<String>,
     pub setup_future_usage_applied: Option<storage_enums::FutureUsage>,
-    pub routing_approach: Option<storage_enums::RoutingApproach>,
+    pub routing_strategy: Option<String>,
     pub connector_request_reference_id: Option<String>,
 }
 
@@ -1245,7 +1248,7 @@ impl PaymentAttemptUpdate {
             issuer_error_code,
             issuer_error_message,
             setup_future_usage_applied,
-            routing_approach,
+            routing_strategy,
             connector_request_reference_id,
         } = PaymentAttemptUpdateInternal::from(self).populate_derived_fields(&source);
         PaymentAttempt {
@@ -1313,9 +1316,10 @@ impl PaymentAttemptUpdate {
             issuer_error_message: issuer_error_message.or(source.issuer_error_message),
             setup_future_usage_applied: setup_future_usage_applied
                 .or(source.setup_future_usage_applied),
-            routing_approach: routing_approach.or(source.routing_approach),
+            routing_approach: source.routing_approach,
             connector_request_reference_id: connector_request_reference_id
                 .or(source.connector_request_reference_id),
+            routing_strategy: routing_strategy.or(source.routing_strategy),
             ..source
         }
     }
@@ -2374,8 +2378,8 @@ impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal {
                 issuer_error_code: None,
                 issuer_error_message: None,
                 setup_future_usage_applied: None,
-                routing_approach: None,
                 connector_request_reference_id: None,
+                routing_strategy: None,
             },
             PaymentAttemptUpdate::AuthenticationTypeUpdate {
                 authentication_type,
@@ -2438,8 +2442,8 @@ impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal {
                 issuer_error_code: None,
                 issuer_error_message: None,
                 setup_future_usage_applied: None,
-                routing_approach: None,
                 connector_request_reference_id: None,
+                routing_strategy: None,
             },
             PaymentAttemptUpdate::ConfirmUpdate {
                 amount,
@@ -2476,8 +2480,8 @@ impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal {
                 order_tax_amount,
                 connector_mandate_detail,
                 card_discovery,
-                routing_approach,
                 connector_request_reference_id,
+                routing_strategy,
             } => Self {
                 amount: Some(amount),
                 currency: Some(currency),
@@ -2536,7 +2540,7 @@ impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal {
                 issuer_error_code: None,
                 issuer_error_message: None,
                 setup_future_usage_applied: None,
-                routing_approach,
+                routing_strategy,
                 connector_request_reference_id,
             },
             PaymentAttemptUpdate::VoidUpdate {
@@ -2601,7 +2605,7 @@ impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal {
                 issuer_error_code: None,
                 issuer_error_message: None,
                 setup_future_usage_applied: None,
-                routing_approach: None,
+                routing_strategy: None,
                 connector_request_reference_id: None,
             },
             PaymentAttemptUpdate::RejectUpdate {
@@ -2667,7 +2671,7 @@ impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal {
                 issuer_error_code: None,
                 issuer_error_message: None,
                 setup_future_usage_applied: None,
-                routing_approach: None,
+                routing_strategy: None,
                 connector_request_reference_id: None,
             },
             PaymentAttemptUpdate::BlocklistUpdate {
@@ -2733,7 +2737,7 @@ impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal {
                 issuer_error_code: None,
                 issuer_error_message: None,
                 setup_future_usage_applied: None,
-                routing_approach: None,
+                routing_strategy: None,
                 connector_request_reference_id: None,
             },
             PaymentAttemptUpdate::ConnectorMandateDetailUpdate {
@@ -2797,7 +2801,7 @@ impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal {
                 issuer_error_code: None,
                 issuer_error_message: None,
                 setup_future_usage_applied: None,
-                routing_approach: None,
+                routing_strategy: None,
                 connector_request_reference_id: None,
             },
             PaymentAttemptUpdate::PaymentMethodDetailsUpdate {
@@ -2861,7 +2865,7 @@ impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal {
                 issuer_error_code: None,
                 issuer_error_message: None,
                 setup_future_usage_applied: None,
-                routing_approach: None,
+                routing_strategy: None,
                 connector_request_reference_id: None,
             },
             PaymentAttemptUpdate::ResponseUpdate {
@@ -2889,6 +2893,7 @@ impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal {
                 connector_mandate_detail,
                 charges,
                 setup_future_usage_applied,
+                routing_strategy,
             } => {
                 let (connector_transaction_id, processor_transaction_data) =
                     connector_transaction_id
@@ -2953,7 +2958,7 @@ impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal {
                     issuer_error_code: None,
                     issuer_error_message: None,
                     setup_future_usage_applied,
-                    routing_approach: None,
+                    routing_strategy,
                     connector_request_reference_id: None,
                 }
             }
@@ -3036,7 +3041,7 @@ impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal {
                     card_discovery: None,
                     charges: None,
                     setup_future_usage_applied: None,
-                    routing_approach: None,
+                    routing_strategy: None,
                     connector_request_reference_id: None,
                 }
             }
@@ -3098,7 +3103,7 @@ impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal {
                 issuer_error_code: None,
                 issuer_error_message: None,
                 setup_future_usage_applied: None,
-                routing_approach: None,
+                routing_strategy: None,
                 connector_request_reference_id: None,
             },
             PaymentAttemptUpdate::UpdateTrackers {
@@ -3110,7 +3115,7 @@ impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal {
                 tax_amount,
                 updated_by,
                 merchant_connector_id,
-                routing_approach,
+                routing_strategy,
             } => Self {
                 payment_token,
                 modified_at: common_utils::date_time::now(),
@@ -3169,7 +3174,7 @@ impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal {
                 issuer_error_code: None,
                 issuer_error_message: None,
                 setup_future_usage_applied: None,
-                routing_approach,
+                routing_strategy,
                 connector_request_reference_id: None,
             },
             PaymentAttemptUpdate::UnresolvedResponseUpdate {
@@ -3246,7 +3251,7 @@ impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal {
                     issuer_error_code: None,
                     issuer_error_message: None,
                     setup_future_usage_applied: None,
-                    routing_approach: None,
+                    routing_strategy: None,
                     connector_request_reference_id: None,
                 }
             }
@@ -3322,7 +3327,7 @@ impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal {
                     issuer_error_code: None,
                     issuer_error_message: None,
                     setup_future_usage_applied: None,
-                    routing_approach: None,
+                    routing_strategy: None,
                     connector_request_reference_id: None,
                 }
             }
@@ -3388,7 +3393,7 @@ impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal {
                 issuer_error_code: None,
                 issuer_error_message: None,
                 setup_future_usage_applied: None,
-                routing_approach: None,
+                routing_strategy: None,
                 connector_request_reference_id: None,
             },
             PaymentAttemptUpdate::AmountToCaptureUpdate {
@@ -3453,7 +3458,7 @@ impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal {
                 issuer_error_code: None,
                 issuer_error_message: None,
                 setup_future_usage_applied: None,
-                routing_approach: None,
+                routing_strategy: None,
                 connector_request_reference_id: None,
             },
             PaymentAttemptUpdate::ConnectorResponse {
@@ -3527,7 +3532,7 @@ impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal {
                     issuer_error_code: None,
                     issuer_error_message: None,
                     setup_future_usage_applied: None,
-                    routing_approach: None,
+                    routing_strategy: None,
                     connector_request_reference_id: None,
                 }
             }
@@ -3592,7 +3597,7 @@ impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal {
                 issuer_error_code: None,
                 issuer_error_message: None,
                 setup_future_usage_applied: None,
-                routing_approach: None,
+                routing_strategy: None,
                 connector_request_reference_id: None,
             },
             PaymentAttemptUpdate::AuthenticationUpdate {
@@ -3659,7 +3664,7 @@ impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal {
                 issuer_error_code: None,
                 issuer_error_message: None,
                 setup_future_usage_applied: None,
-                routing_approach: None,
+                routing_strategy: None,
                 connector_request_reference_id: None,
             },
             PaymentAttemptUpdate::ManualUpdate {
@@ -3735,7 +3740,7 @@ impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal {
                     issuer_error_code: None,
                     issuer_error_message: None,
                     setup_future_usage_applied: None,
-                    routing_approach: None,
+                    routing_strategy: None,
                     connector_request_reference_id: None,
                 }
             }
@@ -3800,7 +3805,7 @@ impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal {
                 issuer_error_code: None,
                 issuer_error_message: None,
                 setup_future_usage_applied: None,
-                routing_approach: None,
+                routing_strategy: None,
                 connector_request_reference_id: None,
             },
         }
diff --git a/crates/diesel_models/src/schema.rs b/crates/diesel_models/src/schema.rs
index 0cf2f2deccc..a4b86927ea4 100644
--- a/crates/diesel_models/src/schema.rs
+++ b/crates/diesel_models/src/schema.rs
@@ -969,6 +969,8 @@ diesel::table! {
         routing_approach -> Nullable<RoutingApproach>,
         #[max_length = 255]
         connector_request_reference_id -> Nullable<Varchar>,
+        #[max_length = 64]
+        routing_strategy -> Nullable<Varchar>,
     }
 }
 
diff --git a/crates/diesel_models/src/user/sample_data.rs b/crates/diesel_models/src/user/sample_data.rs
index f892ac8e860..690e6d4fb89 100644
--- a/crates/diesel_models/src/user/sample_data.rs
+++ b/crates/diesel_models/src/user/sample_data.rs
@@ -218,6 +218,7 @@ pub struct PaymentAttemptBatchNew {
     pub setup_future_usage_applied: Option<common_enums::FutureUsage>,
     pub routing_approach: Option<common_enums::RoutingApproach>,
     pub connector_request_reference_id: Option<String>,
+    pub routing_strategy: Option<String>,
 }
 
 #[cfg(feature = "v1")]
@@ -305,6 +306,7 @@ impl PaymentAttemptBatchNew {
             setup_future_usage_applied: self.setup_future_usage_applied,
             routing_approach: self.routing_approach,
             connector_request_reference_id: self.connector_request_reference_id,
+            routing_strategy: self.routing_strategy,
         }
     }
 }
diff --git a/crates/hyperswitch_domain_models/src/payments/payment_attempt.rs b/crates/hyperswitch_domain_models/src/payments/payment_attempt.rs
index 3baddfa98c5..92d5160e6be 100644
--- a/crates/hyperswitch_domain_models/src/payments/payment_attempt.rs
+++ b/crates/hyperswitch_domain_models/src/payments/payment_attempt.rs
@@ -902,7 +902,7 @@ pub struct PaymentAttempt {
     /// merchantwho invoked the resource based api (identifier) and through what source (Api, Jwt(Dashboard))
     pub created_by: Option<CreatedBy>,
     pub setup_future_usage_applied: Option<storage_enums::FutureUsage>,
-    pub routing_approach: Option<storage_enums::RoutingApproach>,
+    pub routing_strategy: Option<storage_enums::RoutingApproach>,
     pub connector_request_reference_id: Option<String>,
     pub debit_routing_savings: Option<MinorUnit>,
 }
@@ -1182,7 +1182,7 @@ pub struct PaymentAttemptNew {
     /// merchantwho invoked the resource based api (identifier) and through what source (Api, Jwt(Dashboard))
     pub created_by: Option<CreatedBy>,
     pub setup_future_usage_applied: Option<storage_enums::FutureUsage>,
-    pub routing_approach: Option<storage_enums::RoutingApproach>,
+    pub routing_strategy: Option<storage_enums::RoutingApproach>,
     pub connector_request_reference_id: Option<String>,
 }
 
@@ -1215,7 +1215,7 @@ pub enum PaymentAttemptUpdate {
         tax_amount: Option<MinorUnit>,
         updated_by: String,
         merchant_connector_id: Option<id_type::MerchantConnectorAccountId>,
-        routing_approach: Option<storage_enums::RoutingApproach>,
+        routing_strategy: Option<storage_enums::RoutingApproach>,
     },
     AuthenticationTypeUpdate {
         authentication_type: storage_enums::AuthenticationType,
@@ -1252,7 +1252,7 @@ pub enum PaymentAttemptUpdate {
         customer_acceptance: Option<pii::SecretSerdeValue>,
         connector_mandate_detail: Option<ConnectorMandateReferenceId>,
         card_discovery: Option<common_enums::CardDiscovery>,
-        routing_approach: Option<storage_enums::RoutingApproach>,
+        routing_strategy: Option<storage_enums::RoutingApproach>,
         connector_request_reference_id: Option<String>,
     },
     RejectUpdate {
@@ -1306,6 +1306,7 @@ pub enum PaymentAttemptUpdate {
         charges: Option<common_types::payments::ConnectorChargeResponseData>,
         setup_future_usage_applied: Option<storage_enums::FutureUsage>,
         debit_routing_savings: Option<MinorUnit>,
+        routing_strategy: Option<storage_enums::RoutingApproach>,
     },
     UnresolvedResponseUpdate {
         status: storage_enums::AttemptStatus,
@@ -1440,7 +1441,7 @@ impl PaymentAttemptUpdate {
                 surcharge_amount,
                 tax_amount,
                 merchant_connector_id,
-                routing_approach,
+                routing_strategy,
             } => DieselPaymentAttemptUpdate::UpdateTrackers {
                 payment_token,
                 connector,
@@ -1450,7 +1451,7 @@ impl PaymentAttemptUpdate {
                 tax_amount,
                 updated_by,
                 merchant_connector_id,
-                routing_approach,
+                routing_strategy: routing_strategy.map(|approach| approach.to_string()),
             },
             Self::AuthenticationTypeUpdate {
                 authentication_type,
@@ -1515,7 +1516,7 @@ impl PaymentAttemptUpdate {
                 customer_acceptance,
                 connector_mandate_detail,
                 card_discovery,
-                routing_approach,
+                routing_strategy,
                 connector_request_reference_id,
             } => DieselPaymentAttemptUpdate::ConfirmUpdate {
                 amount: net_amount.get_order_amount(),
@@ -1552,7 +1553,7 @@ impl PaymentAttemptUpdate {
                 order_tax_amount: net_amount.get_order_tax_amount(),
                 connector_mandate_detail,
                 card_discovery,
-                routing_approach,
+                routing_strategy: routing_strategy.map(|approach| approach.to_string()),
                 connector_request_reference_id,
             },
             Self::VoidUpdate {
@@ -1590,6 +1591,7 @@ impl PaymentAttemptUpdate {
                 charges,
                 setup_future_usage_applied,
                 debit_routing_savings: _,
+                routing_strategy,
             } => DieselPaymentAttemptUpdate::ResponseUpdate {
                 status,
                 connector,
@@ -1615,6 +1617,7 @@ impl PaymentAttemptUpdate {
                 connector_mandate_detail,
                 charges,
                 setup_future_usage_applied,
+                routing_strategy: routing_strategy.map(|approach| approach.to_string()),
             },
             Self::UnresolvedResponseUpdate {
                 status,
@@ -1987,8 +1990,9 @@ impl behaviour::Conversion for PaymentAttempt {
             connector_transaction_data: None,
             processor_merchant_id: Some(self.processor_merchant_id),
             created_by: self.created_by.map(|cb| cb.to_string()),
-            routing_approach: self.routing_approach,
+            routing_approach: self.routing_strategy,
             connector_request_reference_id: self.connector_request_reference_id,
+            routing_strategy: self.routing_strategy.map(|approach| approach.to_string()),
         })
     }
 
@@ -2084,7 +2088,9 @@ impl behaviour::Conversion for PaymentAttempt {
                     .created_by
                     .and_then(|created_by| created_by.parse::<CreatedBy>().ok()),
                 setup_future_usage_applied: storage_model.setup_future_usage_applied,
-                routing_approach: storage_model.routing_approach,
+                routing_strategy: storage_model
+                    .routing_strategy
+                    .and_then(|approach| approach.parse::<storage_enums::RoutingApproach>().ok()),
                 connector_request_reference_id: storage_model.connector_request_reference_id,
                 debit_routing_savings: None,
             })
@@ -2175,8 +2181,9 @@ impl behaviour::Conversion for PaymentAttempt {
             processor_merchant_id: Some(self.processor_merchant_id),
             created_by: self.created_by.map(|cb| cb.to_string()),
             setup_future_usage_applied: self.setup_future_usage_applied,
-            routing_approach: self.routing_approach,
+            routing_approach: None,
             connector_request_reference_id: self.connector_request_reference_id,
+            routing_strategy: self.routing_strategy.map(|approach| approach.to_string()),
         })
     }
 }
diff --git a/crates/router/src/core/payment_methods/cards.rs b/crates/router/src/core/payment_methods/cards.rs
index 8f29e05e154..1b653f7204e 100644
--- a/crates/router/src/core/payment_methods/cards.rs
+++ b/crates/router/src/core/payment_methods/cards.rs
@@ -2843,7 +2843,7 @@ pub async fn list_payment_methods(
             payment_intent,
             chosen,
         };
-        let (result, routing_approach) = routing::perform_session_flow_routing(
+        let (result, routing_strategy) = routing::perform_session_flow_routing(
             sfr,
             &business_profile,
             &enums::TransactionType::Payment,
@@ -3025,7 +3025,7 @@ pub async fn list_payment_methods(
             merchant_connector_id: None,
             surcharge_amount: None,
             tax_amount: None,
-            routing_approach,
+            routing_strategy,
         };
 
         state
diff --git a/crates/router/src/core/payments.rs b/crates/router/src/core/payments.rs
index cc6f3384a22..6091a657b2d 100644
--- a/crates/router/src/core/payments.rs
+++ b/crates/router/src/core/payments.rs
@@ -8017,6 +8017,10 @@ where
         .change_context(errors::ApiErrorResponse::InternalServerError)
         .attach_printable("Failed execution of straight through routing")?;
 
+        payment_data.set_routing_approach_in_attempt(Some(
+            common_enums::RoutingApproach::StraightThroughRouting,
+        ));
+
         if check_eligibility {
             let transaction_data = core_routing::PaymentsDslInput::new(
                 payment_data.get_setup_mandate(),
@@ -8618,7 +8622,7 @@ where
         payment_intent: payment_data.get_payment_intent(),
         chosen,
     };
-    let (result, routing_approach) = self_routing::perform_session_flow_routing(
+    let (result, routing_strategy) = self_routing::perform_session_flow_routing(
         sfr,
         business_profile,
         &enums::TransactionType::Payment,
@@ -8627,7 +8631,7 @@ where
     .change_context(errors::ApiErrorResponse::InternalServerError)
     .attach_printable("error performing session flow routing")?;
 
-    payment_data.set_routing_approach_in_attempt(routing_approach);
+    payment_data.set_routing_approach_in_attempt(routing_strategy);
 
     let final_list = connectors.filter_and_validate_for_session_flow(&result)?;
 
@@ -8762,7 +8766,7 @@ where
         algorithm_ref.algorithm_id
     };
 
-    let (connectors, routing_approach) = routing::perform_static_routing_v1(
+    let (connectors, routing_strategy) = routing::perform_static_routing_v1(
         state,
         merchant_context.get_merchant_account().get_id(),
         routing_algorithm_id.as_ref(),
@@ -8772,7 +8776,7 @@ where
     .await
     .change_context(errors::ApiErrorResponse::InternalServerError)?;
 
-    payment_data.set_routing_approach_in_attempt(routing_approach);
+    payment_data.set_routing_approach_in_attempt(routing_strategy);
 
     #[cfg(all(feature = "v1", feature = "dynamic_routing"))]
     let payment_attempt = transaction_data.payment_attempt.clone();
@@ -10010,7 +10014,7 @@ impl<F: Clone> OperationSessionSetters<F> for PaymentData<F> {
         &mut self,
         routing_approach: Option<enums::RoutingApproach>,
     ) {
-        self.payment_attempt.routing_approach = routing_approach;
+        self.payment_attempt.routing_strategy = routing_approach;
     }
 
     fn set_connector_response_reference_id(&mut self, reference_id: Option<String>) {
diff --git a/crates/router/src/core/payments/helpers.rs b/crates/router/src/core/payments/helpers.rs
index 4a023f7d8c4..0e0d42eabfe 100644
--- a/crates/router/src/core/payments/helpers.rs
+++ b/crates/router/src/core/payments/helpers.rs
@@ -4452,7 +4452,7 @@ impl AttemptType {
             processor_merchant_id: old_payment_attempt.processor_merchant_id,
             created_by: old_payment_attempt.created_by,
             setup_future_usage_applied: None,
-            routing_approach: old_payment_attempt.routing_approach,
+            routing_strategy: old_payment_attempt.routing_strategy,
             connector_request_reference_id: None,
         }
     }
diff --git a/crates/router/src/core/payments/operations/payment_confirm.rs b/crates/router/src/core/payments/operations/payment_confirm.rs
index a6d1047e6d1..b209c1dd2a7 100644
--- a/crates/router/src/core/payments/operations/payment_confirm.rs
+++ b/crates/router/src/core/payments/operations/payment_confirm.rs
@@ -1964,7 +1964,7 @@ impl<F: Clone + Sync> UpdateTracker<F, PaymentData<F>, api::PaymentsRequest> for
                             .payment_attempt
                             .connector_mandate_detail,
                         card_discovery,
-                        routing_approach: payment_data.payment_attempt.routing_approach,
+                        routing_strategy: payment_data.payment_attempt.routing_strategy,
                         connector_request_reference_id,
                     },
                     storage_scheme,
diff --git a/crates/router/src/core/payments/operations/payment_create.rs b/crates/router/src/core/payments/operations/payment_create.rs
index 1c3a8a0be9a..836ca91b237 100644
--- a/crates/router/src/core/payments/operations/payment_create.rs
+++ b/crates/router/src/core/payments/operations/payment_create.rs
@@ -882,7 +882,7 @@ impl<F: Clone + Sync> UpdateTracker<F, PaymentData<F>, api::PaymentsRequest> for
             .as_ref()
             .map(|surcharge_details| surcharge_details.tax_on_surcharge_amount);
 
-        let routing_approach = payment_data.payment_attempt.routing_approach;
+        let routing_strategy = payment_data.payment_attempt.routing_strategy;
 
         payment_data.payment_attempt = state
             .store
@@ -900,7 +900,7 @@ impl<F: Clone + Sync> UpdateTracker<F, PaymentData<F>, api::PaymentsRequest> for
                     tax_amount,
                     updated_by: storage_scheme.to_string(),
                     merchant_connector_id,
-                    routing_approach,
+                    routing_strategy,
                 },
                 storage_scheme,
             )
@@ -1384,7 +1384,7 @@ impl PaymentCreate {
                 processor_merchant_id: merchant_id.to_owned(),
                 created_by: None,
                 setup_future_usage_applied: request.setup_future_usage,
-                routing_approach: Some(common_enums::RoutingApproach::default()),
+                routing_strategy: Some(common_enums::RoutingApproach::default()),
                 connector_request_reference_id: None,
             },
             additional_pm_data,
diff --git a/crates/router/src/core/payments/operations/payment_response.rs b/crates/router/src/core/payments/operations/payment_response.rs
index 7fa8a4858f8..2d6a192f7c1 100644
--- a/crates/router/src/core/payments/operations/payment_response.rs
+++ b/crates/router/src/core/payments/operations/payment_response.rs
@@ -1866,6 +1866,9 @@ async fn payment_response_update_tracker<F: Clone, T: types::Capturable>(
                                             .payment_attempt
                                             .setup_future_usage_applied,
                                         debit_routing_savings,
+                                        routing_strategy: payment_data
+                                            .payment_attempt
+                                            .routing_strategy,
                                     }),
                                 ),
                             };
diff --git a/crates/router/src/core/payments/retry.rs b/crates/router/src/core/payments/retry.rs
index 8fe9c565e08..ce5cf21e531 100644
--- a/crates/router/src/core/payments/retry.rs
+++ b/crates/router/src/core/payments/retry.rs
@@ -530,6 +530,7 @@ where
                 charges,
                 setup_future_usage_applied: None,
                 debit_routing_savings,
+                routing_strategy: payment_data.get_payment_attempt().routing_strategy,
             };
 
             #[cfg(feature = "v1")]
@@ -726,7 +727,7 @@ pub fn make_new_payment_attempt(
         processor_merchant_id: old_payment_attempt.processor_merchant_id,
         created_by: old_payment_attempt.created_by,
         setup_future_usage_applied: setup_future_usage_intent, // setup future usage is picked from intent for new payment attempt
-        routing_approach: old_payment_attempt.routing_approach,
+        routing_strategy: old_payment_attempt.routing_strategy,
         connector_request_reference_id: Default::default(),
     }
 }
diff --git a/crates/router/src/core/payments/routing.rs b/crates/router/src/core/payments/routing.rs
index 8207f71c1ad..6756fd0f76b 100644
--- a/crates/router/src/core/payments/routing.rs
+++ b/crates/router/src/core/payments/routing.rs
@@ -521,8 +521,11 @@ pub async fn perform_static_routing_v1(
         Vec::default()
     };
 
-    let (routable_connectors, routing_approach) = match cached_algorithm.as_ref() {
-        CachedAlgorithm::Single(conn) => (vec![(**conn).clone()], None),
+    let (routable_connectors, routing_strategy) = match cached_algorithm.as_ref() {
+        CachedAlgorithm::Single(conn) => (
+            vec![(**conn).clone()],
+            Some(common_enums::RoutingApproach::StraightThroughRouting),
+        ),
         CachedAlgorithm::Priority(plist) => (plist.clone(), None),
         CachedAlgorithm::VolumeSplit(splits) => (
             perform_volume_split(splits.to_vec())
@@ -549,7 +552,7 @@ pub async fn perform_static_routing_v1(
             de_euclid_connectors,
         )
         .await,
-        routing_approach,
+        routing_strategy,
     ))
 }
 
@@ -1306,7 +1309,7 @@ pub async fn perform_session_flow_routing(
         api_enums::PaymentMethodType,
         Vec<routing_types::SessionRoutingChoice>,
     > = FxHashMap::default();
-    let mut final_routing_approach = None;
+    let mut final_routing_strategy = None;
 
     for (pm_type, allowed_connectors) in pm_type_map {
         let euclid_pmt: euclid_enums::PaymentMethodType = pm_type;
@@ -1325,7 +1328,7 @@ pub async fn perform_session_flow_routing(
             profile_id: &profile_id,
         };
 
-        let (routable_connector_choice_option, routing_approach) =
+        let (routable_connector_choice_option, routing_strategy) =
             perform_session_routing_for_pm_type(
                 &session_pm_input,
                 transaction_type,
@@ -1333,7 +1336,7 @@ pub async fn perform_session_flow_routing(
             )
             .await?;
 
-        final_routing_approach = routing_approach;
+        final_routing_strategy = routing_strategy;
 
         if let Some(routable_connector_choice) = routable_connector_choice_option {
             let mut session_routing_choice: Vec<routing_types::SessionRoutingChoice> = Vec::new();
@@ -1361,7 +1364,7 @@ pub async fn perform_session_flow_routing(
         }
     }
 
-    Ok((result, final_routing_approach))
+    Ok((result, final_routing_strategy))
 }
 
 #[cfg(feature = "v1")]
@@ -1379,7 +1382,7 @@ async fn perform_session_routing_for_pm_type(
         MerchantAccountRoutingAlgorithm::V1(algorithm_ref) => &algorithm_ref.algorithm_id,
     };
 
-    let (chosen_connectors, routing_approach) = if let Some(ref algorithm_id) = algorithm_id {
+    let (chosen_connectors, routing_strategy) = if let Some(ref algorithm_id) = algorithm_id {
         let cached_algorithm = ensure_algorithm_cached_v1(
             &session_pm_input.state.clone(),
             merchant_id,
@@ -1390,7 +1393,10 @@ async fn perform_session_routing_for_pm_type(
         .await?;
 
         match cached_algorithm.as_ref() {
-            CachedAlgorithm::Single(conn) => (vec![(**conn).clone()], None),
+            CachedAlgorithm::Single(conn) => (
+                vec![(**conn).clone()],
+                Some(common_enums::RoutingApproach::StraightThroughRouting),
+            ),
             CachedAlgorithm::Priority(plist) => (plist.clone(), None),
             CachedAlgorithm::VolumeSplit(splits) => (
                 perform_volume_split(splits.to_vec())
@@ -1451,9 +1457,9 @@ async fn perform_session_routing_for_pm_type(
     }
 
     if final_selection.is_empty() {
-        Ok((None, routing_approach))
+        Ok((None, routing_strategy))
     } else {
-        Ok((Some(final_selection), routing_approach))
+        Ok((Some(final_selection), routing_strategy))
     }
 }
 
diff --git a/crates/router/src/services/kafka/payment_attempt.rs b/crates/router/src/services/kafka/payment_attempt.rs
index e0dbc6ad213..1e05fb3b58a 100644
--- a/crates/router/src/services/kafka/payment_attempt.rs
+++ b/crates/router/src/services/kafka/payment_attempt.rs
@@ -69,7 +69,7 @@ pub struct KafkaPaymentAttempt<'a> {
     pub organization_id: &'a id_type::OrganizationId,
     pub card_network: Option<String>,
     pub card_discovery: Option<String>,
-    pub routing_approach: Option<storage_enums::RoutingApproach>,
+    pub routing_strategy: Option<storage_enums::RoutingApproach>,
     pub debit_routing_savings: Option<MinorUnit>,
 }
 
@@ -132,7 +132,7 @@ impl<'a> KafkaPaymentAttempt<'a> {
             card_discovery: attempt
                 .card_discovery
                 .map(|discovery| discovery.to_string()),
-            routing_approach: attempt.routing_approach,
+            routing_strategy: attempt.routing_strategy,
             debit_routing_savings: attempt.debit_routing_savings,
         }
     }
diff --git a/crates/router/src/services/kafka/payment_attempt_event.rs b/crates/router/src/services/kafka/payment_attempt_event.rs
index a54ff3cc28a..19ec29a21b4 100644
--- a/crates/router/src/services/kafka/payment_attempt_event.rs
+++ b/crates/router/src/services/kafka/payment_attempt_event.rs
@@ -70,7 +70,7 @@ pub struct KafkaPaymentAttemptEvent<'a> {
     pub organization_id: &'a id_type::OrganizationId,
     pub card_network: Option<String>,
     pub card_discovery: Option<String>,
-    pub routing_approach: Option<storage_enums::RoutingApproach>,
+    pub routing_strategy: Option<storage_enums::RoutingApproach>,
     pub debit_routing_savings: Option<MinorUnit>,
 }
 
@@ -133,7 +133,7 @@ impl<'a> KafkaPaymentAttemptEvent<'a> {
             card_discovery: attempt
                 .card_discovery
                 .map(|discovery| discovery.to_string()),
-            routing_approach: attempt.routing_approach,
+            routing_strategy: attempt.routing_strategy,
             debit_routing_savings: attempt.debit_routing_savings,
         }
     }
diff --git a/crates/router/src/utils/user/sample_data.rs b/crates/router/src/utils/user/sample_data.rs
index b04f340056a..0b3dc31c75c 100644
--- a/crates/router/src/utils/user/sample_data.rs
+++ b/crates/router/src/utils/user/sample_data.rs
@@ -384,6 +384,7 @@ pub async fn generate_sample_data(
             setup_future_usage_applied: None,
             routing_approach: None,
             connector_request_reference_id: None,
+            routing_strategy: None,
         };
 
         let refund = if refunds_count < number_of_refunds && !is_failed_payment {
diff --git a/crates/storage_impl/src/mock_db/payment_attempt.rs b/crates/storage_impl/src/mock_db/payment_attempt.rs
index ec27f9bed65..e44519af054 100644
--- a/crates/storage_impl/src/mock_db/payment_attempt.rs
+++ b/crates/storage_impl/src/mock_db/payment_attempt.rs
@@ -235,7 +235,7 @@ impl PaymentAttemptInterface for MockDb {
             processor_merchant_id: payment_attempt.processor_merchant_id,
             created_by: payment_attempt.created_by,
             setup_future_usage_applied: payment_attempt.setup_future_usage_applied,
-            routing_approach: payment_attempt.routing_approach,
+            routing_strategy: payment_attempt.routing_strategy,
             connector_request_reference_id: payment_attempt.connector_request_reference_id,
             debit_routing_savings: None,
         };
diff --git a/crates/storage_impl/src/payments/payment_attempt.rs b/crates/storage_impl/src/payments/payment_attempt.rs
index b3fccea353e..256a7a1fce6 100644
--- a/crates/storage_impl/src/payments/payment_attempt.rs
+++ b/crates/storage_impl/src/payments/payment_attempt.rs
@@ -685,7 +685,7 @@ impl<T: DatabaseStore> PaymentAttemptInterface for KVRouterStore<T> {
                     processor_merchant_id: payment_attempt.processor_merchant_id.clone(),
                     created_by: payment_attempt.created_by.clone(),
                     setup_future_usage_applied: payment_attempt.setup_future_usage_applied,
-                    routing_approach: payment_attempt.routing_approach,
+                    routing_strategy: payment_attempt.routing_strategy,
                     connector_request_reference_id: payment_attempt
                         .connector_request_reference_id
                         .clone(),
@@ -1892,12 +1892,13 @@ impl DataModelExt for PaymentAttempt {
             issuer_error_code: self.issuer_error_code,
             issuer_error_message: self.issuer_error_message,
             setup_future_usage_applied: self.setup_future_usage_applied,
-            routing_approach: self.routing_approach,
+            routing_approach: self.routing_strategy,
             // Below fields are deprecated. Please add any new fields above this line.
             connector_transaction_data: None,
             processor_merchant_id: Some(self.processor_merchant_id),
             created_by: self.created_by.map(|created_by| created_by.to_string()),
             connector_request_reference_id: self.connector_request_reference_id,
+            routing_strategy: self.routing_strategy.map(|approach| approach.to_string()),
         }
     }
 
@@ -1988,7 +1989,9 @@ impl DataModelExt for PaymentAttempt {
                 .created_by
                 .and_then(|created_by| created_by.parse::<CreatedBy>().ok()),
             setup_future_usage_applied: storage_model.setup_future_usage_applied,
-            routing_approach: storage_model.routing_approach,
+            routing_strategy: storage_model
+                .routing_strategy
+                .and_then(|approach| approach.parse::<common_enums::RoutingApproach>().ok()),
             connector_request_reference_id: storage_model.connector_request_reference_id,
             debit_routing_savings: None,
         }
@@ -2080,8 +2083,9 @@ impl DataModelExt for PaymentAttemptNew {
             processor_merchant_id: Some(self.processor_merchant_id),
             created_by: self.created_by.map(|created_by| created_by.to_string()),
             setup_future_usage_applied: self.setup_future_usage_applied,
-            routing_approach: self.routing_approach,
+            routing_approach: None,
             connector_request_reference_id: self.connector_request_reference_id,
+            routing_strategy: self.routing_strategy.map(|approach| approach.to_string()),
         }
     }
 
@@ -2164,7 +2168,9 @@ impl DataModelExt for PaymentAttemptNew {
                 .created_by
                 .and_then(|created_by| created_by.parse::<CreatedBy>().ok()),
             setup_future_usage_applied: storage_model.setup_future_usage_applied,
-            routing_approach: storage_model.routing_approach,
+            routing_strategy: storage_model
+                .routing_strategy
+                .and_then(|approach| approach.parse::<common_enums::RoutingApproach>().ok()),
             connector_request_reference_id: storage_model.connector_request_reference_id,
         }
     }
diff --git a/migrations/2025-07-18-185812_add_routing_strategy_to_attempt/down.sql b/migrations/2025-07-18-185812_add_routing_strategy_to_attempt/down.sql
new file mode 100644
index 00000000000..4629fadc94c
--- /dev/null
+++ b/migrations/2025-07-18-185812_add_routing_strategy_to_attempt/down.sql
@@ -0,0 +1,3 @@
+-- This file should undo anything in `up.sql`
+ALTER TABLE payment_attempt
+DROP COLUMN IF EXISTS routing_strategy;
\ No newline at end of file
diff --git a/migrations/2025-07-18-185812_add_routing_strategy_to_attempt/up.sql b/migrations/2025-07-18-185812_add_routing_strategy_to_attempt/up.sql
new file mode 100644
index 00000000000..77d7f7e8311
--- /dev/null
+++ b/migrations/2025-07-18-185812_add_routing_strategy_to_attempt/up.sql
@@ -0,0 +1,3 @@
+-- Your SQL goes here
+ALTER TABLE payment_attempt
+ADD COLUMN IF NOT EXISTS routing_strategy VARCHAR(64);
\ No newline at end of file
diff --git a/v2_migrations/2025-01-13-081847_drop_v1_columns/up.sql b/v2_migrations/2025-01-13-081847_drop_v1_columns/up.sql
index be5a7b845a1..d01e9141576 100644
--- a/v2_migrations/2025-01-13-081847_drop_v1_columns/up.sql
+++ b/v2_migrations/2025-01-13-081847_drop_v1_columns/up.sql
@@ -94,7 +94,8 @@ ALTER TABLE payment_attempt DROP COLUMN attempt_id,
     DROP COLUMN issuer_error_code,
     DROP COLUMN issuer_error_message,
     DROP COLUMN setup_future_usage_applied,
-    DROP COLUMN routing_approach;
+    DROP COLUMN routing_approach,
+    DROP COLUMN routing_strategy;
 
 
 ALTER TABLE payment_methods

This pull request introduces a significant refactor in the `PaymentAttempt` module by replacing the `routing_approach` field with a new `routing_strategy` field across multiple structs and enums. This change is aimed at aligning data structures with updated business logic or requirements.

### Key Changes:

#### Field Replacement:
* Replaced `routing_approach` (of type `Option<storage_enums::RoutingApproach>`) with `routing_strategy` (of type `Option<String>`) in the following structs:
  - `PaymentAttempt` (`crates/diesel_models/src/payment_attempt.rs`)
  - `PaymentAttemptNew` (`crates/diesel_models/src/payment_attempt.rs`)
  - `PaymentAttemptUpdateInternal` (`crates/diesel_models/src/payment_attempt.rs`)

#### Enum Updates:
* Updated the `PaymentAttemptUpdate` enum to use `routing_strategy` instead of `routing_approach` in various variants:
  - `TaxAmountUpdate`
  - `OrderTaxAmountUpdate`
  - `UnresolvedResponseUpdate`

#### Conversion Logic:
* Adjusted the `impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal` implementation to handle the new `routing_strategy` field in all relevant match arms, ensuring compatibility with the updated data structure:
  - Example: `ConnectorMandateDetailUpdate`
  - Example: `AuthenticationUpdate`

#### Helper Methods:
* Updated helper methods in `impl PaymentAttemptUpdate` to correctly populate and derive fields related to `routing_strategy`:
  - Modified field mapping in `populate_derived_fields`
  - Adjusted field merging logic in `merge`

This refactor ensures consistency across the codebase while introducing a more flexible `routing_strategy` field.## 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 -->
This pull request introduces a new field, `routing_approach_v2`, across multiple structs and enums in the `payment_attempt.rs` file, as well as updates the database schema to include this field. These changes appear to support a new version of the routing approach while maintaining backward compatibility with the existing `routing_approach` field. Below is a summary of the most significant changes grouped by theme.

### Struct and Enum Updates

* Added the `routing_approach_v2` field of type `Option<String>` to the `PaymentAttempt`, `PaymentAttemptNew`, and `PaymentAttemptBatchNew` structs to support the new routing approach. [[1]](diffhunk://#diff-e03a698ee8a7ac87e85f3a65d602e7a32ea088db6a22bbd74da4e5d7266aed33R210) [[2]](diffhunk://#diff-e03a698ee8a7ac87e85f3a65d602e7a32ea088db6a22bbd74da4e5d7266aed33R432) [[3]](diffhunk://#diff-92e5d4154a0848e1a43304dd679c02652965379d7f63bf2ac2ad802efb0d891dR221)
* Replaced the `routing_approach` field with `routing_approach_v2` in the `PaymentAttemptUpdate` and `PaymentAttemptUpdateInternal` enums to align with the new routing approach. [[1]](diffhunk://#diff-e03a698ee8a7ac87e85f3a65d602e7a32ea088db6a22bbd74da4e5d7266aed33L464-R466) [[2]](diffhunk://#diff-e03a698ee8a7ac87e85f3a65d602e7a32ea088db6a22bbd74da4e5d7266aed33L1057-R1059)

### Schema Changes

* Updated the database schema in `schema.rs` to include the new `routing_approach_v2` field as a nullable `Varchar` column with a maximum length of 64 characters.

### Conversion Logic

* Modified the `impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal` implementation to handle the `routing_approach_v2` field instead of `routing_approach` across multiple match arms. [[1]](diffhunk://#diff-e03a698ee8a7ac87e85f3a65d602e7a32ea088db6a22bbd74da4e5d7266aed33L2377-R2381) [[2]](diffhunk://#diff-e03a698ee8a7ac87e85f3a65d602e7a32ea088db6a22bbd74da4e5d7266aed33L2441-R2445) [[3]](diffhunk://#diff-e03a698ee8a7ac87e85f3a65d602e7a32ea088db6a22bbd74da4e5d7266aed33L2864-R2867) and others)
* Updated the `populate_derived_fields` method in `PaymentAttemptUpdate` to correctly propagate the `routing_approach_v2` field during updates. [[1]](diffhunk://#diff-e03a698ee8a7ac87e85f3a65d602e7a32ea088db6a22bbd74da4e5d7266aed33L1248-R1250) [[2]](diffhunk://#diff-e03a698ee8a7ac87e85f3a65d602e7a32ea088db6a22bbd74da4e5d7266aed33L1316-R1321)

These changes ensure that the new `routing_approach_v2` field is integrated consistently across the codebase, supporting future enhancements while maintaining compatibility with existing functionality.

### 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)?
-->
1. make a straight through routing payment
```
curl --location 'http://localhost:8080/payments' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'api-key: dev_BNOaWRzwyZ3hMAbhRNtp9t6Mx7ZSVyK5gPvd1bavl0FWehvrHlre1eMifYA244TE' \
--data-raw '{
  "amount": 6540,
  "currency": "USD",
  "confirm": true,
  "capture_method": "automatic",
  "capture_on": "2022-09-10T10:11:12Z",
  "amount_to_capture": 6540,
  "customer_id": "StripeCustomer",
  "profile_id": "pro_EfD8EtQQSPZxXStG6B7x",
  "email": "guest@example.com",
  "name": "John Doe",
  "phone": "999999999",
   "routing": {
    "type": "single",
    "data": {"connector": "stripe", "merchant_connector_id": "mca_SdftCCtpClu32qA6oijC"}
  },
  "phone_country_code": "+1",
  "description": "Its my first payment request",
  "authentication_type": "no_three_ds",
  "return_url": "https://google.com",
  "payment_method": "card",
  "payment_method_type": "credit",
  "payment_method_data": {
    "card": {
      "card_number": "4242424242424242",
      "card_exp_month": "03",
      "card_exp_year": "30",
      "card_holder_name": "joseph Doe",
      "card_cvc": "737"
    }
  },
  "billing": {
    "address": {
      "line1": "1467",
      "line2": "Harrison Street",
      "line3": "Harrison Street",
      "city": "San Fransico",
      "state": "California",
      "zip": "94122",
      "country": "NL",
      "first_name": "joseph",
      "last_name": "Doe"
    },
    "phone": {
      "number": "8056594427",
      "country_code": "+91"
    }
  },
  "shipping": {
    "address": {
      "line1": "1467",
      "line2": "Harrison Street",
      "line3": "Harrison Street",
      "city": "San Fransico",
      "state": "California",
      "zip": "94122",
      "country": "US",
      "first_name": "joseph",
      "last_name": "Doe"
    },
    "phone": {
      "number": "8056594427",
      "country_code": "+91"
    }
  },
  "statement_descriptor_name": "joseph",
  "statement_descriptor_suffix": "JS",
  "metadata": {
    "udf1": "value1",
    "new_customer": "true",
    "login_date": "2019-09-10T10:11:12Z"
  },
   "browser_info": {
        "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36",
        "accept_header": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
        "language": "nl-NL",
        "color_depth": 24,
        "screen_height": 723,
        "screen_width": 1536,
        "time_zone": 0,
        "java_enabled": true,
        "java_script_enabled": true,
        "ip_address": "127.0.0.1"
    }
}'
```

DB - 
<img width="1291" height="859" alt="image" src="https://github.com/user-attachments/assets/e00b4780-fa23-44a6-a32a-b3fd4bec5d27" />


2. Make a 3ds payment for the same

```
curl --location 'http://localhost:8080/payments' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'api-key: dev_BNOaWRzwyZ3hMAbhRNtp9t6Mx7ZSVyK5gPvd1bavl0FWehvrHlre1eMifYA244TE' \
--data-raw '{
  "amount": 6540,
  "currency": "USD",
  "confirm": true,
  "capture_method": "automatic",
  "capture_on": "2022-09-10T10:11:12Z",
  "amount_to_capture": 6540,
  "customer_id": "StripeCustomer",
  "profile_id": "pro_EfD8EtQQSPZxXStG6B7x",
  "email": "guest@example.com",
  "name": "John Doe",
  "phone": "999999999",
  "phone_country_code": "+1",
  "description": "Its my first payment request",
  "authentication_type": "three_ds",
  "return_url": "https://google.com",
  "payment_method": "card",
  "payment_method_type": "credit",
  "routing": {
    "type": "single",
    "data": {"connector": "stripe", "merchant_connector_id": "mca_SdftCCtpClu32qA6oijC"}
  },
  "payment_method_data": {
    "card": {
      "card_number": "4242424242424242",
      "card_exp_month": "03",
      "card_exp_year": "30",
      "card_holder_name": "joseph Doe",
      "card_cvc": "737"
    }
  },
  "billing": {
    "address": {
      "line1": "1467",
      "line2": "Harrison Street",
      "line3": "Harrison Street",
      "city": "San Fransico",
      "state": "California",
      "zip": "94122",
      "country": "NL",
      "first_name": "joseph",
      "last_name": "Doe"
    },
    "phone": {
      "number": "8056594427",
      "country_code": "+91"
    }
  },
  "shipping": {
    "address": {
      "line1": "1467",
      "line2": "Harrison Street",
      "line3": "Harrison Street",
      "city": "San Fransico",
      "state": "California",
      "zip": "94122",
      "country": "US",
      "first_name": "joseph",
      "last_name": "Doe"
    },
    "phone": {
      "number": "8056594427",
      "country_code": "+91"
    }
  },
  "statement_descriptor_name": "joseph",
  "statement_descriptor_suffix": "JS",
  "metadata": {
    "udf1": "value1",
    "new_customer": "true",
    "login_date": "2019-09-10T10:11:12Z"
  },
   "browser_info": {
        "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36",
        "accept_header": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
        "language": "nl-NL",
        "color_depth": 24,
        "screen_height": 723,
        "screen_width": 1536,
        "time_zone": 0,
        "java_enabled": true,
        "java_script_enabled": true,
        "ip_address": "127.0.0.1"
    }
}'
```

DB - 
<img width="1180" height="560" alt="image" src="https://github.com/user-attachments/assets/642295ab-0fd3-4588-a532-cd32038eace1" />

3. Create non-straight-through payment
```
curl --location 'http://localhost:8080/payments' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'api-key: dev_BNOaWRzwyZ3hMAbhRNtp9t6Mx7ZSVyK5gPvd1bavl0FWehvrHlre1eMifYA244TE' \
--data-raw '{
  "amount": 6540,
  "currency": "USD",
  "confirm": true,
  "capture_method": "automatic",
  "capture_on": "2022-09-10T10:11:12Z",
  "amount_to_capture": 6540,
  "customer_id": "StripeCustomer",
  "profile_id": "pro_EfD8EtQQSPZxXStG6B7x",
  "email": "guest@example.com",
  "name": "John Doe",
  "phone": "999999999",
  "phone_country_code": "+1",
  "description": "Its my first payment request",
  "authentication_type": "three_ds",
  "return_url": "https://google.com",
  "payment_method": "card",
  "payment_method_type": "credit",
  "payment_method_data": {
    "card": {
      "card_number": "4242424242424242",
      "card_exp_month": "03",
      "card_exp_year": "30",
      "card_holder_name": "joseph Doe",
      "card_cvc": "737"
    }
  },
  "billing": {
    "address": {
      "line1": "1467",
      "line2": "Harrison Street",
      "line3": "Harrison Street",
      "city": "San Fransico",
      "state": "California",
      "zip": "94122",
      "country": "NL",
      "first_name": "joseph",
      "last_name": "Doe"
    },
    "phone": {
      "number": "8056594427",
      "country_code": "+91"
    }
  },
  "shipping": {
    "address": {
      "line1": "1467",
      "line2": "Harrison Street",
      "line3": "Harrison Street",
      "city": "San Fransico",
      "state": "California",
      "zip": "94122",
      "country": "US",
      "first_name": "joseph",
      "last_name": "Doe"
    },
    "phone": {
      "number": "8056594427",
      "country_code": "+91"
    }
  },
  "statement_descriptor_name": "joseph",
  "statement_descriptor_suffix": "JS",
  "metadata": {
    "udf1": "value1",
    "new_customer": "true",
    "login_date": "2019-09-10T10:11:12Z"
  },
   "browser_info": {
        "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36",
        "accept_header": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
        "language": "nl-NL",
        "color_depth": 24,
        "screen_height": 723,
        "screen_width": 1536,
        "time_zone": 0,
        "java_enabled": true,
        "java_script_enabled": true,
        "ip_address": "127.0.0.1"
    }
}'
```

DB - 
<img width="1260" height="611" alt="image" src="https://github.com/user-attachments/assets/825b4a7d-e4a7-4188-b686-cf2611c0a5f4" />

4. No 3DS payment 
```
curl --location 'http://localhost:8080/payments' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'api-key: dev_BNOaWRzwyZ3hMAbhRNtp9t6Mx7ZSVyK5gPvd1bavl0FWehvrHlre1eMifYA244TE' \
--data-raw '{
  "amount": 6540,
  "currency": "USD",
  "confirm": true,
  "capture_method": "automatic",
  "capture_on": "2022-09-10T10:11:12Z",
  "amount_to_capture": 6540,
  "customer_id": "StripeCustomer",
  "profile_id": "pro_EfD8EtQQSPZxXStG6B7x",
  "email": "guest@example.com",
  "name": "John Doe",
  "phone": "999999999",




  "phone_country_code": "+1",
  "description": "Its my first payment request",
  "authentication_type": "no_three_ds",
  "return_url": "https://google.com",
  "payment_method": "card",
  "payment_method_type": "credit",
  "payment_method_data": {
    "card": {
      "card_number": "4242424242424242",
      "card_exp_month": "03",
      "card_exp_year": "30",
      "card_holder_name": "joseph Doe",
      "card_cvc": "737"
    }
  },
  "billing": {
    "address": {
      "line1": "1467",
      "line2": "Harrison Street",
      "line3": "Harrison Street",
      "city": "San Fransico",
      "state": "California",
      "zip": "94122",
      "country": "NL",
      "first_name": "joseph",
      "last_name": "Doe"
    },
    "phone": {
      "number": "8056594427",
      "country_code": "+91"
    }
  },
  "shipping": {
    "address": {
      "line1": "1467",
      "line2": "Harrison Street",
      "line3": "Harrison Street",
      "city": "San Fransico",
      "state": "California",
      "zip": "94122",
      "country": "US",
      "first_name": "joseph",
      "last_name": "Doe"
    },
    "phone": {
      "number": "8056594427",
      "country_code": "+91"
    }
  },
  "statement_descriptor_name": "joseph",
  "statement_descriptor_suffix": "JS",
  "metadata": {
    "udf1": "value1",
    "new_customer": "true",
    "login_date": "2019-09-10T10:11:12Z"
  },
   "browser_info": {
        "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36",
        "accept_header": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
        "language": "nl-NL",
        "color_depth": 24,
        "screen_height": 723,
        "screen_width": 1536,
        "time_zone": 0,
        "java_enabled": true,
        "java_script_enabled": true,
        "ip_address": "127.0.0.1"
    }
}'
```

DB - 
<img width="1253" height="559" alt="image" src="https://github.com/user-attachments/assets/bb5d3d25-8a8b-45cd-b466-e17f28e1ce86" />


## 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
