Issue:
Bug: feat(analytics): revert remove additional filters from PaymentIntentFilters



When global filters are applied on the dashboard, these filters are being sent to both Payment Attempt and Payment Intent related metrics.
Initially backend support was not present for capturing these filters and adding to the queries, for Payment Intent related metrics, but for the new Analytics V2 dashboard, since the Sessionizer Tables are being used, all these filter fields are supported in the Sessionizer Payment Intents table.

When backend support was added to apply these filters for the new dashboard, the old dashboard started breaking, as the filter fields are not present in the existing Payment Intents table.

FE stopped sending these filters to Payment Intent metrics on the old dashboard, and so we can add these filters back to PaymentIntentFilters to support the filters on the new Analytics V2 dashboard.

Pull request description:

## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [x] Bugfix
- [ ] New feature
- [ ] Enhancement
- [ ] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [ ] CI/CD

## Description
<!-- Describe your changes in detail -->
Reverts [https://github.com/juspay/hyperswitch/pull/6403](https://github.com/juspay/hyperswitch/pull/6403)

When global filters are applied on the dashboard, these filters are being sent to both Payment Attempt and Payment Intent related metrics.
Initially backend support was not present for capturing these filters and adding to the queries, for Payment Intent related metrics, but for the new Analytics V2 dashboard, since the Sessionizer Tables are being used, all these filter fields are supported in the Sessionizer Payment Intents table.

When backend support was added to apply these filters for the new dashboard, the old dashboard started breaking, as the filter fields are not present in the existing Payment Intents table.

FE stopped sending these filters to Payment Intent metrics on the old dashboard, and so adding these filters back to PaymentIntentFilters to support the filters on the new Analytics V2 dashboard.

The additional filters added:
- connector
- authentication_type
- payment_method
- payment_method_type
- card_network
- merchant_id
- card_last_4
- card_issuer
- error_reason
### 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).
-->

Enable filters for Payment Intent related metrics on the new Analytics V2 dashboard.


## 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)?
-->
Hit the curl:
```bash
curl --location 'http://localhost:8080/analytics/v2/org/metrics/payments' \
--header 'Accept: */*' \
--header 'Accept-Language: en-US,en;q=0.9' \
--header 'Connection: keep-alive' \
--header 'Content-Type: application/json' \
--header 'Origin: http://localhost:9000' \
--header 'QueryType: SingleStatTimeseries' \
--header 'Referer: http://localhost:9000/' \
--header 'Sec-Fetch-Dest: empty' \
--header 'Sec-Fetch-Mode: cors' \
--header 'Sec-Fetch-Site: same-site' \
--header 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36' \
--header 'api-key: dev_LZcIA7XeMpnK5satp4CDvjcnHCaeKTBcosyuBBJaknZu1odhFo96cwS0nSdfzuJF' \
--header 'authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiNTQ5ZTNkMmItMTY5Yi00NzUzLWJmNTQtZDcxMTM2YjRiN2JkIiwibWVyY2hhbnRfaWQiOiJtZXJjaGFudF8xNzI2MDQ2MzI4Iiwicm9sZV9pZCI6Im9yZ19hZG1pbiIsImV4cCI6MTczMDkxNDM0Mywib3JnX2lkIjoib3JnX1ZwU0hPanNZZkR2YWJWWUpnQ0FKIiwicHJvZmlsZV9pZCI6InByb19BN1F4SjN6TG05Z1NmYkZqUTNpNSJ9.Y7RdCF52kfFCUld587axdN5d4Xl7SGK4wv7C-bdDI0M' \
--header 'sec-ch-ua: "Chromium";v="128", "Not;A=Brand";v="24", "Google Chrome";v="128"' \
--header 'sec-ch-ua-mobile: ?0' \
--header 'sec-ch-ua-platform: "macOS"' \
--data '[
    {
        "timeRange": {
            "startTime": "2024-10-14T18:30:00Z",
            "endTime": "2024-10-22T15:24:00Z"
        },
        "groupByNames": [
            "currency"
        ],
        "filters": {
            "connector": [
                "stripe_test"
            ]
        },
        "timeSeries": {
            "granularity": "G_ONEDAY"
        },
        "mode": "ORDER",
        "source": "BATCH",
        "metrics": [
            "sessionized_total_smart_retries"
        ]
    }
]'
```

We should be able to extract the results based on the additional filters that are applied:

- connector
- authentication_type
- payment_method
- payment_method_type
- card_network
- merchant_id
- card_last_4
- card_issuer
- error_reason


## 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`
- [x] I reviewed the submitted code
- [ ] I added unit tests for my changes where possible


Testing:

Hit the curl:
```bash
curl --location 'http://localhost:8080/analytics/v2/org/metrics/payments' \
--header 'Accept: */*' \
--header 'Accept-Language: en-US,en;q=0.9' \
--header 'Connection: keep-alive' \
--header 'Content-Type: application/json' \
--header 'Origin: http://localhost:9000' \
--header 'QueryType: SingleStatTimeseries' \
--header 'Referer: http://localhost:9000/' \
--header 'Sec-Fetch-Dest: empty' \
--header 'Sec-Fetch-Mode: cors' \
--header 'Sec-Fetch-Site: same-site' \
--header 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36' \
--header 'api-key: dev_LZcIA7XeMpnK5satp4CDvjcnHCaeKTBcosyuBBJaknZu1odhFo96cwS0nSdfzuJF' \
--header 'authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiNTQ5ZTNkMmItMTY5Yi00NzUzLWJmNTQtZDcxMTM2YjRiN2JkIiwibWVyY2hhbnRfaWQiOiJtZXJjaGFudF8xNzI2MDQ2MzI4Iiwicm9sZV9pZCI6Im9yZ19hZG1pbiIsImV4cCI6MTczMDkxNDM0Mywib3JnX2lkIjoib3JnX1ZwU0hPanNZZkR2YWJWWUpnQ0FKIiwicHJvZmlsZV9pZCI6InByb19BN1F4SjN6TG05Z1NmYkZqUTNpNSJ9.Y7RdCF52kfFCUld587axdN5d4Xl7SGK4wv7C-bdDI0M' \
--header 'sec-ch-ua: "Chromium";v="128", "Not;A=Brand";v="24", "Google Chrome";v="128"' \
--header 'sec-ch-ua-mobile: ?0' \
--header 'sec-ch-ua-platform: "macOS"' \
--data '[
    {
        "timeRange": {
            "startTime": "2024-10-14T18:30:00Z",
            "endTime": "2024-10-22T15:24:00Z"
        },
        "groupByNames": [
            "currency"
        ],
        "filters": {
            "connector": [
                "stripe_test"
            ]
        },
        "timeSeries": {
            "granularity": "G_ONEDAY"
        },
        "mode": "ORDER",
        "source": "BATCH",
        "metrics": [
            "sessionized_total_smart_retries"
        ]
    }
]'
```

We should be able to extract the results based on the additional filters that are applied:

- connector
- authentication_type
- payment_method
- payment_method_type
- card_network
- merchant_id
- card_last_4
- card_issuer
- error_reason

Patch:
diff --git a/crates/analytics/src/payment_intents/core.rs b/crates/analytics/src/payment_intents/core.rs
index 3e8915c60a2..42b4895b6a2 100644
--- a/crates/analytics/src/payment_intents/core.rs
+++ b/crates/analytics/src/payment_intents/core.rs
@@ -372,6 +372,15 @@ pub async fn get_filters(
             PaymentIntentDimensions::PaymentIntentStatus => fil.status.map(|i| i.as_ref().to_string()),
             PaymentIntentDimensions::Currency => fil.currency.map(|i| i.as_ref().to_string()),
             PaymentIntentDimensions::ProfileId => fil.profile_id,
+            PaymentIntentDimensions::Connector => fil.connector,
+            PaymentIntentDimensions::AuthType => fil.authentication_type.map(|i| i.as_ref().to_string()),
+            PaymentIntentDimensions::PaymentMethod => fil.payment_method,
+            PaymentIntentDimensions::PaymentMethodType => fil.payment_method_type,
+            PaymentIntentDimensions::CardNetwork => fil.card_network,
+            PaymentIntentDimensions::MerchantId => fil.merchant_id,
+            PaymentIntentDimensions::CardLast4 => fil.card_last_4,
+            PaymentIntentDimensions::CardIssuer => fil.card_issuer,
+            PaymentIntentDimensions::ErrorReason => fil.error_reason,
         })
         .collect::<Vec<String>>();
         res.query_data.push(PaymentIntentFilterValue {
diff --git a/crates/analytics/src/payment_intents/filters.rs b/crates/analytics/src/payment_intents/filters.rs
index d03d6c2a15f..1468a67570a 100644
--- a/crates/analytics/src/payment_intents/filters.rs
+++ b/crates/analytics/src/payment_intents/filters.rs
@@ -1,6 +1,6 @@
 use api_models::analytics::{payment_intents::PaymentIntentDimensions, Granularity, TimeRange};
 use common_utils::errors::ReportSwitchExt;
-use diesel_models::enums::{Currency, IntentStatus};
+use diesel_models::enums::{AuthenticationType, Currency, IntentStatus};
 use error_stack::ResultExt;
 use time::PrimitiveDateTime;
 
@@ -54,5 +54,14 @@ pub struct PaymentIntentFilterRow {
     pub status: Option<DBEnumWrapper<IntentStatus>>,
     pub currency: Option<DBEnumWrapper<Currency>>,
     pub profile_id: Option<String>,
+    pub connector: Option<String>,
+    pub authentication_type: Option<DBEnumWrapper<AuthenticationType>>,
+    pub payment_method: Option<String>,
+    pub payment_method_type: Option<String>,
+    pub card_network: Option<String>,
+    pub merchant_id: Option<String>,
+    pub card_last_4: Option<String>,
+    pub card_issuer: Option<String>,
+    pub error_reason: Option<String>,
     pub customer_id: Option<String>,
 }
diff --git a/crates/analytics/src/payment_intents/metrics.rs b/crates/analytics/src/payment_intents/metrics.rs
index 9aa7d3e9771..ee3d4773e24 100644
--- a/crates/analytics/src/payment_intents/metrics.rs
+++ b/crates/analytics/src/payment_intents/metrics.rs
@@ -36,6 +36,15 @@ pub struct PaymentIntentMetricRow {
     pub status: Option<DBEnumWrapper<storage_enums::IntentStatus>>,
     pub currency: Option<DBEnumWrapper<storage_enums::Currency>>,
     pub profile_id: Option<String>,
+    pub connector: Option<String>,
+    pub authentication_type: Option<DBEnumWrapper<storage_enums::AuthenticationType>>,
+    pub payment_method: Option<String>,
+    pub payment_method_type: Option<String>,
+    pub card_network: Option<String>,
+    pub merchant_id: Option<String>,
+    pub card_last_4: Option<String>,
+    pub card_issuer: Option<String>,
+    pub error_reason: Option<String>,
     pub first_attempt: Option<i64>,
     pub total: Option<bigdecimal::BigDecimal>,
     pub count: Option<i64>,
diff --git a/crates/analytics/src/payment_intents/metrics/payment_intent_count.rs b/crates/analytics/src/payment_intents/metrics/payment_intent_count.rs
index 4632cbe9f37..b301a9b9b23 100644
--- a/crates/analytics/src/payment_intents/metrics/payment_intent_count.rs
+++ b/crates/analytics/src/payment_intents/metrics/payment_intent_count.rs
@@ -101,6 +101,15 @@ where
                         i.status.as_ref().map(|i| i.0),
                         i.currency.as_ref().map(|i| i.0),
                         i.profile_id.clone(),
+                        i.connector.clone(),
+                        i.authentication_type.as_ref().map(|i| i.0),
+                        i.payment_method.clone(),
+                        i.payment_method_type.clone(),
+                        i.card_network.clone(),
+                        i.merchant_id.clone(),
+                        i.card_last_4.clone(),
+                        i.card_issuer.clone(),
+                        i.error_reason.clone(),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payment_intents/metrics/payment_processed_amount.rs b/crates/analytics/src/payment_intents/metrics/payment_processed_amount.rs
index 51b574f4ad3..cf733b0c3da 100644
--- a/crates/analytics/src/payment_intents/metrics/payment_processed_amount.rs
+++ b/crates/analytics/src/payment_intents/metrics/payment_processed_amount.rs
@@ -138,6 +138,15 @@ where
                         None,
                         i.currency.as_ref().map(|i| i.0),
                         i.profile_id.clone(),
+                        i.connector.clone(),
+                        i.authentication_type.as_ref().map(|i| i.0),
+                        i.payment_method.clone(),
+                        i.payment_method_type.clone(),
+                        i.card_network.clone(),
+                        i.merchant_id.clone(),
+                        i.card_last_4.clone(),
+                        i.card_issuer.clone(),
+                        i.error_reason.clone(),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payment_intents/metrics/payments_success_rate.rs b/crates/analytics/src/payment_intents/metrics/payments_success_rate.rs
index 14e168b3523..07b1bfcf69f 100644
--- a/crates/analytics/src/payment_intents/metrics/payments_success_rate.rs
+++ b/crates/analytics/src/payment_intents/metrics/payments_success_rate.rs
@@ -114,6 +114,15 @@ where
                         None,
                         i.currency.as_ref().map(|i| i.0),
                         i.profile_id.clone(),
+                        i.connector.clone(),
+                        i.authentication_type.as_ref().map(|i| i.0),
+                        i.payment_method.clone(),
+                        i.payment_method_type.clone(),
+                        i.card_network.clone(),
+                        i.merchant_id.clone(),
+                        i.card_last_4.clone(),
+                        i.card_issuer.clone(),
+                        i.error_reason.clone(),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payment_intents/metrics/sessionized_metrics/payment_intent_count.rs b/crates/analytics/src/payment_intents/metrics/sessionized_metrics/payment_intent_count.rs
index 644bf35a723..7475a75bb53 100644
--- a/crates/analytics/src/payment_intents/metrics/sessionized_metrics/payment_intent_count.rs
+++ b/crates/analytics/src/payment_intents/metrics/sessionized_metrics/payment_intent_count.rs
@@ -101,6 +101,15 @@ where
                         i.status.as_ref().map(|i| i.0),
                         i.currency.as_ref().map(|i| i.0),
                         i.profile_id.clone(),
+                        i.connector.clone(),
+                        i.authentication_type.as_ref().map(|i| i.0),
+                        i.payment_method.clone(),
+                        i.payment_method_type.clone(),
+                        i.card_network.clone(),
+                        i.merchant_id.clone(),
+                        i.card_last_4.clone(),
+                        i.card_issuer.clone(),
+                        i.error_reason.clone(),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payment_intents/metrics/sessionized_metrics/payment_processed_amount.rs b/crates/analytics/src/payment_intents/metrics/sessionized_metrics/payment_processed_amount.rs
index e7772245063..506965375f5 100644
--- a/crates/analytics/src/payment_intents/metrics/sessionized_metrics/payment_processed_amount.rs
+++ b/crates/analytics/src/payment_intents/metrics/sessionized_metrics/payment_processed_amount.rs
@@ -128,6 +128,15 @@ where
                         None,
                         i.currency.as_ref().map(|i| i.0),
                         i.profile_id.clone(),
+                        i.connector.clone(),
+                        i.authentication_type.as_ref().map(|i| i.0),
+                        i.payment_method.clone(),
+                        i.payment_method_type.clone(),
+                        i.card_network.clone(),
+                        i.merchant_id.clone(),
+                        i.card_last_4.clone(),
+                        i.card_issuer.clone(),
+                        i.error_reason.clone(),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payment_intents/metrics/sessionized_metrics/payments_distribution.rs b/crates/analytics/src/payment_intents/metrics/sessionized_metrics/payments_distribution.rs
index eed6bf85a2c..0b55c101a7c 100644
--- a/crates/analytics/src/payment_intents/metrics/sessionized_metrics/payments_distribution.rs
+++ b/crates/analytics/src/payment_intents/metrics/sessionized_metrics/payments_distribution.rs
@@ -113,6 +113,15 @@ where
                         None,
                         i.currency.as_ref().map(|i| i.0),
                         i.profile_id.clone(),
+                        i.connector.clone(),
+                        i.authentication_type.as_ref().map(|i| i.0),
+                        i.payment_method.clone(),
+                        i.payment_method_type.clone(),
+                        i.card_network.clone(),
+                        i.merchant_id.clone(),
+                        i.card_last_4.clone(),
+                        i.card_issuer.clone(),
+                        i.error_reason.clone(),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payment_intents/metrics/sessionized_metrics/payments_success_rate.rs b/crates/analytics/src/payment_intents/metrics/sessionized_metrics/payments_success_rate.rs
index bd1f8bbbcd9..8c340d0b2d6 100644
--- a/crates/analytics/src/payment_intents/metrics/sessionized_metrics/payments_success_rate.rs
+++ b/crates/analytics/src/payment_intents/metrics/sessionized_metrics/payments_success_rate.rs
@@ -114,6 +114,15 @@ where
                         None,
                         i.currency.as_ref().map(|i| i.0),
                         i.profile_id.clone(),
+                        i.connector.clone(),
+                        i.authentication_type.as_ref().map(|i| i.0),
+                        i.payment_method.clone(),
+                        i.payment_method_type.clone(),
+                        i.card_network.clone(),
+                        i.merchant_id.clone(),
+                        i.card_last_4.clone(),
+                        i.card_issuer.clone(),
+                        i.error_reason.clone(),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payment_intents/metrics/sessionized_metrics/smart_retried_amount.rs b/crates/analytics/src/payment_intents/metrics/sessionized_metrics/smart_retried_amount.rs
index 6d36aca5172..8105a4c82a4 100644
--- a/crates/analytics/src/payment_intents/metrics/sessionized_metrics/smart_retried_amount.rs
+++ b/crates/analytics/src/payment_intents/metrics/sessionized_metrics/smart_retried_amount.rs
@@ -122,6 +122,15 @@ where
                         i.status.as_ref().map(|i| i.0),
                         i.currency.as_ref().map(|i| i.0),
                         i.profile_id.clone(),
+                        i.connector.clone(),
+                        i.authentication_type.as_ref().map(|i| i.0),
+                        i.payment_method.clone(),
+                        i.payment_method_type.clone(),
+                        i.card_network.clone(),
+                        i.merchant_id.clone(),
+                        i.card_last_4.clone(),
+                        i.card_issuer.clone(),
+                        i.error_reason.clone(),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payment_intents/metrics/sessionized_metrics/successful_smart_retries.rs b/crates/analytics/src/payment_intents/metrics/sessionized_metrics/successful_smart_retries.rs
index bf97e4c41ef..0b28cb5366d 100644
--- a/crates/analytics/src/payment_intents/metrics/sessionized_metrics/successful_smart_retries.rs
+++ b/crates/analytics/src/payment_intents/metrics/sessionized_metrics/successful_smart_retries.rs
@@ -111,6 +111,15 @@ where
                         i.status.as_ref().map(|i| i.0),
                         i.currency.as_ref().map(|i| i.0),
                         i.profile_id.clone(),
+                        i.connector.clone(),
+                        i.authentication_type.as_ref().map(|i| i.0),
+                        i.payment_method.clone(),
+                        i.payment_method_type.clone(),
+                        i.card_network.clone(),
+                        i.merchant_id.clone(),
+                        i.card_last_4.clone(),
+                        i.card_issuer.clone(),
+                        i.error_reason.clone(),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payment_intents/metrics/sessionized_metrics/total_smart_retries.rs b/crates/analytics/src/payment_intents/metrics/sessionized_metrics/total_smart_retries.rs
index cea5b2fa465..20ef8be6277 100644
--- a/crates/analytics/src/payment_intents/metrics/sessionized_metrics/total_smart_retries.rs
+++ b/crates/analytics/src/payment_intents/metrics/sessionized_metrics/total_smart_retries.rs
@@ -106,6 +106,15 @@ where
                         i.status.as_ref().map(|i| i.0),
                         i.currency.as_ref().map(|i| i.0),
                         i.profile_id.clone(),
+                        i.connector.clone(),
+                        i.authentication_type.as_ref().map(|i| i.0),
+                        i.payment_method.clone(),
+                        i.payment_method_type.clone(),
+                        i.card_network.clone(),
+                        i.merchant_id.clone(),
+                        i.card_last_4.clone(),
+                        i.card_issuer.clone(),
+                        i.error_reason.clone(),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payment_intents/metrics/smart_retried_amount.rs b/crates/analytics/src/payment_intents/metrics/smart_retried_amount.rs
index b23fcafdee0..8468911f7bb 100644
--- a/crates/analytics/src/payment_intents/metrics/smart_retried_amount.rs
+++ b/crates/analytics/src/payment_intents/metrics/smart_retried_amount.rs
@@ -122,6 +122,15 @@ where
                         i.status.as_ref().map(|i| i.0),
                         i.currency.as_ref().map(|i| i.0),
                         i.profile_id.clone(),
+                        i.connector.clone(),
+                        i.authentication_type.as_ref().map(|i| i.0),
+                        i.payment_method.clone(),
+                        i.payment_method_type.clone(),
+                        i.card_network.clone(),
+                        i.merchant_id.clone(),
+                        i.card_last_4.clone(),
+                        i.card_issuer.clone(),
+                        i.error_reason.clone(),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payment_intents/metrics/successful_smart_retries.rs b/crates/analytics/src/payment_intents/metrics/successful_smart_retries.rs
index 4fe5f3a26f5..a19bdec518c 100644
--- a/crates/analytics/src/payment_intents/metrics/successful_smart_retries.rs
+++ b/crates/analytics/src/payment_intents/metrics/successful_smart_retries.rs
@@ -111,6 +111,15 @@ where
                         i.status.as_ref().map(|i| i.0),
                         i.currency.as_ref().map(|i| i.0),
                         i.profile_id.clone(),
+                        i.connector.clone(),
+                        i.authentication_type.as_ref().map(|i| i.0),
+                        i.payment_method.clone(),
+                        i.payment_method_type.clone(),
+                        i.card_network.clone(),
+                        i.merchant_id.clone(),
+                        i.card_last_4.clone(),
+                        i.card_issuer.clone(),
+                        i.error_reason.clone(),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payment_intents/metrics/total_smart_retries.rs b/crates/analytics/src/payment_intents/metrics/total_smart_retries.rs
index e98efa9f6ab..f5539abd9f5 100644
--- a/crates/analytics/src/payment_intents/metrics/total_smart_retries.rs
+++ b/crates/analytics/src/payment_intents/metrics/total_smart_retries.rs
@@ -106,6 +106,15 @@ where
                         i.status.as_ref().map(|i| i.0),
                         i.currency.as_ref().map(|i| i.0),
                         i.profile_id.clone(),
+                        i.connector.clone(),
+                        i.authentication_type.as_ref().map(|i| i.0),
+                        i.payment_method.clone(),
+                        i.payment_method_type.clone(),
+                        i.card_network.clone(),
+                        i.merchant_id.clone(),
+                        i.card_last_4.clone(),
+                        i.card_issuer.clone(),
+                        i.error_reason.clone(),
                         TimeRange {
                             start_time: match (granularity, i.start_bucket) {
                                 (Some(g), Some(st)) => g.clip_to_start(st)?,
diff --git a/crates/analytics/src/payment_intents/types.rs b/crates/analytics/src/payment_intents/types.rs
index bb5141297c5..a27ef2d840d 100644
--- a/crates/analytics/src/payment_intents/types.rs
+++ b/crates/analytics/src/payment_intents/types.rs
@@ -30,6 +30,63 @@ where
                 .add_filter_in_range_clause(PaymentIntentDimensions::ProfileId, &self.profile_id)
                 .attach_printable("Error adding profile id filter")?;
         }
+        if !self.connector.is_empty() {
+            builder
+                .add_filter_in_range_clause(PaymentIntentDimensions::Connector, &self.connector)
+                .attach_printable("Error adding connector filter")?;
+        }
+        if !self.auth_type.is_empty() {
+            builder
+                .add_filter_in_range_clause(PaymentIntentDimensions::AuthType, &self.auth_type)
+                .attach_printable("Error adding auth type filter")?;
+        }
+        if !self.payment_method.is_empty() {
+            builder
+                .add_filter_in_range_clause(
+                    PaymentIntentDimensions::PaymentMethod,
+                    &self.payment_method,
+                )
+                .attach_printable("Error adding payment method filter")?;
+        }
+        if !self.payment_method_type.is_empty() {
+            builder
+                .add_filter_in_range_clause(
+                    PaymentIntentDimensions::PaymentMethodType,
+                    &self.payment_method_type,
+                )
+                .attach_printable("Error adding payment method type filter")?;
+        }
+        if !self.card_network.is_empty() {
+            builder
+                .add_filter_in_range_clause(
+                    PaymentIntentDimensions::CardNetwork,
+                    &self.card_network,
+                )
+                .attach_printable("Error adding card network filter")?;
+        }
+        if !self.merchant_id.is_empty() {
+            builder
+                .add_filter_in_range_clause(PaymentIntentDimensions::MerchantId, &self.merchant_id)
+                .attach_printable("Error adding merchant id filter")?;
+        }
+        if !self.card_last_4.is_empty() {
+            builder
+                .add_filter_in_range_clause(PaymentIntentDimensions::CardLast4, &self.card_last_4)
+                .attach_printable("Error adding card last 4 filter")?;
+        }
+        if !self.card_issuer.is_empty() {
+            builder
+                .add_filter_in_range_clause(PaymentIntentDimensions::CardIssuer, &self.card_issuer)
+                .attach_printable("Error adding card issuer filter")?;
+        }
+        if !self.error_reason.is_empty() {
+            builder
+                .add_filter_in_range_clause(
+                    PaymentIntentDimensions::ErrorReason,
+                    &self.error_reason,
+                )
+                .attach_printable("Error adding error reason filter")?;
+        }
         if !self.customer_id.is_empty() {
             builder
                 .add_filter_in_range_clause("customer_id", &self.customer_id)
diff --git a/crates/analytics/src/sqlx.rs b/crates/analytics/src/sqlx.rs
index 7c90e37c55f..0a641fbc5f9 100644
--- a/crates/analytics/src/sqlx.rs
+++ b/crates/analytics/src/sqlx.rs
@@ -604,6 +604,45 @@ impl<'a> FromRow<'a, PgRow> for super::payment_intents::metrics::PaymentIntentMe
             ColumnNotFound(_) => Ok(Default::default()),
             e => Err(e),
         })?;
+        let connector: Option<String> = row.try_get("connector").or_else(|e| match e {
+            ColumnNotFound(_) => Ok(Default::default()),
+            e => Err(e),
+        })?;
+        let authentication_type: Option<DBEnumWrapper<AuthenticationType>> =
+            row.try_get("authentication_type").or_else(|e| match e {
+                ColumnNotFound(_) => Ok(Default::default()),
+                e => Err(e),
+            })?;
+        let payment_method: Option<String> =
+            row.try_get("payment_method").or_else(|e| match e {
+                ColumnNotFound(_) => Ok(Default::default()),
+                e => Err(e),
+            })?;
+        let payment_method_type: Option<String> =
+            row.try_get("payment_method_type").or_else(|e| match e {
+                ColumnNotFound(_) => Ok(Default::default()),
+                e => Err(e),
+            })?;
+        let card_network: Option<String> = row.try_get("card_network").or_else(|e| match e {
+            ColumnNotFound(_) => Ok(Default::default()),
+            e => Err(e),
+        })?;
+        let merchant_id: Option<String> = row.try_get("merchant_id").or_else(|e| match e {
+            ColumnNotFound(_) => Ok(Default::default()),
+            e => Err(e),
+        })?;
+        let card_last_4: Option<String> = row.try_get("card_last_4").or_else(|e| match e {
+            ColumnNotFound(_) => Ok(Default::default()),
+            e => Err(e),
+        })?;
+        let card_issuer: Option<String> = row.try_get("card_issuer").or_else(|e| match e {
+            ColumnNotFound(_) => Ok(Default::default()),
+            e => Err(e),
+        })?;
+        let error_reason: Option<String> = row.try_get("error_reason").or_else(|e| match e {
+            ColumnNotFound(_) => Ok(Default::default()),
+            e => Err(e),
+        })?;
         let total: Option<bigdecimal::BigDecimal> = row.try_get("total").or_else(|e| match e {
             ColumnNotFound(_) => Ok(Default::default()),
             e => Err(e),
@@ -627,6 +666,15 @@ impl<'a> FromRow<'a, PgRow> for super::payment_intents::metrics::PaymentIntentMe
             status,
             currency,
             profile_id,
+            connector,
+            authentication_type,
+            payment_method,
+            payment_method_type,
+            card_network,
+            merchant_id,
+            card_last_4,
+            card_issuer,
+            error_reason,
             first_attempt,
             total,
             count,
@@ -652,6 +700,45 @@ impl<'a> FromRow<'a, PgRow> for super::payment_intents::filters::PaymentIntentFi
             ColumnNotFound(_) => Ok(Default::default()),
             e => Err(e),
         })?;
+        let connector: Option<String> = row.try_get("connector").or_else(|e| match e {
+            ColumnNotFound(_) => Ok(Default::default()),
+            e => Err(e),
+        })?;
+        let authentication_type: Option<DBEnumWrapper<AuthenticationType>> =
+            row.try_get("authentication_type").or_else(|e| match e {
+                ColumnNotFound(_) => Ok(Default::default()),
+                e => Err(e),
+            })?;
+        let payment_method: Option<String> =
+            row.try_get("payment_method").or_else(|e| match e {
+                ColumnNotFound(_) => Ok(Default::default()),
+                e => Err(e),
+            })?;
+        let payment_method_type: Option<String> =
+            row.try_get("payment_method_type").or_else(|e| match e {
+                ColumnNotFound(_) => Ok(Default::default()),
+                e => Err(e),
+            })?;
+        let card_network: Option<String> = row.try_get("card_network").or_else(|e| match e {
+            ColumnNotFound(_) => Ok(Default::default()),
+            e => Err(e),
+        })?;
+        let merchant_id: Option<String> = row.try_get("merchant_id").or_else(|e| match e {
+            ColumnNotFound(_) => Ok(Default::default()),
+            e => Err(e),
+        })?;
+        let card_last_4: Option<String> = row.try_get("card_last_4").or_else(|e| match e {
+            ColumnNotFound(_) => Ok(Default::default()),
+            e => Err(e),
+        })?;
+        let card_issuer: Option<String> = row.try_get("card_issuer").or_else(|e| match e {
+            ColumnNotFound(_) => Ok(Default::default()),
+            e => Err(e),
+        })?;
+        let error_reason: Option<String> = row.try_get("error_reason").or_else(|e| match e {
+            ColumnNotFound(_) => Ok(Default::default()),
+            e => Err(e),
+        })?;
         let customer_id: Option<String> = row.try_get("customer_id").or_else(|e| match e {
             ColumnNotFound(_) => Ok(Default::default()),
             e => Err(e),
@@ -660,6 +747,15 @@ impl<'a> FromRow<'a, PgRow> for super::payment_intents::filters::PaymentIntentFi
             status,
             currency,
             profile_id,
+            connector,
+            authentication_type,
+            payment_method,
+            payment_method_type,
+            card_network,
+            merchant_id,
+            card_last_4,
+            card_issuer,
+            error_reason,
             customer_id,
         })
     }
diff --git a/crates/analytics/src/utils.rs b/crates/analytics/src/utils.rs
index 435e95451fe..fc21bf09819 100644
--- a/crates/analytics/src/utils.rs
+++ b/crates/analytics/src/utils.rs
@@ -35,6 +35,12 @@ pub fn get_payment_intent_dimensions() -> Vec<NameDescription> {
         PaymentIntentDimensions::PaymentIntentStatus,
         PaymentIntentDimensions::Currency,
         PaymentIntentDimensions::ProfileId,
+        PaymentIntentDimensions::Connector,
+        PaymentIntentDimensions::AuthType,
+        PaymentIntentDimensions::PaymentMethod,
+        PaymentIntentDimensions::PaymentMethodType,
+        PaymentIntentDimensions::CardNetwork,
+        PaymentIntentDimensions::MerchantId,
     ]
     .into_iter()
     .map(Into::into)
diff --git a/crates/api_models/src/analytics/payment_intents.rs b/crates/api_models/src/analytics/payment_intents.rs
index 60662f2e90a..ab93fdc4815 100644
--- a/crates/api_models/src/analytics/payment_intents.rs
+++ b/crates/api_models/src/analytics/payment_intents.rs
@@ -6,7 +6,9 @@ use std::{
 use common_utils::id_type;
 
 use super::{NameDescription, TimeRange};
-use crate::enums::{Currency, IntentStatus};
+use crate::enums::{
+    AuthenticationType, Connector, Currency, IntentStatus, PaymentMethod, PaymentMethodType,
+};
 
 #[derive(Clone, Debug, Default, serde::Deserialize, serde::Serialize)]
 pub struct PaymentIntentFilters {
@@ -17,6 +19,24 @@ pub struct PaymentIntentFilters {
     #[serde(default)]
     pub profile_id: Vec<id_type::ProfileId>,
     #[serde(default)]
+    pub connector: Vec<Connector>,
+    #[serde(default)]
+    pub auth_type: Vec<AuthenticationType>,
+    #[serde(default)]
+    pub payment_method: Vec<PaymentMethod>,
+    #[serde(default)]
+    pub payment_method_type: Vec<PaymentMethodType>,
+    #[serde(default)]
+    pub card_network: Vec<String>,
+    #[serde(default)]
+    pub merchant_id: Vec<id_type::MerchantId>,
+    #[serde(default)]
+    pub card_last_4: Vec<String>,
+    #[serde(default)]
+    pub card_issuer: Vec<String>,
+    #[serde(default)]
+    pub error_reason: Vec<String>,
+    #[serde(default)]
     pub customer_id: Vec<id_type::CustomerId>,
 }
 
@@ -42,6 +62,15 @@ pub enum PaymentIntentDimensions {
     PaymentIntentStatus,
     Currency,
     ProfileId,
+    Connector,
+    AuthType,
+    PaymentMethod,
+    PaymentMethodType,
+    CardNetwork,
+    MerchantId,
+    CardLast4,
+    CardIssuer,
+    ErrorReason,
 }
 
 #[derive(
@@ -112,6 +141,15 @@ pub struct PaymentIntentMetricsBucketIdentifier {
     pub status: Option<IntentStatus>,
     pub currency: Option<Currency>,
     pub profile_id: Option<String>,
+    pub connector: Option<String>,
+    pub auth_type: Option<AuthenticationType>,
+    pub payment_method: Option<String>,
+    pub payment_method_type: Option<String>,
+    pub card_network: Option<String>,
+    pub merchant_id: Option<String>,
+    pub card_last_4: Option<String>,
+    pub card_issuer: Option<String>,
+    pub error_reason: Option<String>,
     #[serde(rename = "time_range")]
     pub time_bucket: TimeRange,
     #[serde(rename = "time_bucket")]
@@ -125,12 +163,30 @@ impl PaymentIntentMetricsBucketIdentifier {
         status: Option<IntentStatus>,
         currency: Option<Currency>,
         profile_id: Option<String>,
+        connector: Option<String>,
+        auth_type: Option<AuthenticationType>,
+        payment_method: Option<String>,
+        payment_method_type: Option<String>,
+        card_network: Option<String>,
+        merchant_id: Option<String>,
+        card_last_4: Option<String>,
+        card_issuer: Option<String>,
+        error_reason: Option<String>,
         normalized_time_range: TimeRange,
     ) -> Self {
         Self {
             status,
             currency,
             profile_id,
+            connector,
+            auth_type,
+            payment_method,
+            payment_method_type,
+            card_network,
+            merchant_id,
+            card_last_4,
+            card_issuer,
+            error_reason,
             time_bucket: normalized_time_range,
             start_time: normalized_time_range.start_time,
         }
@@ -142,6 +198,15 @@ impl Hash for PaymentIntentMetricsBucketIdentifier {
         self.status.map(|i| i.to_string()).hash(state);
         self.currency.hash(state);
         self.profile_id.hash(state);
+        self.connector.hash(state);
+        self.auth_type.map(|i| i.to_string()).hash(state);
+        self.payment_method.hash(state);
+        self.payment_method_type.hash(state);
+        self.card_network.hash(state);
+        self.merchant_id.hash(state);
+        self.card_last_4.hash(state);
+        self.card_issuer.hash(state);
+        self.error_reason.hash(state);
         self.time_bucket.hash(state);
     }
 }