Bug: [FEATURE]:[BILLWERK] Move connector code to hyperswitch_connectors



Connector code for Billwerk needs to be moved from crate router to new crate hyperswitch_connectors
diff --git a/crates/hyperswitch_connectors/src/connectors.rs b/crates/hyperswitch_connectors/src/connectors.rs
index e5eaa22795a..ddd9fa861a6 100644
--- a/crates/hyperswitch_connectors/src/connectors.rs
+++ b/crates/hyperswitch_connectors/src/connectors.rs
@@ -1,4 +1,5 @@
 pub mod bambora;
+pub mod billwerk;
 pub mod bitpay;
 pub mod cashtocode;
 pub mod coinbase;
@@ -24,9 +25,10 @@ pub mod volt;
 pub mod worldline;
 
 pub use self::{
-    bambora::Bambora, bitpay::Bitpay, cashtocode::Cashtocode, coinbase::Coinbase,
-    cryptopay::Cryptopay, deutschebank::Deutschebank, digitalvirgo::Digitalvirgo, dlocal::Dlocal,
-    fiserv::Fiserv, fiservemea::Fiservemea, fiuu::Fiuu, globepay::Globepay, helcim::Helcim,
-    mollie::Mollie, nexixpay::Nexixpay, novalnet::Novalnet, powertranz::Powertranz, square::Square,
-    stax::Stax, taxjar::Taxjar, thunes::Thunes, tsys::Tsys, volt::Volt, worldline::Worldline,
+    bambora::Bambora, billwerk::Billwerk, bitpay::Bitpay, cashtocode::Cashtocode,
+    coinbase::Coinbase, cryptopay::Cryptopay, deutschebank::Deutschebank,
+    digitalvirgo::Digitalvirgo, dlocal::Dlocal, fiserv::Fiserv, fiservemea::Fiservemea, fiuu::Fiuu,
+    globepay::Globepay, helcim::Helcim, mollie::Mollie, nexixpay::Nexixpay, novalnet::Novalnet,
+    powertranz::Powertranz, square::Square, stax::Stax, taxjar::Taxjar, thunes::Thunes, tsys::Tsys,
+    volt::Volt, worldline::Worldline,
 };
diff --git a/crates/router/src/connector/billwerk.rs b/crates/hyperswitch_connectors/src/connectors/billwerk.rs
similarity index 66%
rename from crates/router/src/connector/billwerk.rs
rename to crates/hyperswitch_connectors/src/connectors/billwerk.rs
index 97106d511b8..251d2355f25 100644
--- a/crates/router/src/connector/billwerk.rs
+++ b/crates/hyperswitch_connectors/src/connectors/billwerk.rs
@@ -1,32 +1,55 @@
 pub mod transformers;
 
+use api_models::webhooks::{IncomingWebhookEvent, ObjectReferenceId};
 use base64::Engine;
-use common_utils::types::{AmountConvertor, MinorUnit, MinorUnitForConnector};
-use error_stack::{report, ResultExt};
-use masking::PeekInterface;
-use transformers as billwerk;
-
-use super::utils::{
-    RefundsRequestData, {self as connector_utils},
+use common_utils::{
+    consts::BASE64_ENGINE,
+    errors::CustomResult,
+    ext_traits::BytesExt,
+    request::{Method, Request, RequestBuilder, RequestContent},
+    types::{AmountConvertor, MinorUnit, MinorUnitForConnector},
 };
-use crate::{
-    configs::settings,
-    consts,
-    core::errors::{self, CustomResult},
-    events::connector_api_logs::ConnectorEvent,
-    headers,
-    services::{
-        self,
-        request::{self, Mask},
-        ConnectorIntegration, ConnectorValidation,
+use error_stack::{report, ResultExt};
+use hyperswitch_domain_models::{
+    router_data::{AccessToken, ConnectorAuthType, ErrorResponse, RouterData},
+    router_flow_types::{
+        access_token_auth::AccessTokenAuth,
+        payments::{Authorize, Capture, PSync, PaymentMethodToken, Session, SetupMandate, Void},
+        refunds::{Execute, RSync},
+    },
+    router_request_types::{
+        AccessTokenRequestData, PaymentMethodTokenizationData, PaymentsAuthorizeData,
+        PaymentsCancelData, PaymentsCaptureData, PaymentsSessionData, PaymentsSyncData,
+        RefundsData, SetupMandateRequestData,
     },
+    router_response_types::{PaymentsResponseData, RefundsResponseData},
     types::{
-        self,
-        api::{self, ConnectorCommon, ConnectorCommonExt},
-        ErrorResponse, RequestContent, Response,
+        PaymentsAuthorizeRouterData, PaymentsCancelRouterData, PaymentsCaptureRouterData,
+        PaymentsSyncRouterData, RefundSyncRouterData, RefundsRouterData, TokenizationRouterData,
     },
-    utils::BytesExt,
 };
+use hyperswitch_interfaces::{
+    api::{self, ConnectorCommon, ConnectorCommonExt, ConnectorIntegration, ConnectorValidation},
+    configs::Connectors,
+    consts::{NO_ERROR_CODE, NO_ERROR_MESSAGE},
+    errors,
+    events::connector_api_logs::ConnectorEvent,
+    types::{self, Response},
+    webhooks::{IncomingWebhook, IncomingWebhookRequestDetails},
+};
+use masking::{Mask, PeekInterface};
+use transformers::{
+    self as billwerk, BillwerkAuthType, BillwerkCaptureRequest, BillwerkErrorResponse,
+    BillwerkPaymentsRequest, BillwerkPaymentsResponse, BillwerkRefundRequest, BillwerkRouterData,
+    BillwerkTokenRequest, BillwerkTokenResponse,
+};
+
+use crate::{
+    constants::headers,
+    types::ResponseRouterData,
+    utils::{construct_not_implemented_error_report, convert_amount, RefundsRequestData},
+};
+
 #[derive(Clone)]
 pub struct Billwerk {
     amount_converter: &'static (dyn AmountConvertor<Output = MinorUnit> + Sync),
@@ -39,7 +62,6 @@ impl Billwerk {
         }
     }
 }
-
 impl api::Payment for Billwerk {}
 impl api::PaymentSession for Billwerk {}
 impl api::ConnectorAccessToken for Billwerk {}
@@ -59,9 +81,9 @@ where
 {
     fn build_headers(
         &self,
-        req: &types::RouterData<Flow, Request, Response>,
-        _connectors: &settings::Connectors,
-    ) -> CustomResult<Vec<(String, request::Maskable<String>)>, errors::ConnectorError> {
+        req: &RouterData<Flow, Request, Response>,
+        _connectors: &Connectors,
+    ) -> CustomResult<Vec<(String, masking::Maskable<String>)>, errors::ConnectorError> {
         let mut header = vec![(
             headers::CONTENT_TYPE.to_string(),
             self.get_content_type().to_string().into(),
@@ -85,17 +107,17 @@ impl ConnectorCommon for Billwerk {
         "application/json"
     }
 
-    fn base_url<'a>(&self, connectors: &'a settings::Connectors) -> &'a str {
+    fn base_url<'a>(&self, connectors: &'a Connectors) -> &'a str {
         connectors.billwerk.base_url.as_ref()
     }
 
     fn get_auth_header(
         &self,
-        auth_type: &types::ConnectorAuthType,
-    ) -> CustomResult<Vec<(String, request::Maskable<String>)>, errors::ConnectorError> {
-        let auth = billwerk::BillwerkAuthType::try_from(auth_type)
+        auth_type: &ConnectorAuthType,
+    ) -> CustomResult<Vec<(String, masking::Maskable<String>)>, errors::ConnectorError> {
+        let auth = BillwerkAuthType::try_from(auth_type)
             .change_context(errors::ConnectorError::FailedToObtainAuthType)?;
-        let encoded_api_key = consts::BASE64_ENGINE.encode(format!("{}:", auth.api_key.peek()));
+        let encoded_api_key = BASE64_ENGINE.encode(format!("{}:", auth.api_key.peek()));
         Ok(vec![(
             headers::AUTHORIZATION.to_string(),
             format!("Basic {encoded_api_key}").into_masked(),
@@ -107,7 +129,7 @@ impl ConnectorCommon for Billwerk {
         res: Response,
         event_builder: Option<&mut ConnectorEvent>,
     ) -> CustomResult<ErrorResponse, errors::ConnectorError> {
-        let response: billwerk::BillwerkErrorResponse = res
+        let response: BillwerkErrorResponse = res
             .response
             .parse_struct("BillwerkErrorResponse")
             .change_context(errors::ConnectorError::ResponseDeserializationFailed)?;
@@ -119,10 +141,8 @@ impl ConnectorCommon for Billwerk {
             status_code: res.status_code,
             code: response
                 .code
-                .map_or(consts::NO_ERROR_CODE.to_string(), |code| code.to_string()),
-            message: response
-                .message
-                .unwrap_or(consts::NO_ERROR_MESSAGE.to_string()),
+                .map_or(NO_ERROR_CODE.to_string(), |code| code.to_string()),
+            message: response.message.unwrap_or(NO_ERROR_MESSAGE.to_string()),
             reason: Some(response.error),
             attempt_status: None,
             connector_transaction_id: None,
@@ -141,44 +161,31 @@ impl ConnectorValidation for Billwerk {
             common_enums::CaptureMethod::Automatic | common_enums::CaptureMethod::Manual => Ok(()),
             common_enums::CaptureMethod::ManualMultiple
             | common_enums::CaptureMethod::Scheduled => Err(
-                super::utils::construct_not_implemented_error_report(capture_method, self.id()),
+                construct_not_implemented_error_report(capture_method, self.id()),
             ),
         }
     }
 }
 
-impl ConnectorIntegration<api::Session, types::PaymentsSessionData, types::PaymentsResponseData>
-    for Billwerk
-{
+impl ConnectorIntegration<Session, PaymentsSessionData, PaymentsResponseData> for Billwerk {
     //TODO: implement sessions flow
 }
 
-impl ConnectorIntegration<api::AccessTokenAuth, types::AccessTokenRequestData, types::AccessToken>
-    for Billwerk
-{
-}
+impl ConnectorIntegration<AccessTokenAuth, AccessTokenRequestData, AccessToken> for Billwerk {}
 
-impl
-    ConnectorIntegration<
-        api::SetupMandate,
-        types::SetupMandateRequestData,
-        types::PaymentsResponseData,
-    > for Billwerk
+impl ConnectorIntegration<SetupMandate, SetupMandateRequestData, PaymentsResponseData>
+    for Billwerk
 {
 }
 
-impl
-    ConnectorIntegration<
-        api::PaymentMethodToken,
-        types::PaymentMethodTokenizationData,
-        types::PaymentsResponseData,
-    > for Billwerk
+impl ConnectorIntegration<PaymentMethodToken, PaymentMethodTokenizationData, PaymentsResponseData>
+    for Billwerk
 {
     fn get_headers(
         &self,
-        req: &types::TokenizationRouterData,
-        connectors: &settings::Connectors,
-    ) -> CustomResult<Vec<(String, request::Maskable<String>)>, errors::ConnectorError> {
+        req: &TokenizationRouterData,
+        connectors: &Connectors,
+    ) -> CustomResult<Vec<(String, masking::Maskable<String>)>, errors::ConnectorError> {
         self.build_headers(req, connectors)
     }
 
@@ -188,8 +195,8 @@ impl
 
     fn get_url(
         &self,
-        _req: &types::TokenizationRouterData,
-        connectors: &settings::Connectors,
+        _req: &TokenizationRouterData,
+        connectors: &Connectors,
     ) -> CustomResult<String, errors::ConnectorError> {
         let base_url = connectors
             .billwerk
@@ -201,21 +208,21 @@ impl
 
     fn get_request_body(
         &self,
-        req: &types::TokenizationRouterData,
-        _connectors: &settings::Connectors,
+        req: &TokenizationRouterData,
+        _connectors: &Connectors,
     ) -> CustomResult<RequestContent, errors::ConnectorError> {
-        let connector_req = billwerk::BillwerkTokenRequest::try_from(req)?;
+        let connector_req = BillwerkTokenRequest::try_from(req)?;
         Ok(RequestContent::Json(Box::new(connector_req)))
     }
 
     fn build_request(
         &self,
-        req: &types::TokenizationRouterData,
-        connectors: &settings::Connectors,
-    ) -> CustomResult<Option<services::Request>, errors::ConnectorError> {
+        req: &TokenizationRouterData,
+        connectors: &Connectors,
+    ) -> CustomResult<Option<Request>, errors::ConnectorError> {
         Ok(Some(
-            services::RequestBuilder::new()
-                .method(services::Method::Post)
+            RequestBuilder::new()
+                .method(Method::Post)
                 .url(&types::TokenizationType::get_url(self, req, connectors)?)
                 .attach_default_headers()
                 .headers(types::TokenizationType::get_headers(self, req, connectors)?)
@@ -228,20 +235,20 @@ impl
 
     fn handle_response(
         &self,
-        data: &types::TokenizationRouterData,
+        data: &TokenizationRouterData,
         event_builder: Option<&mut ConnectorEvent>,
         res: Response,
-    ) -> CustomResult<types::TokenizationRouterData, errors::ConnectorError>
+    ) -> CustomResult<TokenizationRouterData, errors::ConnectorError>
     where
-        types::PaymentsResponseData: Clone,
+        PaymentsResponseData: Clone,
     {
-        let response: billwerk::BillwerkTokenResponse = res
+        let response: BillwerkTokenResponse = res
             .response
             .parse_struct("BillwerkTokenResponse")
             .change_context(errors::ConnectorError::ResponseDeserializationFailed)?;
         event_builder.map(|i| i.set_response_body(&response));
         router_env::logger::info!(connector_response=?response);
-        types::RouterData::try_from(types::ResponseRouterData {
+        RouterData::try_from(ResponseRouterData {
             response,
             data: data.clone(),
             http_code: res.status_code,
@@ -266,14 +273,12 @@ impl
     }
 }
 
-impl ConnectorIntegration<api::Authorize, types::PaymentsAuthorizeData, types::PaymentsResponseData>
-    for Billwerk
-{
+impl ConnectorIntegration<Authorize, PaymentsAuthorizeData, PaymentsResponseData> for Billwerk {
     fn get_headers(
         &self,
-        req: &types::PaymentsAuthorizeRouterData,
-        connectors: &settings::Connectors,
-    ) -> CustomResult<Vec<(String, request::Maskable<String>)>, errors::ConnectorError> {
+        req: &PaymentsAuthorizeRouterData,
+        connectors: &Connectors,
+    ) -> CustomResult<Vec<(String, masking::Maskable<String>)>, errors::ConnectorError> {
         self.build_headers(req, connectors)
     }
 
@@ -283,36 +288,36 @@ impl ConnectorIntegration<api::Authorize, types::PaymentsAuthorizeData, types::P
 
     fn get_url(
         &self,
-        _req: &types::PaymentsAuthorizeRouterData,
-        connectors: &settings::Connectors,
+        _req: &PaymentsAuthorizeRouterData,
+        connectors: &Connectors,
     ) -> CustomResult<String, errors::ConnectorError> {
         Ok(format!("{}v1/charge", self.base_url(connectors)))
     }
 
     fn get_request_body(
         &self,
-        req: &types::PaymentsAuthorizeRouterData,
-        _connectors: &settings::Connectors,
+        req: &PaymentsAuthorizeRouterData,
+        _connectors: &Connectors,
     ) -> CustomResult<RequestContent, errors::ConnectorError> {
-        let amount = connector_utils::convert_amount(
+        let amount = convert_amount(
             self.amount_converter,
             req.request.minor_amount,
             req.request.currency,
         )?;
 
-        let connector_router_data = billwerk::BillwerkRouterData::try_from((amount, req))?;
-        let connector_req = billwerk::BillwerkPaymentsRequest::try_from(&connector_router_data)?;
+        let connector_router_data = BillwerkRouterData::try_from((amount, req))?;
+        let connector_req = BillwerkPaymentsRequest::try_from(&connector_router_data)?;
         Ok(RequestContent::Json(Box::new(connector_req)))
     }
 
     fn build_request(
         &self,
-        req: &types::PaymentsAuthorizeRouterData,
-        connectors: &settings::Connectors,
-    ) -> CustomResult<Option<services::Request>, errors::ConnectorError> {
+        req: &PaymentsAuthorizeRouterData,
+        connectors: &Connectors,
+    ) -> CustomResult<Option<Request>, errors::ConnectorError> {
         Ok(Some(
-            services::RequestBuilder::new()
-                .method(services::Method::Post)
+            RequestBuilder::new()
+                .method(Method::Post)
                 .url(&types::PaymentsAuthorizeType::get_url(
                     self, req, connectors,
                 )?)
@@ -329,17 +334,17 @@ impl ConnectorIntegration<api::Authorize, types::PaymentsAuthorizeData, types::P
 
     fn handle_response(
         &self,
-        data: &types::PaymentsAuthorizeRouterData,
+        data: &PaymentsAuthorizeRouterData,
         event_builder: Option<&mut ConnectorEvent>,
         res: Response,
-    ) -> CustomResult<types::PaymentsAuthorizeRouterData, errors::ConnectorError> {
-        let response: billwerk::BillwerkPaymentsResponse = res
+    ) -> CustomResult<PaymentsAuthorizeRouterData, errors::ConnectorError> {
+        let response: BillwerkPaymentsResponse = res
             .response
             .parse_struct("Billwerk BillwerkPaymentsResponse")
             .change_context(errors::ConnectorError::ResponseDeserializationFailed)?;
         event_builder.map(|i| i.set_response_body(&response));
         router_env::logger::info!(connector_response=?response);
-        types::RouterData::try_from(types::ResponseRouterData {
+        RouterData::try_from(ResponseRouterData {
             response,
             data: data.clone(),
             http_code: res.status_code,
@@ -363,14 +368,12 @@ impl ConnectorIntegration<api::Authorize, types::PaymentsAuthorizeData, types::P
     }
 }
 
-impl ConnectorIntegration<api::PSync, types::PaymentsSyncData, types::PaymentsResponseData>
-    for Billwerk
-{
+impl ConnectorIntegration<PSync, PaymentsSyncData, PaymentsResponseData> for Billwerk {
     fn get_headers(
         &self,
-        req: &types::PaymentsSyncRouterData,
-        connectors: &settings::Connectors,
-    ) -> CustomResult<Vec<(String, request::Maskable<String>)>, errors::ConnectorError> {
+        req: &PaymentsSyncRouterData,
+        connectors: &Connectors,
+    ) -> CustomResult<Vec<(String, masking::Maskable<String>)>, errors::ConnectorError> {
         self.build_headers(req, connectors)
     }
 
@@ -380,8 +383,8 @@ impl ConnectorIntegration<api::PSync, types::PaymentsSyncData, types::PaymentsRe
 
     fn get_url(
         &self,
-        req: &types::PaymentsSyncRouterData,
-        connectors: &settings::Connectors,
+        req: &PaymentsSyncRouterData,
+        connectors: &Connectors,
     ) -> CustomResult<String, errors::ConnectorError> {
         Ok(format!(
             "{}v1/charge/{}",
@@ -392,12 +395,12 @@ impl ConnectorIntegration<api::PSync, types::PaymentsSyncData, types::PaymentsRe
 
     fn build_request(
         &self,
-        req: &types::PaymentsSyncRouterData,
-        connectors: &settings::Connectors,
-    ) -> CustomResult<Option<services::Request>, errors::ConnectorError> {
+        req: &PaymentsSyncRouterData,
+        connectors: &Connectors,
+    ) -> CustomResult<Option<Request>, errors::ConnectorError> {
         Ok(Some(
-            services::RequestBuilder::new()
-                .method(services::Method::Get)
+            RequestBuilder::new()
+                .method(Method::Get)
                 .url(&types::PaymentsSyncType::get_url(self, req, connectors)?)
                 .attach_default_headers()
                 .headers(types::PaymentsSyncType::get_headers(self, req, connectors)?)
@@ -407,17 +410,17 @@ impl ConnectorIntegration<api::PSync, types::PaymentsSyncData, types::PaymentsRe
 
     fn handle_response(
         &self,
-        data: &types::PaymentsSyncRouterData,
+        data: &PaymentsSyncRouterData,
         event_builder: Option<&mut ConnectorEvent>,
         res: Response,
-    ) -> CustomResult<types::PaymentsSyncRouterData, errors::ConnectorError> {
-        let response: billwerk::BillwerkPaymentsResponse = res
+    ) -> CustomResult<PaymentsSyncRouterData, errors::ConnectorError> {
+        let response: BillwerkPaymentsResponse = res
             .response
             .parse_struct("billwerk BillwerkPaymentsResponse")
             .change_context(errors::ConnectorError::ResponseDeserializationFailed)?;
         event_builder.map(|i| i.set_response_body(&response));
         router_env::logger::info!(connector_response=?response);
-        types::RouterData::try_from(types::ResponseRouterData {
+        RouterData::try_from(ResponseRouterData {
             response,
             data: data.clone(),
             http_code: res.status_code,
@@ -441,14 +444,12 @@ impl ConnectorIntegration<api::PSync, types::PaymentsSyncData, types::PaymentsRe
     }
 }
 
-impl ConnectorIntegration<api::Capture, types::PaymentsCaptureData, types::PaymentsResponseData>
-    for Billwerk
-{
+impl ConnectorIntegration<Capture, PaymentsCaptureData, PaymentsResponseData> for Billwerk {
     fn get_headers(
         &self,
-        req: &types::PaymentsCaptureRouterData,
-        connectors: &settings::Connectors,
-    ) -> CustomResult<Vec<(String, request::Maskable<String>)>, errors::ConnectorError> {
+        req: &PaymentsCaptureRouterData,
+        connectors: &Connectors,
+    ) -> CustomResult<Vec<(String, masking::Maskable<String>)>, errors::ConnectorError> {
         self.build_headers(req, connectors)
     }
 
@@ -458,8 +459,8 @@ impl ConnectorIntegration<api::Capture, types::PaymentsCaptureData, types::Payme
 
     fn get_url(
         &self,
-        req: &types::PaymentsCaptureRouterData,
-        connectors: &settings::Connectors,
+        req: &PaymentsCaptureRouterData,
+        connectors: &Connectors,
     ) -> CustomResult<String, errors::ConnectorError> {
         let connector_transaction_id = &req.request.connector_transaction_id;
         Ok(format!(
@@ -470,28 +471,28 @@ impl ConnectorIntegration<api::Capture, types::PaymentsCaptureData, types::Payme
 
     fn get_request_body(
         &self,
-        req: &types::PaymentsCaptureRouterData,
-        _connectors: &settings::Connectors,
+        req: &PaymentsCaptureRouterData,
+        _connectors: &Connectors,
     ) -> CustomResult<RequestContent, errors::ConnectorError> {
-        let amount = connector_utils::convert_amount(
+        let amount = convert_amount(
             self.amount_converter,
             req.request.minor_amount_to_capture,
             req.request.currency,
         )?;
 
-        let connector_router_data = billwerk::BillwerkRouterData::try_from((amount, req))?;
-        let connector_req = billwerk::BillwerkCaptureRequest::try_from(&connector_router_data)?;
+        let connector_router_data = BillwerkRouterData::try_from((amount, req))?;
+        let connector_req = BillwerkCaptureRequest::try_from(&connector_router_data)?;
         Ok(RequestContent::Json(Box::new(connector_req)))
     }
 
     fn build_request(
         &self,
-        req: &types::PaymentsCaptureRouterData,
-        connectors: &settings::Connectors,
-    ) -> CustomResult<Option<services::Request>, errors::ConnectorError> {
+        req: &PaymentsCaptureRouterData,
+        connectors: &Connectors,
+    ) -> CustomResult<Option<Request>, errors::ConnectorError> {
         Ok(Some(
-            services::RequestBuilder::new()
-                .method(services::Method::Post)
+            RequestBuilder::new()
+                .method(Method::Post)
                 .url(&types::PaymentsCaptureType::get_url(self, req, connectors)?)
                 .attach_default_headers()
                 .headers(types::PaymentsCaptureType::get_headers(
@@ -506,17 +507,17 @@ impl ConnectorIntegration<api::Capture, types::PaymentsCaptureData, types::Payme
 
     fn handle_response(
         &self,
-        data: &types::PaymentsCaptureRouterData,
+        data: &PaymentsCaptureRouterData,
         event_builder: Option<&mut ConnectorEvent>,
         res: Response,
-    ) -> CustomResult<types::PaymentsCaptureRouterData, errors::ConnectorError> {
-        let response: billwerk::BillwerkPaymentsResponse = res
+    ) -> CustomResult<PaymentsCaptureRouterData, errors::ConnectorError> {
+        let response: BillwerkPaymentsResponse = res
             .response
             .parse_struct("Billwerk BillwerkPaymentsResponse")
             .change_context(errors::ConnectorError::ResponseDeserializationFailed)?;
         event_builder.map(|i| i.set_response_body(&response));
         router_env::logger::info!(connector_response=?response);
-        types::RouterData::try_from(types::ResponseRouterData {
+        RouterData::try_from(ResponseRouterData {
             response,
             data: data.clone(),
             http_code: res.status_code,
@@ -540,14 +541,12 @@ impl ConnectorIntegration<api::Capture, types::PaymentsCaptureData, types::Payme
     }
 }
 
-impl ConnectorIntegration<api::Void, types::PaymentsCancelData, types::PaymentsResponseData>
-    for Billwerk
-{
+impl ConnectorIntegration<Void, PaymentsCancelData, PaymentsResponseData> for Billwerk {
     fn get_headers(
         &self,
-        req: &types::PaymentsCancelRouterData,
-        connectors: &settings::Connectors,
-    ) -> CustomResult<Vec<(String, request::Maskable<String>)>, errors::ConnectorError> {
+        req: &PaymentsCancelRouterData,
+        connectors: &Connectors,
+    ) -> CustomResult<Vec<(String, masking::Maskable<String>)>, errors::ConnectorError> {
         self.build_headers(req, connectors)
     }
 
@@ -557,8 +556,8 @@ impl ConnectorIntegration<api::Void, types::PaymentsCancelData, types::PaymentsR
 
     fn get_url(
         &self,
-        req: &types::PaymentsCancelRouterData,
-        connectors: &settings::Connectors,
+        req: &PaymentsCancelRouterData,
+        connectors: &Connectors,
     ) -> CustomResult<String, errors::ConnectorError> {
         let connector_transaction_id = &req.request.connector_transaction_id;
         Ok(format!(
@@ -569,12 +568,12 @@ impl ConnectorIntegration<api::Void, types::PaymentsCancelData, types::PaymentsR
 
     fn build_request(
         &self,
-        req: &types::PaymentsCancelRouterData,
-        connectors: &settings::Connectors,
-    ) -> CustomResult<Option<services::Request>, errors::ConnectorError> {
+        req: &PaymentsCancelRouterData,
+        connectors: &Connectors,
+    ) -> CustomResult<Option<Request>, errors::ConnectorError> {
         Ok(Some(
-            services::RequestBuilder::new()
-                .method(services::Method::Post)
+            RequestBuilder::new()
+                .method(Method::Post)
                 .url(&types::PaymentsVoidType::get_url(self, req, connectors)?)
                 .attach_default_headers()
                 .headers(types::PaymentsVoidType::get_headers(self, req, connectors)?)
@@ -584,17 +583,17 @@ impl ConnectorIntegration<api::Void, types::PaymentsCancelData, types::PaymentsR
 
     fn handle_response(
         &self,
-        data: &types::PaymentsCancelRouterData,
+        data: &PaymentsCancelRouterData,
         event_builder: Option<&mut ConnectorEvent>,
         res: Response,
-    ) -> CustomResult<types::PaymentsCancelRouterData, errors::ConnectorError> {
-        let response: billwerk::BillwerkPaymentsResponse = res
+    ) -> CustomResult<PaymentsCancelRouterData, errors::ConnectorError> {
+        let response: BillwerkPaymentsResponse = res
             .response
             .parse_struct("Billwerk BillwerkPaymentsResponse")
             .change_context(errors::ConnectorError::ResponseDeserializationFailed)?;
         event_builder.map(|i| i.set_response_body(&response));
         router_env::logger::info!(connector_response=?response);
-        types::RouterData::try_from(types::ResponseRouterData {
+        RouterData::try_from(ResponseRouterData {
             response,
             data: data.clone(),
             http_code: res.status_code,
@@ -618,14 +617,12 @@ impl ConnectorIntegration<api::Void, types::PaymentsCancelData, types::PaymentsR
     }
 }
 
-impl ConnectorIntegration<api::Execute, types::RefundsData, types::RefundsResponseData>
-    for Billwerk
-{
+impl ConnectorIntegration<Execute, RefundsData, RefundsResponseData> for Billwerk {
     fn get_headers(
         &self,
-        req: &types::RefundsRouterData<api::Execute>,
-        connectors: &settings::Connectors,
-    ) -> CustomResult<Vec<(String, request::Maskable<String>)>, errors::ConnectorError> {
+        req: &RefundsRouterData<Execute>,
+        connectors: &Connectors,
+    ) -> CustomResult<Vec<(String, masking::Maskable<String>)>, errors::ConnectorError> {
         self.build_headers(req, connectors)
     }
 
@@ -635,35 +632,35 @@ impl ConnectorIntegration<api::Execute, types::RefundsData, types::RefundsRespon
 
     fn get_url(
         &self,
-        _req: &types::RefundsRouterData<api::Execute>,
-        connectors: &settings::Connectors,
+        _req: &RefundsRouterData<Execute>,
+        connectors: &Connectors,
     ) -> CustomResult<String, errors::ConnectorError> {
         Ok(format!("{}v1/refund", self.base_url(connectors)))
     }
 
     fn get_request_body(
         &self,
-        req: &types::RefundsRouterData<api::Execute>,
-        _connectors: &settings::Connectors,
+        req: &RefundsRouterData<Execute>,
+        _connectors: &Connectors,
     ) -> CustomResult<RequestContent, errors::ConnectorError> {
-        let amount = connector_utils::convert_amount(
+        let amount = convert_amount(
             self.amount_converter,
             req.request.minor_refund_amount,
             req.request.currency,
         )?;
 
-        let connector_router_data = billwerk::BillwerkRouterData::try_from((amount, req))?;
-        let connector_req = billwerk::BillwerkRefundRequest::try_from(&connector_router_data)?;
+        let connector_router_data = BillwerkRouterData::try_from((amount, req))?;
+        let connector_req = BillwerkRefundRequest::try_from(&connector_router_data)?;
         Ok(RequestContent::Json(Box::new(connector_req)))
     }
 
     fn build_request(
         &self,
-        req: &types::RefundsRouterData<api::Execute>,
-        connectors: &settings::Connectors,
-    ) -> CustomResult<Option<services::Request>, errors::ConnectorError> {
-        let request = services::RequestBuilder::new()
-            .method(services::Method::Post)
+        req: &RefundsRouterData<Execute>,
+        connectors: &Connectors,
+    ) -> CustomResult<Option<Request>, errors::ConnectorError> {
+        let request = RequestBuilder::new()
+            .method(Method::Post)
             .url(&types::RefundExecuteType::get_url(self, req, connectors)?)
             .attach_default_headers()
             .headers(types::RefundExecuteType::get_headers(
@@ -678,17 +675,17 @@ impl ConnectorIntegration<api::Execute, types::RefundsData, types::RefundsRespon
 
     fn handle_response(
         &self,
-        data: &types::RefundsRouterData<api::Execute>,
+        data: &RefundsRouterData<Execute>,
         event_builder: Option<&mut ConnectorEvent>,
         res: Response,
-    ) -> CustomResult<types::RefundsRouterData<api::Execute>, errors::ConnectorError> {
+    ) -> CustomResult<RefundsRouterData<Execute>, errors::ConnectorError> {
         let response: billwerk::RefundResponse = res
             .response
             .parse_struct("billwerk RefundResponse")
             .change_context(errors::ConnectorError::ResponseDeserializationFailed)?;
         event_builder.map(|i| i.set_response_body(&response));
         router_env::logger::info!(connector_response=?response);
-        types::RouterData::try_from(types::ResponseRouterData {
+        RouterData::try_from(ResponseRouterData {
             response,
             data: data.clone(),
             http_code: res.status_code,
@@ -712,12 +709,12 @@ impl ConnectorIntegration<api::Execute, types::RefundsData, types::RefundsRespon
     }
 }
 
-impl ConnectorIntegration<api::RSync, types::RefundsData, types::RefundsResponseData> for Billwerk {
+impl ConnectorIntegration<RSync, RefundsData, RefundsResponseData> for Billwerk {
     fn get_headers(
         &self,
-        req: &types::RefundSyncRouterData,
-        connectors: &settings::Connectors,
-    ) -> CustomResult<Vec<(String, request::Maskable<String>)>, errors::ConnectorError> {
+        req: &RefundSyncRouterData,
+        connectors: &Connectors,
+    ) -> CustomResult<Vec<(String, masking::Maskable<String>)>, errors::ConnectorError> {
         self.build_headers(req, connectors)
     }
 
@@ -727,8 +724,8 @@ impl ConnectorIntegration<api::RSync, types::RefundsData, types::RefundsResponse
 
     fn get_url(
         &self,
-        req: &types::RefundSyncRouterData,
-        connectors: &settings::Connectors,
+        req: &RefundSyncRouterData,
+        connectors: &Connectors,
     ) -> CustomResult<String, errors::ConnectorError> {
         let refund_id = req.request.get_connector_refund_id()?;
         Ok(format!(
@@ -739,12 +736,12 @@ impl ConnectorIntegration<api::RSync, types::RefundsData, types::RefundsResponse
 
     fn build_request(
         &self,
-        req: &types::RefundSyncRouterData,
-        connectors: &settings::Connectors,
-    ) -> CustomResult<Option<services::Request>, errors::ConnectorError> {
+        req: &RefundSyncRouterData,
+        connectors: &Connectors,
+    ) -> CustomResult<Option<Request>, errors::ConnectorError> {
         Ok(Some(
-            services::RequestBuilder::new()
-                .method(services::Method::Get)
+            RequestBuilder::new()
+                .method(Method::Get)
                 .url(&types::RefundSyncType::get_url(self, req, connectors)?)
                 .attach_default_headers()
                 .headers(types::RefundSyncType::get_headers(self, req, connectors)?)
@@ -757,17 +754,17 @@ impl ConnectorIntegration<api::RSync, types::RefundsData, types::RefundsResponse
 
     fn handle_response(
         &self,
-        data: &types::RefundSyncRouterData,
+        data: &RefundSyncRouterData,
         event_builder: Option<&mut ConnectorEvent>,
         res: Response,
-    ) -> CustomResult<types::RefundSyncRouterData, errors::ConnectorError> {
+    ) -> CustomResult<RefundSyncRouterData, errors::ConnectorError> {
         let response: billwerk::RefundResponse = res
             .response
             .parse_struct("billwerk RefundSyncResponse")
             .change_context(errors::ConnectorError::ResponseDeserializationFailed)?;
         event_builder.map(|i| i.set_response_body(&response));
         router_env::logger::info!(connector_response=?response);
-        types::RouterData::try_from(types::ResponseRouterData {
+        RouterData::try_from(ResponseRouterData {
             response,
             data: data.clone(),
             http_code: res.status_code,
@@ -792,24 +789,24 @@ impl ConnectorIntegration<api::RSync, types::RefundsData, types::RefundsResponse
 }
 
 #[async_trait::async_trait]
-impl api::IncomingWebhook for Billwerk {
+impl IncomingWebhook for Billwerk {
     fn get_webhook_object_reference_id(
         &self,
-        _request: &api::IncomingWebhookRequestDetails<'_>,
-    ) -> CustomResult<api::webhooks::ObjectReferenceId, errors::ConnectorError> {
+        _request: &IncomingWebhookRequestDetails<'_>,
+    ) -> CustomResult<ObjectReferenceId, errors::ConnectorError> {
         Err(report!(errors::ConnectorError::WebhooksNotImplemented))
     }
 
     fn get_webhook_event_type(
         &self,
-        _request: &api::IncomingWebhookRequestDetails<'_>,
-    ) -> CustomResult<api::IncomingWebhookEvent, errors::ConnectorError> {
+        _request: &IncomingWebhookRequestDetails<'_>,
+    ) -> CustomResult<IncomingWebhookEvent, errors::ConnectorError> {
         Err(report!(errors::ConnectorError::WebhooksNotImplemented))
     }
 
     fn get_webhook_resource_object(
         &self,
-        _request: &api::IncomingWebhookRequestDetails<'_>,
+        _request: &IncomingWebhookRequestDetails<'_>,
     ) -> CustomResult<Box<dyn masking::ErasedMaskSerialize>, errors::ConnectorError> {
         Err(report!(errors::ConnectorError::WebhooksNotImplemented))
     }
diff --git a/crates/router/src/connector/billwerk/transformers.rs b/crates/hyperswitch_connectors/src/connectors/billwerk/transformers.rs
similarity index 76%
rename from crates/router/src/connector/billwerk/transformers.rs
rename to crates/hyperswitch_connectors/src/connectors/billwerk/transformers.rs
index 6b21014cdd5..cc63e1ad7cc 100644
--- a/crates/router/src/connector/billwerk/transformers.rs
+++ b/crates/hyperswitch_connectors/src/connectors/billwerk/transformers.rs
@@ -1,16 +1,30 @@
+use common_enums::enums;
 use common_utils::{
     id_type,
     pii::{Email, SecretSerdeValue},
     types::MinorUnit,
 };
+use hyperswitch_domain_models::{
+    payment_method_data::PaymentMethodData,
+    router_data::{ConnectorAuthType, ErrorResponse, PaymentMethodToken, RouterData},
+    router_flow_types::{
+        payments,
+        refunds::{Execute, RSync},
+    },
+    router_request_types::ResponseId,
+    router_response_types::{PaymentsResponseData, RefundsResponseData},
+    types,
+};
+use hyperswitch_interfaces::{
+    consts::{NO_ERROR_CODE, NO_ERROR_MESSAGE},
+    errors,
+};
 use masking::{ExposeInterface, Secret};
 use serde::{Deserialize, Serialize};
 
 use crate::{
-    connector::utils::{self, CardData, PaymentsAuthorizeRequestData, RouterData},
-    consts,
-    core::errors,
-    types::{self, api, domain, storage::enums},
+    types::{RefundsResponseRouterData, ResponseRouterData},
+    utils::{self, CardData as _, PaymentsAuthorizeRequestData, RouterData as _},
 };
 
 pub struct BillwerkRouterData<T> {
@@ -33,11 +47,11 @@ pub struct BillwerkAuthType {
     pub(super) public_api_key: Secret<String>,
 }
 
-impl TryFrom<&types::ConnectorAuthType> for BillwerkAuthType {
+impl TryFrom<&ConnectorAuthType> for BillwerkAuthType {
     type Error = error_stack::Report<errors::ConnectorError>;
-    fn try_from(auth_type: &types::ConnectorAuthType) -> Result<Self, Self::Error> {
+    fn try_from(auth_type: &ConnectorAuthType) -> Result<Self, Self::Error> {
         match auth_type {
-            types::ConnectorAuthType::BodyKey { api_key, key1 } => Ok(Self {
+            ConnectorAuthType::BodyKey { api_key, key1 } => Ok(Self {
                 api_key: api_key.to_owned(),
                 public_api_key: key1.to_owned(),
             }),
@@ -75,7 +89,7 @@ impl TryFrom<&types::TokenizationRouterData> for BillwerkTokenRequest {
     type Error = error_stack::Report<errors::ConnectorError>;
     fn try_from(item: &types::TokenizationRouterData) -> Result<Self, Self::Error> {
         match item.request.payment_method_data.clone() {
-            domain::PaymentMethodData::Card(ccard) => {
+            PaymentMethodData::Card(ccard) => {
                 let connector_auth = &item.connector_auth_type;
                 let auth_type = BillwerkAuthType::try_from(connector_auth)?;
                 Ok(Self {
@@ -89,23 +103,23 @@ impl TryFrom<&types::TokenizationRouterData> for BillwerkTokenRequest {
                     strong_authentication_rule: None,
                 })
             }
-            domain::payments::PaymentMethodData::Wallet(_)
-            | domain::payments::PaymentMethodData::CardRedirect(_)
-            | domain::payments::PaymentMethodData::PayLater(_)
-            | domain::payments::PaymentMethodData::BankRedirect(_)
-            | domain::payments::PaymentMethodData::BankDebit(_)
-            | domain::payments::PaymentMethodData::BankTransfer(_)
-            | domain::payments::PaymentMethodData::Crypto(_)
-            | domain::payments::PaymentMethodData::MandatePayment
-            | domain::payments::PaymentMethodData::Reward
-            | domain::payments::PaymentMethodData::RealTimePayment(_)
-            | domain::payments::PaymentMethodData::Upi(_)
-            | domain::payments::PaymentMethodData::Voucher(_)
-            | domain::payments::PaymentMethodData::GiftCard(_)
-            | domain::payments::PaymentMethodData::OpenBanking(_)
-            | domain::payments::PaymentMethodData::CardToken(_)
-            | domain::PaymentMethodData::NetworkToken(_)
-            | domain::PaymentMethodData::CardDetailsForNetworkTransactionId(_) => {
+            PaymentMethodData::Wallet(_)
+            | PaymentMethodData::CardRedirect(_)
+            | PaymentMethodData::PayLater(_)
+            | PaymentMethodData::BankRedirect(_)
+            | PaymentMethodData::BankDebit(_)
+            | PaymentMethodData::BankTransfer(_)
+            | PaymentMethodData::Crypto(_)
+            | PaymentMethodData::MandatePayment
+            | PaymentMethodData::Reward
+            | PaymentMethodData::RealTimePayment(_)
+            | PaymentMethodData::Upi(_)
+            | PaymentMethodData::Voucher(_)
+            | PaymentMethodData::GiftCard(_)
+            | PaymentMethodData::OpenBanking(_)
+            | PaymentMethodData::CardToken(_)
+            | PaymentMethodData::NetworkToken(_)
+            | PaymentMethodData::CardDetailsForNetworkTransactionId(_) => {
                 Err(errors::ConnectorError::NotImplemented(
                     utils::get_unimplemented_payment_method_error_message("billwerk"),
                 )
@@ -123,25 +137,25 @@ pub struct BillwerkTokenResponse {
 
 impl<T>
     TryFrom<
-        types::ResponseRouterData<
-            api::PaymentMethodToken,
+        ResponseRouterData<
+            payments::PaymentMethodToken,
             BillwerkTokenResponse,
             T,
-            types::PaymentsResponseData,
+            PaymentsResponseData,
         >,
-    > for types::RouterData<api::PaymentMethodToken, T, types::PaymentsResponseData>
+    > for RouterData<payments::PaymentMethodToken, T, PaymentsResponseData>
 {
     type Error = error_stack::Report<errors::ConnectorError>;
     fn try_from(
-        item: types::ResponseRouterData<
-            api::PaymentMethodToken,
+        item: ResponseRouterData<
+            payments::PaymentMethodToken,
             BillwerkTokenResponse,
             T,
-            types::PaymentsResponseData,
+            PaymentsResponseData,
         >,
     ) -> Result<Self, Self::Error> {
         Ok(Self {
-            response: Ok(types::PaymentsResponseData::TokenizationResponse {
+            response: Ok(PaymentsResponseData::TokenizationResponse {
                 token: item.response.id.expose(),
             }),
             ..item.data
@@ -184,7 +198,7 @@ impl TryFrom<&BillwerkRouterData<&types::PaymentsAuthorizeRouterData>> for Billw
             .into());
         };
         let source = match item.router_data.get_payment_method_token()? {
-            types::PaymentMethodToken::Token(pm_token) => Ok(pm_token),
+            PaymentMethodToken::Token(pm_token) => Ok(pm_token),
             _ => Err(errors::ConnectorError::MissingRequiredField {
                 field_name: "payment_method_token",
             }),
@@ -241,31 +255,25 @@ pub struct BillwerkPaymentsResponse {
     error_state: Option<String>,
 }
 
-impl<F, T>
-    TryFrom<types::ResponseRouterData<F, BillwerkPaymentsResponse, T, types::PaymentsResponseData>>
-    for types::RouterData<F, T, types::PaymentsResponseData>
+impl<F, T> TryFrom<ResponseRouterData<F, BillwerkPaymentsResponse, T, PaymentsResponseData>>
+    for RouterData<F, T, PaymentsResponseData>
 {
     type Error = error_stack::Report<errors::ConnectorError>;
     fn try_from(
-        item: types::ResponseRouterData<
-            F,
-            BillwerkPaymentsResponse,
-            T,
-            types::PaymentsResponseData,
-        >,
+        item: ResponseRouterData<F, BillwerkPaymentsResponse, T, PaymentsResponseData>,
     ) -> Result<Self, Self::Error> {
         let error_response = if item.response.error.is_some() || item.response.error_state.is_some()
         {
-            Some(types::ErrorResponse {
+            Some(ErrorResponse {
                 code: item
                     .response
                     .error_state
                     .clone()
-                    .unwrap_or(consts::NO_ERROR_CODE.to_string()),
+                    .unwrap_or(NO_ERROR_CODE.to_string()),
                 message: item
                     .response
                     .error_state
-                    .unwrap_or(consts::NO_ERROR_MESSAGE.to_string()),
+                    .unwrap_or(NO_ERROR_MESSAGE.to_string()),
                 reason: item.response.error,
                 status_code: item.http_code,
                 attempt_status: None,
@@ -274,8 +282,8 @@ impl<F, T>
         } else {
             None
         };
-        let payments_response = types::PaymentsResponseData::TransactionResponse {
-            resource_id: types::ResponseId::ConnectorTransactionId(item.response.handle.clone()),
+        let payments_response = PaymentsResponseData::TransactionResponse {
+            resource_id: ResponseId::ConnectorTransactionId(item.response.handle.clone()),
             redirection_data: None,
             mandate_reference: None,
             connector_metadata: None,
@@ -354,15 +362,15 @@ pub struct RefundResponse {
     state: RefundState,
 }
 
-impl TryFrom<types::RefundsResponseRouterData<api::Execute, RefundResponse>>
-    for types::RefundsRouterData<api::Execute>
+impl TryFrom<RefundsResponseRouterData<Execute, RefundResponse>>
+    for types::RefundsRouterData<Execute>
 {
     type Error = error_stack::Report<errors::ConnectorError>;
     fn try_from(
-        item: types::RefundsResponseRouterData<api::Execute, RefundResponse>,
+        item: RefundsResponseRouterData<Execute, RefundResponse>,
     ) -> Result<Self, Self::Error> {
         Ok(Self {
-            response: Ok(types::RefundsResponseData {
+            response: Ok(RefundsResponseData {
                 connector_refund_id: item.response.id.to_string(),
                 refund_status: enums::RefundStatus::from(item.response.state),
             }),
@@ -371,15 +379,13 @@ impl TryFrom<types::RefundsResponseRouterData<api::Execute, RefundResponse>>
     }
 }
 
-impl TryFrom<types::RefundsResponseRouterData<api::RSync, RefundResponse>>
-    for types::RefundsRouterData<api::RSync>
-{
+impl TryFrom<RefundsResponseRouterData<RSync, RefundResponse>> for types::RefundsRouterData<RSync> {
     type Error = error_stack::Report<errors::ConnectorError>;
     fn try_from(
-        item: types::RefundsResponseRouterData<api::RSync, RefundResponse>,
+        item: RefundsResponseRouterData<RSync, RefundResponse>,
     ) -> Result<Self, Self::Error> {
         Ok(Self {
-            response: Ok(types::RefundsResponseData {
+            response: Ok(RefundsResponseData {
                 connector_refund_id: item.response.id.to_string(),
                 refund_status: enums::RefundStatus::from(item.response.state),
             }),
diff --git a/crates/hyperswitch_connectors/src/default_implementations.rs b/crates/hyperswitch_connectors/src/default_implementations.rs
index 8a9d803a6f5..1e411ded76f 100644
--- a/crates/hyperswitch_connectors/src/default_implementations.rs
+++ b/crates/hyperswitch_connectors/src/default_implementations.rs
@@ -90,6 +90,7 @@ macro_rules! default_imp_for_authorize_session_token {
 
 default_imp_for_authorize_session_token!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -130,6 +131,7 @@ macro_rules! default_imp_for_calculate_tax {
 
 default_imp_for_calculate_tax!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -170,6 +172,7 @@ macro_rules! default_imp_for_session_update {
 
 default_imp_for_session_update!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -212,6 +215,7 @@ macro_rules! default_imp_for_post_session_tokens {
 default_imp_for_post_session_tokens!(
     connectors::Bambora,
     connectors::Bitpay,
+    connectors::Billwerk,
     connectors::Cashtocode,
     connectors::Coinbase,
     connectors::Cryptopay,
@@ -253,6 +257,7 @@ macro_rules! default_imp_for_complete_authorize {
 }
 
 default_imp_for_complete_authorize!(
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -291,6 +296,7 @@ macro_rules! default_imp_for_incremental_authorization {
 
 default_imp_for_incremental_authorization!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -333,6 +339,7 @@ macro_rules! default_imp_for_create_customer {
 
 default_imp_for_create_customer!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -375,6 +382,7 @@ macro_rules! default_imp_for_connector_redirect_response {
 }
 
 default_imp_for_connector_redirect_response!(
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -415,6 +423,7 @@ macro_rules! default_imp_for_pre_processing_steps{
 
 default_imp_for_pre_processing_steps!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -456,6 +465,7 @@ macro_rules! default_imp_for_post_processing_steps{
 
 default_imp_for_post_processing_steps!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -498,6 +508,7 @@ macro_rules! default_imp_for_approve {
 
 default_imp_for_approve!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -540,6 +551,7 @@ macro_rules! default_imp_for_reject {
 
 default_imp_for_reject!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -582,6 +594,7 @@ macro_rules! default_imp_for_webhook_source_verification {
 
 default_imp_for_webhook_source_verification!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -625,6 +638,7 @@ macro_rules! default_imp_for_accept_dispute {
 
 default_imp_for_accept_dispute!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -667,6 +681,7 @@ macro_rules! default_imp_for_submit_evidence {
 
 default_imp_for_submit_evidence!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -709,6 +724,7 @@ macro_rules! default_imp_for_defend_dispute {
 
 default_imp_for_defend_dispute!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -760,6 +776,7 @@ macro_rules! default_imp_for_file_upload {
 
 default_imp_for_file_upload!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -804,6 +821,7 @@ macro_rules! default_imp_for_payouts_create {
 #[cfg(feature = "payouts")]
 default_imp_for_payouts_create!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -848,6 +866,7 @@ macro_rules! default_imp_for_payouts_retrieve {
 #[cfg(feature = "payouts")]
 default_imp_for_payouts_retrieve!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -892,6 +911,7 @@ macro_rules! default_imp_for_payouts_eligibility {
 #[cfg(feature = "payouts")]
 default_imp_for_payouts_eligibility!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -936,6 +956,7 @@ macro_rules! default_imp_for_payouts_fulfill {
 #[cfg(feature = "payouts")]
 default_imp_for_payouts_fulfill!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -980,6 +1001,7 @@ macro_rules! default_imp_for_payouts_cancel {
 #[cfg(feature = "payouts")]
 default_imp_for_payouts_cancel!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -1024,6 +1046,7 @@ macro_rules! default_imp_for_payouts_quote {
 #[cfg(feature = "payouts")]
 default_imp_for_payouts_quote!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -1068,6 +1091,7 @@ macro_rules! default_imp_for_payouts_recipient {
 #[cfg(feature = "payouts")]
 default_imp_for_payouts_recipient!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -1112,6 +1136,7 @@ macro_rules! default_imp_for_payouts_recipient_account {
 #[cfg(feature = "payouts")]
 default_imp_for_payouts_recipient_account!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -1156,6 +1181,7 @@ macro_rules! default_imp_for_frm_sale {
 #[cfg(feature = "frm")]
 default_imp_for_frm_sale!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -1200,6 +1226,7 @@ macro_rules! default_imp_for_frm_checkout {
 #[cfg(feature = "frm")]
 default_imp_for_frm_checkout!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -1244,6 +1271,7 @@ macro_rules! default_imp_for_frm_transaction {
 #[cfg(feature = "frm")]
 default_imp_for_frm_transaction!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -1288,6 +1316,7 @@ macro_rules! default_imp_for_frm_fulfillment {
 #[cfg(feature = "frm")]
 default_imp_for_frm_fulfillment!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -1332,6 +1361,7 @@ macro_rules! default_imp_for_frm_record_return {
 #[cfg(feature = "frm")]
 default_imp_for_frm_record_return!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -1373,6 +1403,7 @@ macro_rules! default_imp_for_revoking_mandates {
 
 default_imp_for_revoking_mandates!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
diff --git a/crates/hyperswitch_connectors/src/default_implementations_v2.rs b/crates/hyperswitch_connectors/src/default_implementations_v2.rs
index 1c81db29d3f..54c0b6a8289 100644
--- a/crates/hyperswitch_connectors/src/default_implementations_v2.rs
+++ b/crates/hyperswitch_connectors/src/default_implementations_v2.rs
@@ -206,6 +206,7 @@ macro_rules! default_imp_for_new_connector_integration_payment {
 
 default_imp_for_new_connector_integration_payment!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -249,6 +250,7 @@ macro_rules! default_imp_for_new_connector_integration_refund {
 
 default_imp_for_new_connector_integration_refund!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -287,6 +289,7 @@ macro_rules! default_imp_for_new_connector_integration_connector_access_token {
 
 default_imp_for_new_connector_integration_connector_access_token!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -331,6 +334,7 @@ macro_rules! default_imp_for_new_connector_integration_accept_dispute {
 
 default_imp_for_new_connector_integration_accept_dispute!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -374,6 +378,7 @@ macro_rules! default_imp_for_new_connector_integration_submit_evidence {
 
 default_imp_for_new_connector_integration_submit_evidence!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -417,6 +422,7 @@ macro_rules! default_imp_for_new_connector_integration_defend_dispute {
 
 default_imp_for_new_connector_integration_defend_dispute!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -470,6 +476,7 @@ macro_rules! default_imp_for_new_connector_integration_file_upload {
 
 default_imp_for_new_connector_integration_file_upload!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -515,6 +522,7 @@ macro_rules! default_imp_for_new_connector_integration_payouts_create {
 #[cfg(feature = "payouts")]
 default_imp_for_new_connector_integration_payouts_create!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -560,6 +568,7 @@ macro_rules! default_imp_for_new_connector_integration_payouts_eligibility {
 #[cfg(feature = "payouts")]
 default_imp_for_new_connector_integration_payouts_eligibility!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -605,6 +614,7 @@ macro_rules! default_imp_for_new_connector_integration_payouts_fulfill {
 #[cfg(feature = "payouts")]
 default_imp_for_new_connector_integration_payouts_fulfill!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -650,6 +660,7 @@ macro_rules! default_imp_for_new_connector_integration_payouts_cancel {
 #[cfg(feature = "payouts")]
 default_imp_for_new_connector_integration_payouts_cancel!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -695,6 +706,7 @@ macro_rules! default_imp_for_new_connector_integration_payouts_quote {
 #[cfg(feature = "payouts")]
 default_imp_for_new_connector_integration_payouts_quote!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -740,6 +752,7 @@ macro_rules! default_imp_for_new_connector_integration_payouts_recipient {
 #[cfg(feature = "payouts")]
 default_imp_for_new_connector_integration_payouts_recipient!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -785,6 +798,7 @@ macro_rules! default_imp_for_new_connector_integration_payouts_sync {
 #[cfg(feature = "payouts")]
 default_imp_for_new_connector_integration_payouts_sync!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -830,6 +844,7 @@ macro_rules! default_imp_for_new_connector_integration_payouts_recipient_account
 #[cfg(feature = "payouts")]
 default_imp_for_new_connector_integration_payouts_recipient_account!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -873,6 +888,7 @@ macro_rules! default_imp_for_new_connector_integration_webhook_source_verificati
 
 default_imp_for_new_connector_integration_webhook_source_verification!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -918,6 +934,7 @@ macro_rules! default_imp_for_new_connector_integration_frm_sale {
 #[cfg(feature = "frm")]
 default_imp_for_new_connector_integration_frm_sale!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -963,6 +980,7 @@ macro_rules! default_imp_for_new_connector_integration_frm_checkout {
 #[cfg(feature = "frm")]
 default_imp_for_new_connector_integration_frm_checkout!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -1008,6 +1026,7 @@ macro_rules! default_imp_for_new_connector_integration_frm_transaction {
 #[cfg(feature = "frm")]
 default_imp_for_new_connector_integration_frm_transaction!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -1053,6 +1072,7 @@ macro_rules! default_imp_for_new_connector_integration_frm_fulfillment {
 #[cfg(feature = "frm")]
 default_imp_for_new_connector_integration_frm_fulfillment!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -1098,6 +1118,7 @@ macro_rules! default_imp_for_new_connector_integration_frm_record_return {
 #[cfg(feature = "frm")]
 default_imp_for_new_connector_integration_frm_record_return!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
@@ -1140,6 +1161,7 @@ macro_rules! default_imp_for_new_connector_integration_revoking_mandates {
 
 default_imp_for_new_connector_integration_revoking_mandates!(
     connectors::Bambora,
+    connectors::Billwerk,
     connectors::Bitpay,
     connectors::Cashtocode,
     connectors::Coinbase,
diff --git a/crates/router/src/connector.rs b/crates/router/src/connector.rs
index 23b60d1cb1f..c0c64d76415 100644
--- a/crates/router/src/connector.rs
+++ b/crates/router/src/connector.rs
@@ -5,7 +5,6 @@ pub mod airwallex;
 pub mod authorizedotnet;
 pub mod bamboraapac;
 pub mod bankofamerica;
-pub mod billwerk;
 pub mod bluesnap;
 pub mod boku;
 pub mod braintree;
@@ -57,11 +56,11 @@ pub mod zen;
 pub mod zsl;
 
 pub use hyperswitch_connectors::connectors::{
-    bambora, bambora::Bambora, bitpay, bitpay::Bitpay, cashtocode, cashtocode::Cashtocode,
-    coinbase, coinbase::Coinbase, cryptopay, cryptopay::Cryptopay, deutschebank,
-    deutschebank::Deutschebank, digitalvirgo, digitalvirgo::Digitalvirgo, dlocal, dlocal::Dlocal,
-    fiserv, fiserv::Fiserv, fiservemea, fiservemea::Fiservemea, fiuu, fiuu::Fiuu, globepay,
-    globepay::Globepay, helcim, helcim::Helcim, mollie, mollie::Mollie, nexixpay,
+    bambora, bambora::Bambora, billwerk, billwerk::Billwerk, bitpay, bitpay::Bitpay, cashtocode,
+    cashtocode::Cashtocode, coinbase, coinbase::Coinbase, cryptopay, cryptopay::Cryptopay,
+    deutschebank, deutschebank::Deutschebank, digitalvirgo, digitalvirgo::Digitalvirgo, dlocal,
+    dlocal::Dlocal, fiserv, fiserv::Fiserv, fiservemea, fiservemea::Fiservemea, fiuu, fiuu::Fiuu,
+    globepay, globepay::Globepay, helcim, helcim::Helcim, mollie, mollie::Mollie, nexixpay,
     nexixpay::Nexixpay, novalnet, novalnet::Novalnet, powertranz, powertranz::Powertranz, square,
     square::Square, stax, stax::Stax, taxjar, taxjar::Taxjar, thunes, thunes::Thunes, tsys,
     tsys::Tsys, volt, volt::Volt, worldline, worldline::Worldline,
@@ -72,7 +71,7 @@ pub use self::dummyconnector::DummyConnector;
 pub use self::{
     aci::Aci, adyen::Adyen, adyenplatform::Adyenplatform, airwallex::Airwallex,
     authorizedotnet::Authorizedotnet, bamboraapac::Bamboraapac, bankofamerica::Bankofamerica,
-    billwerk::Billwerk, bluesnap::Bluesnap, boku::Boku, braintree::Braintree, checkout::Checkout,
+    bluesnap::Bluesnap, boku::Boku, braintree::Braintree, checkout::Checkout,
     cybersource::Cybersource, datatrans::Datatrans, ebanx::Ebanx, forte::Forte,
     globalpay::Globalpay, gocardless::Gocardless, gpayments::Gpayments, iatapay::Iatapay,
     itaubank::Itaubank, klarna::Klarna, mifinity::Mifinity, multisafepay::Multisafepay,
diff --git a/crates/router/src/core/payments/connector_integration_v2_impls.rs b/crates/router/src/core/payments/connector_integration_v2_impls.rs
index 3ca620e9e81..4e900321f95 100644
--- a/crates/router/src/core/payments/connector_integration_v2_impls.rs
+++ b/crates/router/src/core/payments/connector_integration_v2_impls.rs
@@ -697,7 +697,6 @@ default_imp_for_new_connector_integration_payment!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -770,7 +769,6 @@ default_imp_for_new_connector_integration_refund!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -837,7 +835,6 @@ default_imp_for_new_connector_integration_connector_access_token!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -926,7 +923,6 @@ default_imp_for_new_connector_integration_accept_dispute!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -997,7 +993,6 @@ default_imp_for_new_connector_integration_defend_dispute!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -1052,7 +1047,6 @@ default_imp_for_new_connector_integration_submit_evidence!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -1134,7 +1128,6 @@ default_imp_for_new_connector_integration_file_upload!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -1296,7 +1289,6 @@ default_imp_for_new_connector_integration_payouts_create!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -1370,7 +1362,6 @@ default_imp_for_new_connector_integration_payouts_eligibility!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -1444,7 +1435,6 @@ default_imp_for_new_connector_integration_payouts_fulfill!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -1518,7 +1508,6 @@ default_imp_for_new_connector_integration_payouts_cancel!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -1592,7 +1581,6 @@ default_imp_for_new_connector_integration_payouts_quote!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -1666,7 +1654,6 @@ default_imp_for_new_connector_integration_payouts_recipient!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -1740,7 +1727,6 @@ default_imp_for_new_connector_integration_payouts_sync!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -1814,7 +1800,6 @@ default_imp_for_new_connector_integration_payouts_recipient_account!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -1886,7 +1871,6 @@ default_imp_for_new_connector_integration_webhook_source_verification!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -2048,7 +2032,6 @@ default_imp_for_new_connector_integration_frm_sale!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -2122,7 +2105,6 @@ default_imp_for_new_connector_integration_frm_checkout!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -2196,7 +2178,6 @@ default_imp_for_new_connector_integration_frm_transaction!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -2270,7 +2251,6 @@ default_imp_for_new_connector_integration_frm_fulfillment!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -2344,7 +2324,6 @@ default_imp_for_new_connector_integration_frm_record_return!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -2415,7 +2394,6 @@ default_imp_for_new_connector_integration_revoking_mandates!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
diff --git a/crates/router/src/core/payments/flows.rs b/crates/router/src/core/payments/flows.rs
index eae41c91e4e..babf393bb3a 100644
--- a/crates/router/src/core/payments/flows.rs
+++ b/crates/router/src/core/payments/flows.rs
@@ -208,7 +208,6 @@ default_imp_for_complete_authorize!(
     connector::Adyen,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Boku,
     connector::Checkout,
     connector::Datatrans,
@@ -279,7 +278,6 @@ default_imp_for_webhook_source_verification!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Braintree,
     connector::Boku,
@@ -362,7 +360,6 @@ default_imp_for_create_customer!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -444,7 +441,6 @@ default_imp_for_connector_redirect_response!(
     connector::Adyen,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Boku,
     connector::Cybersource,
     connector::Datatrans,
@@ -606,7 +602,6 @@ default_imp_for_accept_dispute!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -710,7 +705,6 @@ default_imp_for_file_upload!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -791,7 +785,6 @@ default_imp_for_submit_evidence!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -872,7 +865,6 @@ default_imp_for_defend_dispute!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -968,7 +960,6 @@ default_imp_for_pre_processing_steps!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -1037,7 +1028,6 @@ default_imp_for_post_processing_steps!(
     connector::Aci,
     connector::Authorizedotnet,
     connector::Bamboraapac,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -1194,7 +1184,6 @@ default_imp_for_payouts_create!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -1275,7 +1264,6 @@ default_imp_for_payouts_retrieve!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -1361,7 +1349,6 @@ default_imp_for_payouts_eligibility!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -1442,7 +1429,6 @@ default_imp_for_payouts_fulfill!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -1520,7 +1506,6 @@ default_imp_for_payouts_cancel!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -1602,7 +1587,6 @@ default_imp_for_payouts_quote!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -1685,7 +1669,6 @@ default_imp_for_payouts_recipient!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -1770,7 +1753,6 @@ default_imp_for_payouts_recipient_account!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -1853,7 +1835,6 @@ default_imp_for_approve!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -1937,7 +1918,6 @@ default_imp_for_reject!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -2112,7 +2092,6 @@ default_imp_for_frm_sale!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -2196,7 +2175,6 @@ default_imp_for_frm_checkout!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -2280,7 +2258,6 @@ default_imp_for_frm_transaction!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -2364,7 +2341,6 @@ default_imp_for_frm_fulfillment!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -2448,7 +2424,6 @@ default_imp_for_frm_record_return!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -2530,7 +2505,6 @@ default_imp_for_incremental_authorization!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -2610,7 +2584,6 @@ default_imp_for_revoking_mandates!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -2850,7 +2823,6 @@ default_imp_for_authorize_session_token!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -2931,7 +2903,6 @@ default_imp_for_calculate_tax!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -3013,7 +2984,6 @@ default_imp_for_session_update!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,
@@ -3094,7 +3064,6 @@ default_imp_for_post_session_tokens!(
     connector::Authorizedotnet,
     connector::Bamboraapac,
     connector::Bankofamerica,
-    connector::Billwerk,
     connector::Bluesnap,
     connector::Boku,
     connector::Braintree,

## 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 -->
Moved connector Billwerk from Router to HyperswitchConnector Trait

### 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?
1. Create Merchant Account
```
curl --location 'http://localhost:8080/payments/pay_hY1WhQcAhKsQZehh2piy' \
--header 'Accept: application/json' \
--header 'api-key: ___'
```
2. Create API Key
```
curl --location 'http://localhost:8080/api_keys/merchant_1728387984' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'api-key: test_admin' \
--data '{"name":"API Key 1","description":null,"expiration":"2069-09-23T01:02:03.000Z"}'
```
3. Create Payment Connector
```
curl --location 'http://localhost:8080/account/merchant_1728387984/connectors' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'api-key: test_admin' \
--data '{
    "connector_type": "payment_processor",
    "connector_name": "billwerk",
    "business_country": "US",
    "business_label": "default",
    "connector_account_details": {
        "auth_type": "BodyKey",
        "api_key": "___",
        "key1": "___"
    },
    "test_mode": true,
    "disabled": false,
    "payment_methods_enabled": [
        {
            "payment_method": "card",
            "payment_method_types": [
                {
                    "payment_method_type": "credit",
                    "card_networks": [
                        "Visa",
                        "Mastercard"
                    ],
                    "minimum_amount": 1,
                    "maximum_amount": 68607706,
                    "recurring_enabled": true,
                    "installment_payment_enabled": true
                },
                {
                    "payment_method_type": "debit",
                    "card_networks": [
                        "Visa",
                        "Mastercard"
                    ],
                    "minimum_amount": 1,
                    "maximum_amount": 68607706,
                    "recurring_enabled": true,
                    "installment_payment_enabled": true
                }
            ]
        }
    ],
    "metadata": {
        "gpay": {
            "allowed_payment_methods": [
                {
                    "type": "CARD",
                    "parameters": {
                        "allowed_auth_methods": [
                            "PAN_ONLY",
                            "CRYPTOGRAM_3DS"
                        ],
                        "allowed_card_networks": [
                            "AMEX",
                            "DISCOVER",
                            "INTERAC",
                            "JCB",
                            "MASTERCARD",
                            "VISA"
                        ]
                    },
                    "tokenization_specification": {
                        "type": "PAYMENT_GATEWAY",
                        "parameters": {
                            "gateway": "example",
                            "gateway_merchant_id": "exampleGatewayMerchantId"
                        }
                    }
                }
            ],
            "merchant_info": {
                "merchant_name": "Narayan Bhat"
            }
        }
    }
}'
```
4. Create Payments
```
curl --location 'http://localhost:8080/payments' \
--header 'Accept: application/json' \
--header 'api-key: dev_QTQCvk4ajWvMAQ3GCqSKUCEN0p824XG0bRiK0APTwqIfqudd5LJ6E0wWTTLPhXqX' \
--header 'x-feature: router-custom' \
--header 'Content-Type: application/json' \
--data-raw '{
	"amount": 1337,
	"currency": "USD",
	"confirm": true,
	"capture_method": "automatic",
	"capture_on": "2022-09-10T10:11:12Z",
	"amount_to_capture": 1337,
	"customer_id": "customerg1",
	"email": "guest2@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://duck.com",
	"payment_method": "card",
	"payment_method_type": "credit",
	"payment_method_data": {
		"card": {
			"card_number": "340000000000009",
			"card_exp_month": "12",
			"card_exp_year": "2099",
			"card_holder_name": "joseph Doe",
			"card_cvc": "123"
		}
	},
	"billing": {
		"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"
		}
	},
	"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"
		}
	},
    "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"
    },
	"statement_descriptor_name": "joseph",
	"statement_descriptor_suffix": "JS",
    "metadata": {
        "test": "ket"
    }
}'
```
Response
```
{
    "payment_id": "pay_hY1WhQcAhKsQZehh2piy",
    "merchant_id": "merchant_1728387984",
    "status": "succeeded",
    "amount": 1337,
    "net_amount": 1337,
    "amount_capturable": 0,
    "amount_received": 1337,
    "connector": "billwerk",
    "client_secret": "pay_hY1WhQcAhKsQZehh2piy_secret_fa5dFW8Pg6r42vmz7pMV",
    "created": "2024-10-08T11:49:37.028Z",
    "currency": "USD",
    "customer_id": "customerg1",
    "customer": {
        "id": "customerg1",
        "name": "John Doe",
        "email": "guest2@example.com",
        "phone": "999999999",
        "phone_country_code": "+1"
    },
    "description": "Its my first payment request",
    "refunds": null,
    "disputes": null,
    "mandate_id": null,
    "mandate_data": null,
    "setup_future_usage": null,
    "off_session": null,
    "capture_on": null,
    "capture_method": "automatic",
    "payment_method": "card",
    "payment_method_data": {
        "card": {
            "last4": "0009",
            "card_type": null,
            "card_network": null,
            "card_issuer": null,
            "card_issuing_country": null,
            "card_isin": "340000",
            "card_extended_bin": null,
            "card_exp_month": "12",
            "card_exp_year": "2099",
            "card_holder_name": null,
            "payment_checks": null,
            "authentication_data": null
        },
        "billing": null
    },
    "payment_token": null,
    "shipping": {
        "address": {
            "city": "San Fransico",
            "country": "US",
            "line1": "1467",
            "line2": "Harrison Street",
            "line3": "Harrison Street",
            "zip": "94122",
            "state": "California",
            "first_name": "joseph",
            "last_name": "Doe"
        },
        "phone": {
            "number": "8056594427",
            "country_code": "+91"
        },
        "email": null
    },
    "billing": {
        "address": {
            "city": "San Fransico",
            "country": "US",
            "line1": "1467",
            "line2": "Harrison Street",
            "line3": "Harrison Street",
            "zip": "94122",
            "state": "California",
            "first_name": "joseph",
            "last_name": "Doe"
        },
        "phone": {
            "number": "8056594427",
            "country_code": "+91"
        },
        "email": null
    },
    "order_details": null,
    "email": "guest2@example.com",
    "name": "John Doe",
    "phone": "999999999",
    "return_url": "https://duck.com/",
    "authentication_type": "no_three_ds",
    "statement_descriptor_name": "joseph",
    "statement_descriptor_suffix": "JS",
    "next_action": null,
    "cancellation_reason": null,
    "error_code": null,
    "error_message": null,
    "unified_code": null,
    "unified_message": null,
    "payment_experience": null,
    "payment_method_type": "credit",
    "connector_label": null,
    "business_country": null,
    "business_label": "default",
    "business_sub_label": null,
    "allowed_payment_method_types": null,
    "ephemeral_key": {
        "customer_id": "customerg1",
        "created_at": 1728388177,
        "expires": 1728391777,
        "secret": "epk_c27ecfefd9d44b0dbaef1d1eb3a508dd"
    },
    "manual_retry_allowed": false,
    "connector_transaction_id": "pay_hY1WhQcAhKsQZehh2piy_1",
    "frm_message": null,
    "metadata": {
        "test": "ket"
    },
    "connector_metadata": null,
    "feature_metadata": null,
    "reference_id": "pay_hY1WhQcAhKsQZehh2piy_1",
    "payment_link": null,
    "profile_id": "pro_ekAp89eqFS6jdK6k6GZw",
    "surcharge_details": null,
    "attempt_count": 1,
    "merchant_decision": null,
    "merchant_connector_id": "mca_yIpRQKAU7bI3M0ESckcy",
    "incremental_authorization_allowed": null,
    "authorization_count": null,
    "incremental_authorizations": null,
    "external_authentication_details": null,
    "external_3ds_authentication_attempted": false,
    "expires_on": "2024-10-08T12:04:37.028Z",
    "fingerprint": null,
    "browser_info": {
        "language": "nl-NL",
        "time_zone": 0,
        "ip_address": "127.0.0.1",
        "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",
        "color_depth": 24,
        "java_enabled": true,
        "screen_width": 1536,
        "accept_header": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
        "screen_height": 723,
        "java_script_enabled": true
    },
    "payment_method_id": null,
    "payment_method_status": null,
    "updated": "2024-10-08T11:49:39.050Z",
    "charges": null,
    "frm_metadata": null,
    "merchant_order_reference_id": null,
    "order_tax_amount": null,
    "connector_mandate_id": null
}
```
## 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
