Bug: [REFACTOR] Make the function to deserialize hashsets more generic when deserializing application configs



### Description

As of opening this issue, there are multiple functions to deserialize hashsets with similar logic. These functions can be made generic, and reduced to one common function for deserializing all types.

Links to relevant functions:

1. https://github.com/juspay/hyperswitch/blob/0e4e18441d024b7d669b27d6f8a2feb3eccedb2a/crates/router/src/configs/settings.rs#L215-L242

2. https://github.com/juspay/hyperswitch/blob/0e4e18441d024b7d669b27d6f8a2feb3eccedb2a/crates/router/src/configs/settings.rs#L327-L355

3. https://github.com/juspay/hyperswitch/blob/0e4e18441d024b7d669b27d6f8a2feb3eccedb2a/crates/router/src/configs/settings.rs#L419-L469

4. https://github.com/juspay/hyperswitch/blob/0e4e18441d024b7d669b27d6f8a2feb3eccedb2a/crates/router/src/configs/settings.rs#L759-L772

In addition, the existing functions ignore any deserialization errors in case incorrect or unrecognized enum variants are provided, which causes the application to completely ignore those configuration entries. This would also have to be handled, to raise errors in case incorrect values are provided.
diff --git a/Cargo.lock b/Cargo.lock
index 5623fd9f729..24fedf82a27 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2603,9 +2603,9 @@ dependencies = [
 
 [[package]]
 name = "fred"
-version = "7.0.0"
+version = "7.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2e8094c30c33132e948eb7e1b740cfdaa5a6702610bd3a2744002ec3575cd68"
+checksum = "9282e65613822eea90c99872c51afa1de61542215cb11f91456a93f50a5a131a"
 dependencies = [
  "arc-swap",
  "async-trait",
@@ -2626,6 +2626,7 @@ dependencies = [
  "tracing",
  "tracing-futures",
  "url",
+ "urlencoding",
 ]
 
 [[package]]
@@ -5340,16 +5341,6 @@ dependencies = [
  "serde_json",
 ]
 
-[[package]]
-name = "rust_decimal_macros"
-version = "1.33.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2e43721f4ef7060ebc2c3ede757733209564ca8207f47674181bcd425dd76945"
-dependencies = [
- "quote",
- "rust_decimal",
-]
-
 [[package]]
 name = "rustc-demangle"
 version = "0.1.23"
@@ -5512,11 +5503,9 @@ dependencies = [
 [[package]]
 name = "rusty-money"
 version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b28f881005eac7ad8d46b6f075da5f322bd7f4f83a38720fc069694ddadd683"
+source = "git+https://github.com/varunsrin/rusty_money?rev=bbc0150742a0fff905225ff11ee09388e9babdcc#bbc0150742a0fff905225ff11ee09388e9babdcc"
 dependencies = [
  "rust_decimal",
- "rust_decimal_macros",
 ]
 
 [[package]]
diff --git a/config/config.example.toml b/config/config.example.toml
index 0ad50736e9e..3da1cd0daa0 100644
--- a/config/config.example.toml
+++ b/config/config.example.toml
@@ -415,7 +415,7 @@ alfamart = { country = "ID", currency = "IDR" }
 indomaret = { country = "ID", currency = "IDR" }
 open_banking_uk = { country = "GB", currency = "GBP" }
 oxxo = { country = "MX", currency = "MXN" }
-pay_safe_card = { country = "AT,AU,BE,BR,BE,CA,HR,CY,CZ,DK,FI,FR,GE,DE,GI,HU,IS,IE,KW,LV,IE,LI,LT,LU,MT,MX,MD,ME,NL,NZ,NO,PY,PE,PL,PT,RO,SA,RS,SK,SI,ES,SE,CH,TR,UAE,UK,US,UY", currency = "EUR,AUD,BRL,CAD,CZK,DKK,GEL,GIP,HUF,ISK,KWD,CHF,MXN,MDL,NZD,NOK,PYG,PEN,PLN,RON,SAR,RSD,SEK,TRY,AED,GBP,USD,UYU" }
+pay_safe_card = { country = "AT,AU,BE,BR,BE,CA,HR,CY,CZ,DK,FI,FR,GE,DE,GI,HU,IS,IE,KW,LV,IE,LI,LT,LU,MT,MX,MD,ME,NL,NZ,NO,PY,PE,PL,PT,RO,SA,RS,SK,SI,ES,SE,CH,TR,AE,GB,US,UY", currency = "EUR,AUD,BRL,CAD,CZK,DKK,GEL,GIP,HUF,KWD,CHF,MXN,MDL,NZD,NOK,PYG,PEN,PLN,RON,SAR,RSD,SEK,TRY,AED,GBP,USD,UYU" }
 seven_eleven = { country = "JP", currency = "JPY" }
 lawson = { country = "JP", currency = "JPY" }
 mini_stop = { country = "JP", currency = "JPY" }
@@ -452,7 +452,7 @@ connector_list = "gocardless,stax,stripe"
 payout_connector_list = "wise"
 
 [bank_config.online_banking_fpx]
-adyen.banks = "affin_bank,agro_bank,alliance_bank,am_bank,bank_islam,bank_muamalat,bank_rakyat,bank_simpanan_nasional,cimb_bank,hong_leong_bank,hsbc_bank,kuwait_finance_house,may_bank,ocbc_bank,public_bank,rhb_bank,standard_chartered_bank,uob_bank"
+adyen.banks = "affin_bank,agro_bank,alliance_bank,am_bank,bank_islam,bank_muamalat,bank_rakyat,bank_simpanan_nasional,cimb_bank,hong_leong_bank,hsbc_bank,kuwait_finance_house,maybank,ocbc_bank,public_bank,rhb_bank,standard_chartered_bank,uob_bank"
 
 [bank_config.online_banking_thailand]
 adyen.banks = "bangkok_bank,krungsri_bank,krung_thai_bank,the_siam_commercial_bank,kasikorn_bank"
diff --git a/config/deployments/integration_test.toml b/config/deployments/integration_test.toml
index 4a858588b50..d377b3359c9 100644
--- a/config/deployments/integration_test.toml
+++ b/config/deployments/integration_test.toml
@@ -4,7 +4,7 @@ eps.stripe.banks = "arzte_und_apotheker_bank,austrian_anadi_bank_ag,bank_austria
 ideal.adyen.banks = "abn_amro,asn_bank,bunq,handelsbanken,ing,knab,moneyou,rabobank,regiobank,revolut,sns_bank,triodos_bank,van_lanschot"
 ideal.stripe.banks = "abn_amro,asn_bank,bunq,handelsbanken,ing,knab,moneyou,rabobank,regiobank,revolut,sns_bank,triodos_bank,van_lanschot"
 online_banking_czech_republic.adyen.banks = "ceska_sporitelna,komercni_banka,platnosc_online_karta_platnicza"
-online_banking_fpx.adyen.banks = "affin_bank,agro_bank,alliance_bank,am_bank,bank_islam,bank_muamalat,bank_rakyat,bank_simpanan_nasional,cimb_bank,hong_leong_bank,hsbc_bank,kuwait_finance_house,may_bank,ocbc_bank,public_bank,rhb_bank,standard_chartered_bank,uob_bank"
+online_banking_fpx.adyen.banks = "affin_bank,agro_bank,alliance_bank,am_bank,bank_islam,bank_muamalat,bank_rakyat,bank_simpanan_nasional,cimb_bank,hong_leong_bank,hsbc_bank,kuwait_finance_house,maybank,ocbc_bank,public_bank,rhb_bank,standard_chartered_bank,uob_bank"
 online_banking_poland.adyen.banks = "blik_psp,place_zipko,m_bank,pay_with_ing,santander_przelew24,bank_pekaosa,bank_millennium,pay_with_alior_bank,banki_spoldzielcze,pay_with_inteligo,bnp_paribas_poland,bank_nowy_sa,credit_agricole,pay_with_bos,pay_with_citi_handlowy,pay_with_plus_bank,toyota_bank,velo_bank,e_transfer_pocztowy24"
 online_banking_slovakia.adyen.banks = "e_platby_vub,postova_banka,sporo_pay,tatra_pay,viamo"
 online_banking_thailand.adyen.banks = "bangkok_bank,krungsri_bank,krung_thai_bank,the_siam_commercial_bank,kasikorn_bank"
@@ -133,20 +133,20 @@ giropay = { country = "DE", currency = "EUR" }
 google_pay.country = "AL,DZ,AS,AO,AG,AR,AU,AT,AZ,BH,BY,BE,BR,BG,CA,CL,CO,HR,CZ,DK,DO,EG,EE,FI,FR,DE,GR,HK,HU,IN,ID,IE,IL,IT,JP,JO,KZ,KE,KW,LV,LB,LT,LU,MY,MX,NL,NZ,NO,OM,PK,PA,PE,PH,PL,PT,QA,RO,RU,SA,SG,SK,ZA,ES,LK,SE,CH,TW,TH,TR,UA,AE,GB,US,UY,VN"
 ideal = { country = "NL", currency = "EUR" }
 klarna = { country = "AT,BE,DK,FI,FR,DE,IE,IT,NL,NO,ES,SE,GB,US,CA", currency = "USD,GBP,EUR,CHF,DKK,SEK,NOK,AUD,PLN,CAD" }
-paypal.country = "AUD,BRL,CAD,CZK,DKK,EUR,HKD,HUF,INR,JPY,MYR,MXN,NZD,NOK,PHP,PLN,RUB,GBP,SGD,SEK,CHF,THB,USD"
+paypal.currency = "AUD,BRL,CAD,CZK,DKK,EUR,HKD,HUF,INR,JPY,MYR,MXN,NZD,NOK,PHP,PLN,RUB,GBP,SGD,SEK,CHF,THB,USD"
 sofort = { country = "ES,GB,SE,AT,NL,DE,CH,BE,FR,FI,IT,PL", currency = "EUR" }
 
 [pm_filters.adyen]
 ach = { country = "US", currency = "USD" }
 affirm = { country = "US", currency = "USD" }
-afterpay_clearpay = { country = "AU,NZ,ES,UK,FR,IT,CA,US", currency = "GBP" }
+afterpay_clearpay = { country = "AU,NZ,ES,GB,FR,IT,CA,US", currency = "GBP" }
 alfamart = { country = "ID", currency = "IDR" }
-ali_pay = { country = "AU,N,JP,HK,SG,MY,TH,ES,UK,SE,NO,AT,NL,DE,CY,CH,BE,FR,DK,FI,RO,MT,SI,GR,PT,IE,IT,CA,US", currency = "USD,EUR,GBP,JPY,AUD,SGD,CHF,SEK,NOK,NZD,THB,HKD,CAD" }
+ali_pay = { country = "AU,JP,HK,SG,MY,TH,ES,GB,SE,NO,AT,NL,DE,CY,CH,BE,FR,DK,FI,RO,MT,SI,GR,PT,IE,IT,CA,US", currency = "USD,EUR,GBP,JPY,AUD,SGD,CHF,SEK,NOK,NZD,THB,HKD,CAD" }
 ali_pay_hk = { country = "HK", currency = "HKD" }
 alma = { country = "FR", currency = "EUR" }
-apple_pay = { country = "AU,NZ,CN,JP,HK,SG,MY,BH,AE,KW,BR,ES,UK,SE,NO,AK,AT,NL,DE,HU,CY,LU,CH,BE,FR,DK,FI,RO,HR,LI,UA,MT,SI,GR,PT,IE,CZ,EE,LT,LV,IT,PL,IS,CA,US", currency = "AUD,CHF,CAD,EUR,GBP,HKD,SGD,USD" }
+apple_pay = { country = "AU,NZ,CN,JP,HK,SG,MY,BH,AE,KW,BR,ES,GB,SE,NO,AT,NL,DE,HU,CY,LU,CH,BE,FR,DK,FI,RO,HR,LI,UA,MT,SI,GR,PT,IE,CZ,EE,LT,LV,IT,PL,IS,CA,US", currency = "AUD,CHF,CAD,EUR,GBP,HKD,SGD,USD" }
 atome = { country = "MY,SG", currency = "MYR,SGD" }
-bacs = { country = "UK", currency = "GBP" }
+bacs = { country = "GB", currency = "GBP" }
 bancontact_card = { country = "BE", currency = "EUR" }
 bca_bank_transfer = { country = "ID", currency = "IDR" }
 bizum = { country = "ES", currency = "EUR" }
@@ -162,11 +162,11 @@ family_mart = { country = "JP", currency = "JPY" }
 gcash = { country = "PH", currency = "PHP" }
 giropay = { country = "DE", currency = "EUR" }
 go_pay = { country = "ID", currency = "IDR" }
-google_pay = { country = "AU,NZ,JP,HK,SG,MY,TH,VN,BH,AE,KW,BR,ES,UK,SE,NO,SK,AT,NL,DE,HU,CY,LU,CH,BE,FR,DK,RO,HR,LI,MT,SI,GR,PT,IE,CZ,EE,LT,LV,IT,PL,TR,IS,CA,US", currency = "AED,ALL,AMD,ANG,AOA,ARS,AUD,AWG,AZN,BAM,BBD,BDT,BGN,BHD,BMD,BND,BOB,BRL,BSD,BWP,BYN,BZD,CAD,CHF,CLP,CNY,COP,CRC,CUP,CVE,CZK,DJF,DKK,DOP,DZD,EGP,ETB,EUR,FJD,FKP,GBP,GEL,GHS,GIP,GMD,GNF,GTQ,GYD,HKD,HNL,HTG,HUF,IDR,ILS,INR,IQD,ISK,JMD,JOD,JPY,KES,KGS,KHR,KMF,KRW,KWD,KYD,KZT,LAK,LBP,LKR,LYD,MAD,MDL,MKD,MMK,MNT,MOP,MRU,MUR,MVR,MWK,MXN,MYR,MZN,NAD,NGN,NIO,NOK,NPR,NZD,OMR,PAB,PEN,PGK,PHP,PKR,PLN,PYG,QAR,RON,RSD,RUB,RWF,SAR,SBD,SCR,SEK,SGD,SHP,SLE,SOS,SRD,STN,SVC,SZL,THB,TND,TOP,TRY,TTD,TWD,TZS,UAH,UGX,USD,UYU,UZS,VEF,VND,VUV,WST,XAF,XCD,XOF,XPF,YER,ZAR,ZMW" }
+google_pay = { country = "AU,NZ,JP,HK,SG,MY,TH,VN,BH,AE,KW,BR,ES,GB,SE,NO,SK,AT,NL,DE,HU,CY,LU,CH,BE,FR,DK,RO,HR,LI,MT,SI,GR,PT,IE,CZ,EE,LT,LV,IT,PL,TR,IS,CA,US", currency = "AED,ALL,AMD,ANG,AOA,ARS,AUD,AWG,AZN,BAM,BBD,BDT,BGN,BHD,BMD,BND,BOB,BRL,BSD,BWP,BYN,BZD,CAD,CHF,CLP,CNY,COP,CRC,CUP,CVE,CZK,DJF,DKK,DOP,DZD,EGP,ETB,EUR,FJD,FKP,GBP,GEL,GHS,GIP,GMD,GNF,GTQ,GYD,HKD,HNL,HTG,HUF,IDR,ILS,INR,IQD,JMD,JOD,JPY,KES,KGS,KHR,KMF,KRW,KWD,KYD,KZT,LAK,LBP,LKR,LYD,MAD,MDL,MKD,MMK,MNT,MOP,MRU,MUR,MVR,MWK,MXN,MYR,MZN,NAD,NGN,NIO,NOK,NPR,NZD,OMR,PAB,PEN,PGK,PHP,PKR,PLN,PYG,QAR,RON,RSD,RUB,RWF,SAR,SBD,SCR,SEK,SGD,SHP,SLE,SOS,SRD,STN,SVC,SZL,THB,TND,TOP,TRY,TTD,TWD,TZS,UAH,UGX,USD,UYU,UZS,VES,VND,VUV,WST,XAF,XCD,XOF,XPF,YER,ZAR,ZMW" }
 ideal = { country = "NL", currency = "EUR" }
 indomaret = { country = "ID", currency = "IDR" }
 kakao_pay = { country = "KR", currency = "KRW" }
-klarna = { country = "AT,ES,UK,SE,NO,AT,NL,DE,CH,BE,FR,DK,FI,PT,IE,IT,PL,CA,US", currency = "USD,GBP,EUR,CHF,DKK,SEK,NOK,AUD,PLN,CAD" }
+klarna = { country = "AT,ES,GB,SE,NO,AT,NL,DE,CH,BE,FR,DK,FI,PT,IE,IT,PL,CA,US", currency = "USD,GBP,EUR,CHF,DKK,SEK,NOK,AUD,PLN,CAD" }
 lawson = { country = "JP", currency = "JPY" }
 mandiri_va = { country = "ID", currency = "IDR" }
 mb_way = { country = "PT", currency = "EUR" }
@@ -184,20 +184,20 @@ open_banking_uk = { country = "GB", currency = "GBP" }
 oxxo = { country = "MX", currency = "MXN" }
 pay_bright = { country = "CA", currency = "CAD" }
 pay_easy = { country = "JP", currency = "JPY" }
-pay_safe_card = { country = "AT,AU,BE,BR,BE,CA,HR,CY,CZ,DK,FI,FR,GE,DE,GI,HU,IS,IE,KW,LV,IE,LI,LT,LU,MT,MX,MD,ME,NL,NZ,NO,PY,PE,PL,PT,RO,SA,RS,SK,SI,ES,SE,CH,TR,UAE,UK,US,UY", currency = "EUR,AUD,BRL,CAD,CZK,DKK,GEL,GIP,HUF,ISK,KWD,CHF,MXN,MDL,NZD,NOK,PYG,PEN,PLN,RON,SAR,RSD,SEK,TRY,AED,GBP,USD,UYU" }
-paypal = { country = "AU,NZ,CN,JP,HK,MY,TH,KR,PH,ID,AE,KW,BR,ES,UK,SE,NO,SK,AT,NL,DE,HU,CY,LU,CH,BE,FR,DK,FI,RO,HR,UA,MT,SI,GI,PT,IE,CZ,EE,LT,LV,IT,PL,IS,CA,US", currency = "AUD,BRL,CAD,CZK,DKK,EUR,HKD,HUF,INR,JPY,MYR,MXN,NZD,NOK,PHP,PLN,RUB,GBP,SGD,SEK,CHF,THB,USD" }
+pay_safe_card = { country = "AT,AU,BE,BR,BE,CA,HR,CY,CZ,DK,FI,FR,GE,DE,GI,HU,IS,IE,KW,LV,IE,LI,LT,LU,MT,MX,MD,ME,NL,NZ,NO,PY,PE,PL,PT,RO,SA,RS,SK,SI,ES,SE,CH,TR,AE,GB,US,UY", currency = "EUR,AUD,BRL,CAD,CZK,DKK,GEL,GIP,HUF,KWD,CHF,MXN,MDL,NZD,NOK,PYG,PEN,PLN,RON,SAR,RSD,SEK,TRY,AED,GBP,USD,UYU" }
+paypal = { country = "AU,NZ,CN,JP,HK,MY,TH,KR,PH,ID,AE,KW,BR,ES,GB,SE,NO,SK,AT,NL,DE,HU,CY,LU,CH,BE,FR,DK,FI,RO,HR,UA,MT,SI,GI,PT,IE,CZ,EE,LT,LV,IT,PL,IS,CA,US", currency = "AUD,BRL,CAD,CZK,DKK,EUR,HKD,HUF,INR,JPY,MYR,MXN,NZD,NOK,PHP,PLN,RUB,GBP,SGD,SEK,CHF,THB,USD" }
 permata_bank_transfer = { country = "ID", currency = "IDR" }
 seicomart = { country = "JP", currency = "JPY" }
 sepa = { country = "ES,SK,AT,NL,DE,BE,FR,FI,PT,IE,EE,LT,LV,IT", currency = "EUR" }
 seven_eleven = { country = "JP", currency = "JPY" }
-sofort = { country = "ES,UK,SE,AT,NL,DE,CH,BE,FR,FI,IT,PL", currency = "EUR" }
+sofort = { country = "ES,GB,SE,AT,NL,DE,CH,BE,FR,FI,IT,PL", currency = "EUR" }
 swish = { country = "SE", currency = "SEK" }
 touch_n_go = { country = "MY", currency = "MYR" }
-trustly = { country = "ES,UK,SE,NO,AT,NL,DE,DK,FI,EE,LT,LV", currency = "CZK,DKK,EUR,GBP,NOK,SEK" }
+trustly = { country = "ES,GB,SE,NO,AT,NL,DE,DK,FI,EE,LT,LV", currency = "CZK,DKK,EUR,GBP,NOK,SEK" }
 twint = { country = "CH", currency = "CHF" }
 vipps = { country = "NO", currency = "NOK" }
 walley = { country = "SE,NO,DK,FI", currency = "DKK,EUR,NOK,SEK" }
-we_chat_pay = { country = "AU,NZ,CN,JP,HK,SG,ES,UK,SE,NO,AT,NL,DE,CY,CH,BE,FR,DK,LI,MT,SI,GR,PT,IT,CA,US", currency = "AUD,CAD,CNY,EUR,GBP,HKD,JPY,NZD,SGD,USD,CNY" }
+we_chat_pay = { country = "AU,NZ,CN,JP,HK,SG,ES,GB,SE,NO,AT,NL,DE,CY,CH,BE,FR,DK,LI,MT,SI,GR,PT,IT,CA,US", currency = "AUD,CAD,CNY,EUR,GBP,HKD,JPY,NZD,SGD,USD,CNY" }
 
 [pm_filters.authorizedotnet]
 google_pay.currency = "CHF,DKK,EUR,GBP,NOK,PLN,SEK,USD,AUD,NZD,CAD"
diff --git a/config/deployments/production.toml b/config/deployments/production.toml
index 376ae579a50..d4671d3a99d 100644
--- a/config/deployments/production.toml
+++ b/config/deployments/production.toml
@@ -4,9 +4,9 @@ eps.stripe.banks = "arzte_und_apotheker_bank,austrian_anadi_bank_ag,bank_austria
 ideal.adyen.banks = "abn_amro,asn_bank,bunq,handelsbanken,ing,knab,moneyou,rabobank,regiobank,revolut,sns_bank,triodos_bank,van_lanschot"
 ideal.stripe.banks = "abn_amro,asn_bank,bunq,handelsbanken,ing,knab,moneyou,rabobank,regiobank,revolut,sns_bank,triodos_bank,van_lanschot"
 online_banking_czech_republic.adyen.banks = "ceska_sporitelna,komercni_banka,platnosc_online_karta_platnicza"
-online_banking_fpx.adyen.banks = "affin_bank,agro_bank,alliance_bank,am_bank,bank_islam,bank_muamalat,bank_rakyat,bank_simpanan_nasional,cimb_bank,hong_leong_bank,hsbc_bank,kuwait_finance_house,may_bank,ocbc_bank,public_bank,rhb_bank,standard_chartered_bank,uob_bank"
+online_banking_fpx.adyen.banks = "affin_bank,agro_bank,alliance_bank,am_bank,bank_islam,bank_muamalat,bank_rakyat,bank_simpanan_nasional,cimb_bank,hong_leong_bank,hsbc_bank,kuwait_finance_house,maybank,ocbc_bank,public_bank,rhb_bank,standard_chartered_bank,uob_bank"
 online_banking_poland.adyen.banks = "blik_psp,place_zipko,m_bank,pay_with_ing,santander_przelew24,bank_pekaosa,bank_millennium,pay_with_alior_bank,banki_spoldzielcze,pay_with_inteligo,bnp_paribas_poland,bank_nowy_sa,credit_agricole,pay_with_bos,pay_with_citi_handlowy,pay_with_plus_bank,toyota_bank,velo_bank,e_transfer_pocztowy24"
-online_banking_slovakia.adyen.banks = "e_platby_v_u_b,e_platby_vub,postova_banka,sporo_pay,tatra_pay,viamo,volksbank_gruppe,volkskredit_bank_ag,vr_bank_braunau"
+online_banking_slovakia.adyen.banks = "e_platby_vub,postova_banka,sporo_pay,tatra_pay,viamo,volksbank_gruppe,volkskreditbank_ag,vr_bank_braunau"
 online_banking_thailand.adyen.banks = "bangkok_bank,krungsri_bank,krung_thai_bank,the_siam_commercial_bank,kasikorn_bank"
 open_banking_uk.adyen.banks = "aib,bank_of_scotland,danske_bank,first_direct,first_trust,halifax,lloyds,monzo,nat_west,nationwide_bank,royal_bank_of_scotland,starling,tsb_bank,tesco_bank,ulster_bank,barclays,hsbc_bank,revolut,santander_przelew24,open_bank_success,open_bank_failure,open_bank_cancelled"
 przelewy24.stripe.banks = "alior_bank,bank_millennium,bank_nowy_bfg_sa,bank_pekao_sa,banki_spbdzielcze,blik,bnp_paribas,boz,citi,credit_agricole,e_transfer_pocztowy24,getin_bank,idea_bank,inteligo,mbank_mtransfer,nest_przelew,noble_pay,pbac_z_ipko,plus_bank,santander_przelew24,toyota_bank,volkswagen_bank"
@@ -127,17 +127,17 @@ payout_eligibility = true
 [pm_filters.default]
 ach = { country = "US", currency = "USD" }
 affirm = { country = "US", currency = "USD" }
-afterpay_clearpay = { country = "AU,NZ,ES,UK,FR,IT,CA,US", currency = "GBP" }
-ali_pay = { country = "AU,N,JP,HK,SG,MY,TH,ES,UK,SE,NO,AT,NL,DE,CY,CH,BE,FR,DK,FI,RO,MT,SI,GR,PT,IE,IT,CA,US", currency = "USD,EUR,GBP,JPY,AUD,SGD,CHF,SEK,NOK,NZD,THB,HKD,CAD,CNY" }
+afterpay_clearpay = { country = "AU,NZ,ES,GB,FR,IT,CA,US", currency = "GBP" }
+ali_pay = { country = "AU,JP,HK,SG,MY,TH,ES,GB,SE,NO,AT,NL,DE,CY,CH,BE,FR,DK,FI,RO,MT,SI,GR,PT,IE,IT,CA,US", currency = "USD,EUR,GBP,JPY,AUD,SGD,CHF,SEK,NOK,NZD,THB,HKD,CAD,CNY" }
 apple_pay = { country = "AU,CN,HK,JP,MO,MY,NZ,SG,TW,AM,AT,AZ,BY,BE,BG,HR,CY,CZ,DK,EE,FO,FI,FR,GE,DE,GR,GL,GG,HU,IS,IE,IM,IT,KZ,JE,LV,LI,LT,LU,MT,MD,MC,ME,NL,NO,PL,PT,RO,SM,RS,SK,SI,ES,SE,CH,UA,GB,AR,CO,CR,BR,MX,PE,BH,IL,JO,KW,PS,QA,SA,AE,CA,UM,US,KR,VN,MA,ZA,VA,CL,SV,GT,HN,PA", currency = "AUD,CHF,CAD,EUR,GBP,HKD,SGD,USD" }
-bacs = { country = "UK", currency = "GBP" }
+bacs = { country = "GB", currency = "GBP" }
 bancontact_card = { country = "BE", currency = "EUR" }
 blik = { country = "PL", currency = "PLN" }
 eps = { country = "AT", currency = "EUR" }
 giropay = { country = "DE", currency = "EUR" }
-google_pay = { country = "AU,NZ,JP,HK,SG,MY,TH,VN,BH,AE,KW,BR,ES,UK,SE,NO,SK,AT,NL,DE,HU,CY,LU,CH,BE,FR,DK,RO,HR,LI,MT,SI,GR,PT,IE,CZ,EE,LT,LV,IT,PL,TR,IS,CA,US", currency = "AED,ALL,AMD,ANG,AOA,ARS,AUD,AWG,AZN,BAM,BBD,BDT,BGN,BHD,BMD,BND,BOB,BRL,BSD,BWP,BYN,BZD,CAD,CHF,CLP,CNY,COP,CRC,CUP,CVE,CZK,DJF,DKK,DOP,DZD,EGP,ETB,EUR,FJD,FKP,GBP,GEL,GHS,GIP,GMD,GNF,GTQ,GYD,HKD,HNL,HTG,HUF,IDR,ILS,INR,IQD,ISK,JMD,JOD,JPY,KES,KGS,KHR,KMF,KRW,KWD,KYD,KZT,LAK,LBP,LKR,LYD,MAD,MDL,MKD,MMK,MNT,MOP,MRU,MUR,MVR,MWK,MXN,MYR,MZN,NAD,NGN,NIO,NOK,NPR,NZD,OMR,PAB,PEN,PGK,PHP,PKR,PLN,PYG,QAR,RON,RSD,RUB,RWF,SAR,SBD,SCR,SEK,SGD,SHP,SLE,SOS,SRD,STN,SVC,SZL,THB,TND,TOP,TRY,TTD,TWD,TZS,UAH,UGX,USD,UYU,UZS,VEF,VND,VUV,WST,XAF,XCD,XOF,XPF,YER,ZAR,ZMW" }
+google_pay = { country = "AU,NZ,JP,HK,SG,MY,TH,VN,BH,AE,KW,BR,ES,GB,SE,NO,SK,AT,NL,DE,HU,CY,LU,CH,BE,FR,DK,RO,HR,LI,MT,SI,GR,PT,IE,CZ,EE,LT,LV,IT,PL,TR,IS,CA,US", currency = "AED,ALL,AMD,ANG,AOA,ARS,AUD,AWG,AZN,BAM,BBD,BDT,BGN,BHD,BMD,BND,BOB,BRL,BSD,BWP,BYN,BZD,CAD,CHF,CLP,CNY,COP,CRC,CUP,CVE,CZK,DJF,DKK,DOP,DZD,EGP,ETB,EUR,FJD,FKP,GBP,GEL,GHS,GIP,GMD,GNF,GTQ,GYD,HKD,HNL,HTG,HUF,IDR,ILS,INR,IQD,JMD,JOD,JPY,KES,KGS,KHR,KMF,KRW,KWD,KYD,KZT,LAK,LBP,LKR,LYD,MAD,MDL,MKD,MMK,MNT,MOP,MRU,MUR,MVR,MWK,MXN,MYR,MZN,NAD,NGN,NIO,NOK,NPR,NZD,OMR,PAB,PEN,PGK,PHP,PKR,PLN,PYG,QAR,RON,RSD,RUB,RWF,SAR,SBD,SCR,SEK,SGD,SHP,SLE,SOS,SRD,STN,SVC,SZL,THB,TND,TOP,TRY,TTD,TWD,TZS,UAH,UGX,USD,UYU,UZS,VES,VND,VUV,WST,XAF,XCD,XOF,XPF,YER,ZAR,ZMW" }
 ideal = { country = "NL", currency = "EUR" }
-klarna = { country = "AT,ES,UK,SE,NO,AT,NL,DE,CH,BE,FR,DK,FI,PT,IE,IT,PL,CA,US", currency = "USD,GBP,EUR,CHF,DKK,SEK,NOK,AUD,PLN,CAD" }
+klarna = { country = "AT,ES,GB,SE,NO,AT,NL,DE,CH,BE,FR,DK,FI,PT,IE,IT,PL,CA,US", currency = "USD,GBP,EUR,CHF,DKK,SEK,NOK,AUD,PLN,CAD" }
 mb_way = { country = "PT", currency = "EUR" }
 mobile_pay = { country = "DK,FI", currency = "DKK,SEK,NOK,EUR" }
 online_banking_czech_republic = { country = "CZ", currency = "EUR,CZK" }
@@ -145,24 +145,24 @@ online_banking_finland = { country = "FI", currency = "EUR" }
 online_banking_poland = { country = "PL", currency = "PLN" }
 online_banking_slovakia = { country = "SK", currency = "EUR,CZK" }
 pay_bright = { country = "CA", currency = "CAD" }
-paypal = { country = "AU,NZ,CN,JP,HK,MY,TH,KR,PH,ID,AE,KW,BR,ES,UK,SE,NO,SK,AT,NL,DE,HU,CY,LU,CH,BE,FR,DK,FI,RO,HR,UA,MT,SI,GI,PT,IE,CZ,EE,LT,LV,IT,PL,IS,CA,US", currency = "AUD,BRL,CAD,CZK,DKK,EUR,HKD,HUF,INR,JPY,MYR,MXN,NZD,NOK,PHP,PLN,RUB,GBP,SGD,SEK,CHF,THB,USD" }
+paypal = { country = "AU,NZ,CN,JP,HK,MY,TH,KR,PH,ID,AE,KW,BR,ES,GB,SE,NO,SK,AT,NL,DE,HU,CY,LU,CH,BE,FR,DK,FI,RO,HR,UA,MT,SI,GI,PT,IE,CZ,EE,LT,LV,IT,PL,IS,CA,US", currency = "AUD,BRL,CAD,CZK,DKK,EUR,HKD,HUF,INR,JPY,MYR,MXN,NZD,NOK,PHP,PLN,RUB,GBP,SGD,SEK,CHF,THB,USD" }
 sepa = { country = "ES,SK,AT,NL,DE,BE,FR,FI,PT,IE,EE,LT,LV,IT", currency = "EUR" }
-sofort = { country = "ES,UK,SE,AT,NL,DE,CH,BE,FR,FI,IT,PL", currency = "EUR" }
-trustly = { country = "ES,UK,SE,NO,AT,NL,DE,DK,FI,EE,LT,LV", currency = "CZK,DKK,EUR,GBP,NOK,SEK" }
+sofort = { country = "ES,GB,SE,AT,NL,DE,CH,BE,FR,FI,IT,PL", currency = "EUR" }
+trustly = { country = "ES,GB,SE,NO,AT,NL,DE,DK,FI,EE,LT,LV", currency = "CZK,DKK,EUR,GBP,NOK,SEK" }
 walley = { country = "SE,NO,DK,FI", currency = "DKK,EUR,NOK,SEK" }
-we_chat_pay = { country = "AU,NZ,CN,JP,HK,SG,ES,UK,SE,NO,AT,NL,DE,CY,CH,BE,FR,DK,LI,MT,SI,GR,PT,IT,CA,US", currency = "AUD,CAD,CNY,EUR,GBP,HKD,JPY,NZD,SGD,USD" }
+we_chat_pay = { country = "AU,NZ,CN,JP,HK,SG,ES,GB,SE,NO,AT,NL,DE,CY,CH,BE,FR,DK,LI,MT,SI,GR,PT,IT,CA,US", currency = "AUD,CAD,CNY,EUR,GBP,HKD,JPY,NZD,SGD,USD" }
 
 [pm_filters.adyen]
 ach = { country = "US", currency = "USD" }
 affirm = { country = "US", currency = "USD" }
-afterpay_clearpay = { country = "AU,CA,ES,FR,IT,NZ,UK,US", currency = "USD,AUD,CAD,NZD,GBP" }
+afterpay_clearpay = { country = "AU,CA,ES,FR,IT,NZ,GB,US", currency = "USD,AUD,CAD,NZD,GBP" }
 alfamart = { country = "ID", currency = "IDR" }
-ali_pay = { country = "AU,N,JP,HK,SG,MY,TH,ES,UK,SE,NO,AT,NL,DE,CY,CH,BE,FR,DK,FI,RO,MT,SI,GR,PT,IE,IT,CA,US", currency = "USD,EUR,GBP,JPY,AUD,SGD,CHF,SEK,NOK,NZD,THB,HKD,CAD" }
+ali_pay = { country = "AU,JP,HK,SG,MY,TH,ES,GB,SE,NO,AT,NL,DE,CY,CH,BE,FR,DK,FI,RO,MT,SI,GR,PT,IE,IT,CA,US", currency = "USD,EUR,GBP,JPY,AUD,SGD,CHF,SEK,NOK,NZD,THB,HKD,CAD" }
 ali_pay_hk = { country = "HK", currency = "HKD" }
 alma = { country = "FR", currency = "EUR" }
-apple_pay = { country = "AE,AK,AM,AR,AT,AU,AZ,BE,BG,BH,BR,BY,CA,CH,CN,CO,CR,CY,CZ,DE,DK,EE,ES,FI,FO,FR,GB,GE,GG,GL,GR,HK,HR,HU,IE,IL,IM,IS,IT,JE,JO,JP,KW,KZ,LI,LT,LU,LV,MC,MD,ME,MO,MT,MX,MY,NL,NO,NZ,PE,PL,PS,PT,QA,RO,RS,SA,SE,SG,SI,SK,SM,TW,UA,UK,UM,US", currency = "AUD,CHF,CAD,EUR,GBP,HKD,SGD,USD" }
+apple_pay = { country = "AE,AM,AR,AT,AU,AZ,BE,BG,BH,BR,BY,CA,CH,CN,CO,CR,CY,CZ,DE,DK,EE,ES,FI,FO,FR,GB,GE,GG,GL,GR,HK,HR,HU,IE,IL,IM,IS,IT,JE,JO,JP,KW,KZ,LI,LT,LU,LV,MC,MD,ME,MO,MT,MX,MY,NL,NO,NZ,PE,PL,PS,PT,QA,RO,RS,SA,SE,SG,SI,SK,SM,TW,UA,GB,UM,US", currency = "AUD,CHF,CAD,EUR,GBP,HKD,SGD,USD" }
 atome = { country = "MY,SG", currency = "MYR,SGD" }
-bacs = { country = "UK", currency = "GBP" }
+bacs = { country = "GB", currency = "GBP" }
 bancontact_card = { country = "BE", currency = "EUR" }
 bca_bank_transfer = { country = "ID", currency = "IDR" }
 bizum = { country = "ES", currency = "EUR" }
@@ -178,11 +178,11 @@ family_mart = { country = "JP", currency = "JPY" }
 gcash = { country = "PH", currency = "PHP" }
 giropay = { country = "DE", currency = "EUR" }
 go_pay = { country = "ID", currency = "IDR" }
-google_pay = { country = "AE,AG,AL,AO,AR,AS,AT,AU,AZ,BE,BG,BH,BR,BY,CA,CH,CL,CO,CY,CZ,DE,DK,DO,DZ,EE,EG,ES,FI,FR,GB,GR,HK,HR,HU,ID,IE,IL,IN,IS,IT,JO,JP,KE,KW,KZ,LB,LI,LK,LT,LU,LV,MT,MX,MY,NL,NO,NZ,OM,PA,PE,PH,PK,PL,PT,QA,RO,RU,SA,SE,SG,SI,SK,TH,TR,TW,UA,UK,US,UY,VN,ZA", currency = "AED,ALL,AMD,ANG,AOA,ARS,AUD,AWG,AZN,BAM,BBD,BDT,BGN,BHD,BMD,BND,BOB,BRL,BSD,BWP,BYN,BZD,CAD,CHF,CLP,CNY,COP,CRC,CUP,CVE,CZK,DJF,DKK,DOP,DZD,EGP,ETB,EUR,FJD,FKP,GBP,GEL,GHS,GIP,GMD,GNF,GTQ,GYD,HKD,HNL,HTG,HUF,IDR,ILS,INR,IQD,ISK,JMD,JOD,JPY,KES,KGS,KHR,KMF,KRW,KWD,KYD,KZT,LAK,LBP,LKR,LYD,MAD,MDL,MKD,MMK,MNT,MOP,MRU,MUR,MVR,MWK,MXN,MYR,MZN,NAD,NGN,NIO,NOK,NPR,NZD,OMR,PAB,PEN,PGK,PHP,PKR,PLN,PYG,QAR,RON,RSD,RUB,RWF,SAR,SBD,SCR,SEK,SGD,SHP,SLE,SOS,SRD,STN,SVC,SZL,THB,TND,TOP,TRY,TTD,TWD,TZS,UAH,UGX,USD,UYU,UZS,VEF,VND,VUV,WST,XAF,XCD,XOF,XPF,YER,ZAR,ZMW" }
+google_pay = { country = "AE,AG,AL,AO,AR,AS,AT,AU,AZ,BE,BG,BH,BR,BY,CA,CH,CL,CO,CY,CZ,DE,DK,DO,DZ,EE,EG,ES,FI,FR,GB,GR,HK,HR,HU,ID,IE,IL,IN,IS,IT,JO,JP,KE,KW,KZ,LB,LI,LK,LT,LU,LV,MT,MX,MY,NL,NO,NZ,OM,PA,PE,PH,PK,PL,PT,QA,RO,RU,SA,SE,SG,SI,SK,TH,TR,TW,UA,GB,US,UY,VN,ZA", currency = "AED,ALL,AMD,ANG,AOA,ARS,AUD,AWG,AZN,BAM,BBD,BDT,BGN,BHD,BMD,BND,BOB,BRL,BSD,BWP,BYN,BZD,CAD,CHF,CLP,CNY,COP,CRC,CUP,CVE,CZK,DJF,DKK,DOP,DZD,EGP,ETB,EUR,FJD,FKP,GBP,GEL,GHS,GIP,GMD,GNF,GTQ,GYD,HKD,HNL,HTG,HUF,IDR,ILS,INR,IQD,JMD,JOD,JPY,KES,KGS,KHR,KMF,KRW,KWD,KYD,KZT,LAK,LBP,LKR,LYD,MAD,MDL,MKD,MMK,MNT,MOP,MRU,MUR,MVR,MWK,MXN,MYR,MZN,NAD,NGN,NIO,NOK,NPR,NZD,OMR,PAB,PEN,PGK,PHP,PKR,PLN,PYG,QAR,RON,RSD,RUB,RWF,SAR,SBD,SCR,SEK,SGD,SHP,SLE,SOS,SRD,STN,SVC,SZL,THB,TND,TOP,TRY,TTD,TWD,TZS,UAH,UGX,USD,UYU,UZS,VES,VND,VUV,WST,XAF,XCD,XOF,XPF,YER,ZAR,ZMW" }
 ideal = { country = "NL", currency = "EUR" }
 indomaret = { country = "ID", currency = "IDR" }
 kakao_pay = { country = "KR", currency = "KRW" }
-klarna = { country = "AT,BE,CA,CH,DE,DK,ES,FI,FR,GB,IE,IT,NL,NO,PL,PT,SE,UK,US", currency = "AUD,CAD,CHF,DKK,EUR,GBP,NOK,PLN,SEK,USD" }
+klarna = { country = "AT,BE,CA,CH,DE,DK,ES,FI,FR,GB,IE,IT,NL,NO,PL,PT,SE,GB,US", currency = "AUD,CAD,CHF,DKK,EUR,GBP,NOK,PLN,SEK,USD" }
 lawson = { country = "JP", currency = "JPY" }
 mandiri_va = { country = "ID", currency = "IDR" }
 mb_way = { country = "PT", currency = "EUR" }
@@ -200,20 +200,20 @@ open_banking_uk = { country = "GB", currency = "GBP" }
 oxxo = { country = "MX", currency = "MXN" }
 pay_bright = { country = "CA", currency = "CAD" }
 pay_easy = { country = "JP", currency = "JPY" }
-pay_safe_card = { country = "AT,AU,BE,BR,BE,CA,HR,CY,CZ,DK,FI,FR,GE,DE,GI,HU,IS,IE,KW,LV,IE,LI,LT,LU,MT,MX,MD,ME,NL,NZ,NO,PY,PE,PL,PT,RO,SA,RS,SK,SI,ES,SE,CH,TR,UAE,UK,US,UY", currency = "EUR,AUD,BRL,CAD,CZK,DKK,GEL,GIP,HUF,ISK,KWD,CHF,MXN,MDL,NZD,NOK,PYG,PEN,PLN,RON,SAR,RSD,SEK,TRY,AED,GBP,USD,UYU" }
-paypal = { country = "AU,NZ,CN,JP,HK,MY,TH,KR,PH,ID,AE,KW,BR,ES,UK,SE,NO,SK,AT,NL,DE,HU,CY,LU,CH,BE,FR,DK,FI,RO,HR,UA,MT,SI,GI,PT,IE,CZ,EE,LT,LV,IT,PL,IS,CA,US", currency = "AUD,BRL,CAD,CZK,DKK,EUR,HKD,HUF,INR,JPY,MYR,MXN,NZD,NOK,PHP,PLN,RUB,GBP,SGD,SEK,CHF,THB,USD" }
+pay_safe_card = { country = "AT,AU,BE,BR,BE,CA,HR,CY,CZ,DK,FI,FR,GE,DE,GI,HU,IS,IE,KW,LV,IE,LI,LT,LU,MT,MX,MD,ME,NL,NZ,NO,PY,PE,PL,PT,RO,SA,RS,SK,SI,ES,SE,CH,TR,AE,GB,US,UY", currency = "EUR,AUD,BRL,CAD,CZK,DKK,GEL,GIP,HUF,KWD,CHF,MXN,MDL,NZD,NOK,PYG,PEN,PLN,RON,SAR,RSD,SEK,TRY,AED,GBP,USD,UYU" }
+paypal = { country = "AU,NZ,CN,JP,HK,MY,TH,KR,PH,ID,AE,KW,BR,ES,GB,SE,NO,SK,AT,NL,DE,HU,CY,LU,CH,BE,FR,DK,FI,RO,HR,UA,MT,SI,GI,PT,IE,CZ,EE,LT,LV,IT,PL,IS,CA,US", currency = "AUD,BRL,CAD,CZK,DKK,EUR,HKD,HUF,INR,JPY,MYR,MXN,NZD,NOK,PHP,PLN,RUB,GBP,SGD,SEK,CHF,THB,USD" }
 permata_bank_transfer = { country = "ID", currency = "IDR" }
 seicomart = { country = "JP", currency = "JPY" }
 sepa = { country = "ES,SK,AT,NL,DE,BE,FR,FI,PT,IE,EE,LT,LV,IT", currency = "EUR" }
 seven_eleven = { country = "JP", currency = "JPY" }
-sofort = { country = "AT,BE,CH,DE,ES,FI,FR,GB,IT,NL,PL,SE,UK", currency = "EUR" }
+sofort = { country = "AT,BE,CH,DE,ES,FI,FR,GB,IT,NL,PL,SE,GB", currency = "EUR" }
 swish = { country = "SE", currency = "SEK" }
 touch_n_go = { country = "MY", currency = "MYR" }
-trustly = { country = "ES,UK,SE,NO,AT,NL,DE,DK,FI,EE,LT,LV", currency = "CZK,DKK,EUR,GBP,NOK,SEK" }
+trustly = { country = "ES,GB,SE,NO,AT,NL,DE,DK,FI,EE,LT,LV", currency = "CZK,DKK,EUR,GBP,NOK,SEK" }
 twint = { country = "CH", currency = "CHF" }
 vipps = { country = "NO", currency = "NOK" }
 walley = { country = "SE,NO,DK,FI", currency = "DKK,EUR,NOK,SEK" }
-we_chat_pay = { country = "AU,NZ,CN,JP,HK,SG,ES,UK,SE,NO,AT,NL,DE,CY,CH,BE,FR,DK,LI,MT,SI,GR,PT,IT,CA,US", currency = "AUD,CAD,CNY,EUR,GBP,HKD,JPY,NZD,SGD,USD" }
+we_chat_pay = { country = "AU,NZ,CN,JP,HK,SG,ES,GB,SE,NO,AT,NL,DE,CY,CH,BE,FR,DK,LI,MT,SI,GR,PT,IT,CA,US", currency = "AUD,CAD,CNY,EUR,GBP,HKD,JPY,NZD,SGD,USD" }
 
 [pm_filters.authorizedotnet]
 google_pay.currency = "CHF,DKK,EUR,GBP,NOK,PLN,SEK,USD,AUD,NZD,CAD"
diff --git a/config/deployments/sandbox.toml b/config/deployments/sandbox.toml
index 01616f3ecd0..abacd3ba5a1 100644
--- a/config/deployments/sandbox.toml
+++ b/config/deployments/sandbox.toml
@@ -4,7 +4,7 @@ eps.stripe.banks = "arzte_und_apotheker_bank,austrian_anadi_bank_ag,bank_austria
 ideal.adyen.banks = "abn_amro,asn_bank,bunq,handelsbanken,ing,knab,moneyou,rabobank,regiobank,revolut,sns_bank,triodos_bank,van_lanschot"
 ideal.stripe.banks = "abn_amro,asn_bank,bunq,handelsbanken,ing,knab,moneyou,rabobank,regiobank,revolut,sns_bank,triodos_bank,van_lanschot"
 online_banking_czech_republic.adyen.banks = "ceska_sporitelna,komercni_banka,platnosc_online_karta_platnicza"
-online_banking_fpx.adyen.banks = "affin_bank,agro_bank,alliance_bank,am_bank,bank_islam,bank_muamalat,bank_rakyat,bank_simpanan_nasional,cimb_bank,hong_leong_bank,hsbc_bank,kuwait_finance_house,may_bank,ocbc_bank,public_bank,rhb_bank,standard_chartered_bank,uob_bank"
+online_banking_fpx.adyen.banks = "affin_bank,agro_bank,alliance_bank,am_bank,bank_islam,bank_muamalat,bank_rakyat,bank_simpanan_nasional,cimb_bank,hong_leong_bank,hsbc_bank,kuwait_finance_house,maybank,ocbc_bank,public_bank,rhb_bank,standard_chartered_bank,uob_bank"
 online_banking_poland.adyen.banks = "blik_psp,place_zipko,m_bank,pay_with_ing,santander_przelew24,bank_pekaosa,bank_millennium,pay_with_alior_bank,banki_spoldzielcze,pay_with_inteligo,bnp_paribas_poland,bank_nowy_sa,credit_agricole,pay_with_bos,pay_with_citi_handlowy,pay_with_plus_bank,toyota_bank,velo_bank,e_transfer_pocztowy24"
 online_banking_slovakia.adyen.banks = "e_platby_vub,postova_banka,sporo_pay,tatra_pay,viamo"
 online_banking_thailand.adyen.banks = "bangkok_bank,krungsri_bank,krung_thai_bank,the_siam_commercial_bank,kasikorn_bank"
@@ -127,17 +127,17 @@ payout_eligibility = true
 [pm_filters.default]
 ach = { country = "US", currency = "USD" }
 affirm = { country = "US", currency = "USD" }
-afterpay_clearpay = { country = "AU,NZ,ES,UK,FR,IT,CA,US", currency = "GBP" }
-ali_pay = { country = "AU,N,JP,HK,SG,MY,TH,ES,UK,SE,NO,AT,NL,DE,CY,CH,BE,FR,DK,FI,RO,MT,SI,GR,PT,IE,IT,CA,US", currency = "USD,EUR,GBP,JPY,AUD,SGD,CHF,SEK,NOK,NZD,THB,HKD,CAD" }
+afterpay_clearpay = { country = "AU,NZ,ES,GB,FR,IT,CA,US", currency = "GBP" }
+ali_pay = { country = "AU,JP,HK,SG,MY,TH,ES,GB,SE,NO,AT,NL,DE,CY,CH,BE,FR,DK,FI,RO,MT,SI,GR,PT,IE,IT,CA,US", currency = "USD,EUR,GBP,JPY,AUD,SGD,CHF,SEK,NOK,NZD,THB,HKD,CAD" }
 apple_pay = { country = "AU,CN,HK,JP,MO,MY,NZ,SG,TW,AM,AT,AZ,BY,BE,BG,HR,CY,CZ,DK,EE,FO,FI,FR,GE,DE,GR,GL,GG,HU,IS,IE,IM,IT,KZ,JE,LV,LI,LT,LU,MT,MD,MC,ME,NL,NO,PL,PT,RO,SM,RS,SK,SI,ES,SE,CH,UA,GB,AR,CO,CR,BR,MX,PE,BH,IL,JO,KW,PS,QA,SA,AE,CA,UM,US,KR,VN,MA,ZA,VA,CL,SV,GT,HN,PA", currency = "AED,AUD,CHF,CAD,EUR,GBP,HKD,SGD,USD" }
-bacs = { country = "UK", currency = "GBP" }
+bacs = { country = "GB", currency = "GBP" }
 bancontact_card = { country = "BE", currency = "EUR" }
 blik = { country = "PL", currency = "PLN" }
 eps = { country = "AT", currency = "EUR" }
 giropay = { country = "DE", currency = "EUR" }
-google_pay = { country = "AU,NZ,JP,HK,SG,MY,TH,VN,BH,AE,KW,BR,ES,UK,SE,NO,SK,AT,NL,DE,HU,CY,LU,CH,BE,FR,DK,RO,HR,LI,MT,SI,GR,PT,IE,CZ,EE,LT,LV,IT,PL,TR,IS,CA,US", currency = "AED,ALL,AMD,ANG,AOA,ARS,AUD,AWG,AZN,BAM,BBD,BDT,BGN,BHD,BMD,BND,BOB,BRL,BSD,BWP,BYN,BZD,CAD,CHF,CLP,CNY,COP,CRC,CUP,CVE,CZK,DJF,DKK,DOP,DZD,EGP,ETB,EUR,FJD,FKP,GBP,GEL,GHS,GIP,GMD,GNF,GTQ,GYD,HKD,HNL,HTG,HUF,IDR,ILS,INR,IQD,ISK,JMD,JOD,JPY,KES,KGS,KHR,KMF,KRW,KWD,KYD,KZT,LAK,LBP,LKR,LYD,MAD,MDL,MKD,MMK,MNT,MOP,MRU,MUR,MVR,MWK,MXN,MYR,MZN,NAD,NGN,NIO,NOK,NPR,NZD,OMR,PAB,PEN,PGK,PHP,PKR,PLN,PYG,QAR,RON,RSD,RUB,RWF,SAR,SBD,SCR,SEK,SGD,SHP,SLE,SOS,SRD,STN,SVC,SZL,THB,TND,TOP,TRY,TTD,TWD,TZS,UAH,UGX,USD,UYU,UZS,VEF,VND,VUV,WST,XAF,XCD,XOF,XPF,YER,ZAR,ZMW" }
+google_pay = { country = "AU,NZ,JP,HK,SG,MY,TH,VN,BH,AE,KW,BR,ES,GB,SE,NO,SK,AT,NL,DE,HU,CY,LU,CH,BE,FR,DK,RO,HR,LI,MT,SI,GR,PT,IE,CZ,EE,LT,LV,IT,PL,TR,IS,CA,US", currency = "AED,ALL,AMD,ANG,AOA,ARS,AUD,AWG,AZN,BAM,BBD,BDT,BGN,BHD,BMD,BND,BOB,BRL,BSD,BWP,BYN,BZD,CAD,CHF,CLP,CNY,COP,CRC,CUP,CVE,CZK,DJF,DKK,DOP,DZD,EGP,ETB,EUR,FJD,FKP,GBP,GEL,GHS,GIP,GMD,GNF,GTQ,GYD,HKD,HNL,HTG,HUF,IDR,ILS,INR,IQD,JMD,JOD,JPY,KES,KGS,KHR,KMF,KRW,KWD,KYD,KZT,LAK,LBP,LKR,LYD,MAD,MDL,MKD,MMK,MNT,MOP,MRU,MUR,MVR,MWK,MXN,MYR,MZN,NAD,NGN,NIO,NOK,NPR,NZD,OMR,PAB,PEN,PGK,PHP,PKR,PLN,PYG,QAR,RON,RSD,RUB,RWF,SAR,SBD,SCR,SEK,SGD,SHP,SLE,SOS,SRD,STN,SVC,SZL,THB,TND,TOP,TRY,TTD,TWD,TZS,UAH,UGX,USD,UYU,UZS,VES,VND,VUV,WST,XAF,XCD,XOF,XPF,YER,ZAR,ZMW" }
 ideal = { country = "NL", currency = "EUR" }
-klarna = { country = "AT,ES,UK,SE,NO,AT,NL,DE,CH,BE,FR,DK,FI,PT,IE,IT,PL,CA,US", currency = "USD,GBP,EUR,CHF,DKK,SEK,NOK,AUD,PLN,CAD" }
+klarna = { country = "AT,ES,GB,SE,NO,AT,NL,DE,CH,BE,FR,DK,FI,PT,IE,IT,PL,CA,US", currency = "USD,GBP,EUR,CHF,DKK,SEK,NOK,AUD,PLN,CAD" }
 mb_way = { country = "PT", currency = "EUR" }
 mobile_pay = { country = "DK,FI", currency = "DKK,SEK,NOK,EUR" }
 online_banking_czech_republic = { country = "CZ", currency = "EUR,CZK" }
@@ -145,24 +145,24 @@ online_banking_finland = { country = "FI", currency = "EUR" }
 online_banking_poland = { country = "PL", currency = "PLN" }
 online_banking_slovakia = { country = "SK", currency = "EUR,CZK" }
 pay_bright = { country = "CA", currency = "CAD" }
-paypal = { country = "AU,NZ,CN,JP,HK,MY,TH,KR,PH,ID,AE,KW,BR,ES,UK,SE,NO,SK,AT,NL,DE,HU,CY,LU,CH,BE,FR,DK,FI,RO,HR,UA,MT,SI,GI,PT,IE,CZ,EE,LT,LV,IT,PL,IS,CA,US", currency = "AUD,BRL,CAD,CZK,DKK,EUR,HKD,HUF,INR,JPY,MYR,MXN,NZD,NOK,PHP,PLN,RUB,GBP,SGD,SEK,CHF,THB,USD" }
+paypal = { country = "AU,NZ,CN,JP,HK,MY,TH,KR,PH,ID,AE,KW,BR,ES,GB,SE,NO,SK,AT,NL,DE,HU,CY,LU,CH,BE,FR,DK,FI,RO,HR,UA,MT,SI,GI,PT,IE,CZ,EE,LT,LV,IT,PL,IS,CA,US", currency = "AUD,BRL,CAD,CZK,DKK,EUR,HKD,HUF,INR,JPY,MYR,MXN,NZD,NOK,PHP,PLN,RUB,GBP,SGD,SEK,CHF,THB,USD" }
 sepa = { country = "ES,SK,AT,NL,DE,BE,FR,FI,PT,IE,EE,LT,LV,IT", currency = "EUR" }
-sofort = { country = "ES,UK,SE,AT,NL,DE,CH,BE,FR,FI,IT,PL", currency = "EUR" }
-trustly = { country = "ES,UK,SE,NO,AT,NL,DE,DK,FI,EE,LT,LV", currency = "CZK,DKK,EUR,GBP,NOK,SEK" }
+sofort = { country = "ES,GB,SE,AT,NL,DE,CH,BE,FR,FI,IT,PL", currency = "EUR" }
+trustly = { country = "ES,GB,SE,NO,AT,NL,DE,DK,FI,EE,LT,LV", currency = "CZK,DKK,EUR,GBP,NOK,SEK" }
 walley = { country = "SE,NO,DK,FI", currency = "DKK,EUR,NOK,SEK" }
-we_chat_pay = { country = "AU,NZ,CN,JP,HK,SG,ES,UK,SE,NO,AT,NL,DE,CY,CH,BE,FR,DK,LI,MT,SI,GR,PT,IT,CA,US", currency = "AUD,CAD,CNY,EUR,GBP,HKD,JPY,NZD,SGD,USD" }
+we_chat_pay = { country = "AU,NZ,CN,JP,HK,SG,ES,GB,SE,NO,AT,NL,DE,CY,CH,BE,FR,DK,LI,MT,SI,GR,PT,IT,CA,US", currency = "AUD,CAD,CNY,EUR,GBP,HKD,JPY,NZD,SGD,USD" }
 
 [pm_filters.adyen]
 ach = { country = "US", currency = "USD" }
 affirm = { country = "US", currency = "USD" }
-afterpay_clearpay = { country = "AU,NZ,ES,UK,FR,IT,CA,US", currency = "GBP" }
+afterpay_clearpay = { country = "AU,NZ,ES,GB,FR,IT,CA,US", currency = "GBP" }
 alfamart = { country = "ID", currency = "IDR" }
-ali_pay = { country = "AU,N,JP,HK,SG,MY,TH,ES,UK,SE,NO,AT,NL,DE,CY,CH,BE,FR,DK,FI,RO,MT,SI,GR,PT,IE,IT,CA,US", currency = "USD,EUR,GBP,JPY,AUD,SGD,CHF,SEK,NOK,NZD,THB,HKD,CAD" }
+ali_pay = { country = "AU,JP,HK,SG,MY,TH,ES,GB,SE,NO,AT,NL,DE,CY,CH,BE,FR,DK,FI,RO,MT,SI,GR,PT,IE,IT,CA,US", currency = "USD,EUR,GBP,JPY,AUD,SGD,CHF,SEK,NOK,NZD,THB,HKD,CAD" }
 ali_pay_hk = { country = "HK", currency = "HKD" }
 alma = { country = "FR", currency = "EUR" }
-apple_pay = { country = "AU,NZ,CN,JP,HK,SG,MY,BH,AE,KW,BR,ES,UK,SE,NO,AK,AT,NL,DE,HU,CY,LU,CH,BE,FR,DK,FI,RO,HR,LI,UA,MT,SI,GR,PT,IE,CZ,EE,LT,LV,IT,PL,IS,CA,US", currency = "AUD,CHF,CAD,EUR,GBP,HKD,SGD,USD" }
+apple_pay = { country = "AU,NZ,CN,JP,HK,SG,MY,BH,AE,KW,BR,ES,GB,SE,NO,AT,NL,DE,HU,CY,LU,CH,BE,FR,DK,FI,RO,HR,LI,UA,MT,SI,GR,PT,IE,CZ,EE,LT,LV,IT,PL,IS,CA,US", currency = "AUD,CHF,CAD,EUR,GBP,HKD,SGD,USD" }
 atome = { country = "MY,SG", currency = "MYR,SGD" }
-bacs = { country = "UK", currency = "GBP" }
+bacs = { country = "GB", currency = "GBP" }
 bancontact_card = { country = "BE", currency = "EUR" }
 bca_bank_transfer = { country = "ID", currency = "IDR" }
 bizum = { country = "ES", currency = "EUR" }
@@ -178,11 +178,11 @@ family_mart = { country = "JP", currency = "JPY" }
 gcash = { country = "PH", currency = "PHP" }
 giropay = { country = "DE", currency = "EUR" }
 go_pay = { country = "ID", currency = "IDR" }
-google_pay = { country = "AU,NZ,JP,HK,SG,MY,TH,VN,BH,AE,KW,BR,ES,UK,SE,NO,SK,AT,NL,DE,HU,CY,LU,CH,BE,FR,DK,RO,HR,LI,MT,SI,GR,PT,IE,CZ,EE,LT,LV,IT,PL,TR,IS,CA,US", currency = "AED,ALL,AMD,ANG,AOA,ARS,AUD,AWG,AZN,BAM,BBD,BDT,BGN,BHD,BMD,BND,BOB,BRL,BSD,BWP,BYN,BZD,CAD,CHF,CLP,CNY,COP,CRC,CUP,CVE,CZK,DJF,DKK,DOP,DZD,EGP,ETB,EUR,FJD,FKP,GBP,GEL,GHS,GIP,GMD,GNF,GTQ,GYD,HKD,HNL,HTG,HUF,IDR,ILS,INR,IQD,ISK,JMD,JOD,JPY,KES,KGS,KHR,KMF,KRW,KWD,KYD,KZT,LAK,LBP,LKR,LYD,MAD,MDL,MKD,MMK,MNT,MOP,MRU,MUR,MVR,MWK,MXN,MYR,MZN,NAD,NGN,NIO,NOK,NPR,NZD,OMR,PAB,PEN,PGK,PHP,PKR,PLN,PYG,QAR,RON,RSD,RUB,RWF,SAR,SBD,SCR,SEK,SGD,SHP,SLE,SOS,SRD,STN,SVC,SZL,THB,TND,TOP,TRY,TTD,TWD,TZS,UAH,UGX,USD,UYU,UZS,VEF,VND,VUV,WST,XAF,XCD,XOF,XPF,YER,ZAR,ZMW" }
+google_pay = { country = "AU,NZ,JP,HK,SG,MY,TH,VN,BH,AE,KW,BR,ES,GB,SE,NO,SK,AT,NL,DE,HU,CY,LU,CH,BE,FR,DK,RO,HR,LI,MT,SI,GR,PT,IE,CZ,EE,LT,LV,IT,PL,TR,IS,CA,US", currency = "AED,ALL,AMD,ANG,AOA,ARS,AUD,AWG,AZN,BAM,BBD,BDT,BGN,BHD,BMD,BND,BOB,BRL,BSD,BWP,BYN,BZD,CAD,CHF,CLP,CNY,COP,CRC,CUP,CVE,CZK,DJF,DKK,DOP,DZD,EGP,ETB,EUR,FJD,FKP,GBP,GEL,GHS,GIP,GMD,GNF,GTQ,GYD,HKD,HNL,HTG,HUF,IDR,ILS,INR,IQD,JMD,JOD,JPY,KES,KGS,KHR,KMF,KRW,KWD,KYD,KZT,LAK,LBP,LKR,LYD,MAD,MDL,MKD,MMK,MNT,MOP,MRU,MUR,MVR,MWK,MXN,MYR,MZN,NAD,NGN,NIO,NOK,NPR,NZD,OMR,PAB,PEN,PGK,PHP,PKR,PLN,PYG,QAR,RON,RSD,RUB,RWF,SAR,SBD,SCR,SEK,SGD,SHP,SLE,SOS,SRD,STN,SVC,SZL,THB,TND,TOP,TRY,TTD,TWD,TZS,UAH,UGX,USD,UYU,UZS,VES,VND,VUV,WST,XAF,XCD,XOF,XPF,YER,ZAR,ZMW" }
 ideal = { country = "NL", currency = "EUR" }
 indomaret = { country = "ID", currency = "IDR" }
 kakao_pay = { country = "KR", currency = "KRW" }
-klarna = { country = "AT,ES,UK,SE,NO,AT,NL,DE,CH,BE,FR,DK,FI,PT,IE,IT,PL,CA,US", currency = "USD,GBP,EUR,CHF,DKK,SEK,NOK,AUD,PLN,CAD" }
+klarna = { country = "AT,ES,GB,SE,NO,AT,NL,DE,CH,BE,FR,DK,FI,PT,IE,IT,PL,CA,US", currency = "USD,GBP,EUR,CHF,DKK,SEK,NOK,AUD,PLN,CAD" }
 lawson = { country = "JP", currency = "JPY" }
 mandiri_va = { country = "ID", currency = "IDR" }
 mb_way = { country = "PT", currency = "EUR" }
@@ -200,20 +200,20 @@ open_banking_uk = { country = "GB", currency = "GBP" }
 oxxo = { country = "MX", currency = "MXN" }
 pay_bright = { country = "CA", currency = "CAD" }
 pay_easy = { country = "JP", currency = "JPY" }
-pay_safe_card = { country = "AT,AU,BE,BR,BE,CA,HR,CY,CZ,DK,FI,FR,GE,DE,GI,HU,IS,IE,KW,LV,IE,LI,LT,LU,MT,MX,MD,ME,NL,NZ,NO,PY,PE,PL,PT,RO,SA,RS,SK,SI,ES,SE,CH,TR,UAE,UK,US,UY", currency = "EUR,AUD,BRL,CAD,CZK,DKK,GEL,GIP,HUF,ISK,KWD,CHF,MXN,MDL,NZD,NOK,PYG,PEN,PLN,RON,SAR,RSD,SEK,TRY,AED,GBP,USD,UYU" }
-paypal = { country = "AU,NZ,CN,JP,HK,MY,TH,KR,PH,ID,AE,KW,BR,ES,UK,SE,NO,SK,AT,NL,DE,HU,CY,LU,CH,BE,FR,DK,FI,RO,HR,UA,MT,SI,GI,PT,IE,CZ,EE,LT,LV,IT,PL,IS,CA,US", currency = "AUD,BRL,CAD,CZK,DKK,EUR,HKD,HUF,INR,JPY,MYR,MXN,NZD,NOK,PHP,PLN,RUB,GBP,SGD,SEK,CHF,THB,USD" }
+pay_safe_card = { country = "AT,AU,BE,BR,BE,CA,HR,CY,CZ,DK,FI,FR,GE,DE,GI,HU,IS,IE,KW,LV,IE,LI,LT,LU,MT,MX,MD,ME,NL,NZ,NO,PY,PE,PL,PT,RO,SA,RS,SK,SI,ES,SE,CH,TR,AE,GB,US,UY", currency = "EUR,AUD,BRL,CAD,CZK,DKK,GEL,GIP,HUF,KWD,CHF,MXN,MDL,NZD,NOK,PYG,PEN,PLN,RON,SAR,RSD,SEK,TRY,AED,GBP,USD,UYU" }
+paypal = { country = "AU,NZ,CN,JP,HK,MY,TH,KR,PH,ID,AE,KW,BR,ES,GB,SE,NO,SK,AT,NL,DE,HU,CY,LU,CH,BE,FR,DK,FI,RO,HR,UA,MT,SI,GI,PT,IE,CZ,EE,LT,LV,IT,PL,IS,CA,US", currency = "AUD,BRL,CAD,CZK,DKK,EUR,HKD,HUF,INR,JPY,MYR,MXN,NZD,NOK,PHP,PLN,RUB,GBP,SGD,SEK,CHF,THB,USD" }
 permata_bank_transfer = { country = "ID", currency = "IDR" }
 seicomart = { country = "JP", currency = "JPY" }
 sepa = { country = "ES,SK,AT,NL,DE,BE,FR,FI,PT,IE,EE,LT,LV,IT", currency = "EUR" }
 seven_eleven = { country = "JP", currency = "JPY" }
-sofort = { country = "ES,UK,SE,AT,NL,DE,CH,BE,FR,FI,IT,PL", currency = "EUR" }
+sofort = { country = "ES,GB,SE,AT,NL,DE,CH,BE,FR,FI,IT,PL", currency = "EUR" }
 swish = { country = "SE", currency = "SEK" }
 touch_n_go = { country = "MY", currency = "MYR" }
-trustly = { country = "ES,UK,SE,NO,AT,NL,DE,DK,FI,EE,LT,LV", currency = "CZK,DKK,EUR,GBP,NOK,SEK" }
+trustly = { country = "ES,GB,SE,NO,AT,NL,DE,DK,FI,EE,LT,LV", currency = "CZK,DKK,EUR,GBP,NOK,SEK" }
 twint = { country = "CH", currency = "CHF" }
 vipps = { country = "NO", currency = "NOK" }
 walley = { country = "SE,NO,DK,FI", currency = "DKK,EUR,NOK,SEK" }
-we_chat_pay = { country = "AU,NZ,CN,JP,HK,SG,ES,UK,SE,NO,AT,NL,DE,CY,CH,BE,FR,DK,LI,MT,SI,GR,PT,IT,CA,US", currency = "AUD,CAD,CNY,EUR,GBP,HKD,JPY,NZD,SGD,USD" }
+we_chat_pay = { country = "AU,NZ,CN,JP,HK,SG,ES,GB,SE,NO,AT,NL,DE,CY,CH,BE,FR,DK,LI,MT,SI,GR,PT,IT,CA,US", currency = "AUD,CAD,CNY,EUR,GBP,HKD,JPY,NZD,SGD,USD" }
 
 [pm_filters.authorizedotnet]
 google_pay.currency = "CHF,DKK,EUR,GBP,NOK,PLN,SEK,USD,AUD,NZD,CAD"
diff --git a/config/development.toml b/config/development.toml
index b23f68680e6..15366986db5 100644
--- a/config/development.toml
+++ b/config/development.toml
@@ -263,7 +263,7 @@ stripe = { banks = "alior_bank,bank_millennium,bank_nowy_bfg_sa,bank_pekao_sa,ba
 adyen = { banks = "aib,bank_of_scotland,danske_bank,first_direct,first_trust,halifax,lloyds,monzo,nat_west,nationwide_bank,royal_bank_of_scotland,starling,tsb_bank,tesco_bank,ulster_bank,barclays,hsbc_bank,revolut,santander_przelew24,open_bank_success,open_bank_failure,open_bank_cancelled"}
 
 [bank_config.online_banking_fpx]
-adyen.banks = "affin_bank,agro_bank,alliance_bank,am_bank,bank_islam,bank_muamalat,bank_rakyat,bank_simpanan_nasional,cimb_bank,hong_leong_bank,hsbc_bank,kuwait_finance_house,may_bank,ocbc_bank,public_bank,rhb_bank,standard_chartered_bank,uob_bank"
+adyen.banks = "affin_bank,agro_bank,alliance_bank,am_bank,bank_islam,bank_muamalat,bank_rakyat,bank_simpanan_nasional,cimb_bank,hong_leong_bank,hsbc_bank,kuwait_finance_house,maybank,ocbc_bank,public_bank,rhb_bank,standard_chartered_bank,uob_bank"
 
 [bank_config.online_banking_thailand]
 adyen.banks = "bangkok_bank,krungsri_bank,krung_thai_bank,the_siam_commercial_bank,kasikorn_bank"
@@ -293,31 +293,31 @@ ideal = { country = "NL", currency = "EUR" }
 cashapp = { country = "US", currency = "USD" }
 
 [pm_filters.adyen]
-google_pay = { country = "AU,NZ,JP,HK,SG,MY,TH,VN,BH,AE,KW,BR,ES,UK,SE,NO,SK,AT,NL,DE,HU,CY,LU,CH,BE,FR,DK,RO,HR,LI,MT,SI,GR,PT,IE,CZ,EE,LT,LV,IT,PL,TR,IS,CA,US", currency = "AED,ALL,AMD,ANG,AOA,ARS,AUD,AWG,AZN,BAM,BBD,BDT,BGN,BHD,BMD,BND,BOB,BRL,BSD,BWP,BYN,BZD,CAD,CHF,CLP,CNY,COP,CRC,CUP,CVE,CZK,DJF,DKK,DOP,DZD,EGP,ETB,EUR,FJD,FKP,GBP,GEL,GHS,GIP,GMD,GNF,GTQ,GYD,HKD,HNL,HTG,HUF,IDR,ILS,INR,IQD,ISK,JMD,JOD,JPY,KES,KGS,KHR,KMF,KRW,KWD,KYD,KZT,LAK,LBP,LKR,LYD,MAD,MDL,MKD,MMK,MNT,MOP,MRU,MUR,MVR,MWK,MXN,MYR,MZN,NAD,NGN,NIO,NOK,NPR,NZD,OMR,PAB,PEN,PGK,PHP,PKR,PLN,PYG,QAR,RON,RSD,RUB,RWF,SAR,SBD,SCR,SEK,SGD,SHP,SLE,SOS,SRD,STN,SVC,SZL,THB,TND,TOP,TRY,TTD,TWD,TZS,UAH,UGX,USD,UYU,UZS,VEF,VND,VUV,WST,XAF,XCD,XOF,XPF,YER,ZAR,ZMW" }
-apple_pay = { country = "AU,NZ,CN,JP,HK,SG,MY,BH,AE,KW,BR,ES,UK,SE,NO,AK,AT,NL,DE,HU,CY,LU,CH,BE,FR,DK,FI,RO,HR,LI,UA,MT,SI,GR,PT,IE,CZ,EE,LT,LV,IT,PL,IS,CA,US", currency = "AUD,CHF,CAD,EUR,GBP,HKD,SGD,USD" }
-paypal = { country = "AU,NZ,CN,JP,HK,MY,TH,KR,PH,ID,AE,KW,BR,ES,UK,SE,NO,SK,AT,NL,DE,HU,CY,LU,CH,BE,FR,DK,FI,RO,HR,UA,MT,SI,GI,PT,IE,CZ,EE,LT,LV,IT,PL,IS,CA,US", currency = "AUD,BRL,CAD,CZK,DKK,EUR,HKD,HUF,INR,JPY,MYR,MXN,NZD,NOK,PHP,PLN,RUB,GBP,SGD,SEK,CHF,THB,USD" }
+google_pay = { country = "AU,NZ,JP,HK,SG,MY,TH,VN,BH,AE,KW,BR,ES,GB,SE,NO,SK,AT,NL,DE,HU,CY,LU,CH,BE,FR,DK,RO,HR,LI,MT,SI,GR,PT,IE,CZ,EE,LT,LV,IT,PL,TR,IS,CA,US", currency = "AED,ALL,AMD,ANG,AOA,ARS,AUD,AWG,AZN,BAM,BBD,BDT,BGN,BHD,BMD,BND,BOB,BRL,BSD,BWP,BYN,BZD,CAD,CHF,CLP,CNY,COP,CRC,CUP,CVE,CZK,DJF,DKK,DOP,DZD,EGP,ETB,EUR,FJD,FKP,GBP,GEL,GHS,GIP,GMD,GNF,GTQ,GYD,HKD,HNL,HTG,HUF,IDR,ILS,INR,IQD,JMD,JOD,JPY,KES,KGS,KHR,KMF,KRW,KWD,KYD,KZT,LAK,LBP,LKR,LYD,MAD,MDL,MKD,MMK,MNT,MOP,MRU,MUR,MVR,MWK,MXN,MYR,MZN,NAD,NGN,NIO,NOK,NPR,NZD,OMR,PAB,PEN,PGK,PHP,PKR,PLN,PYG,QAR,RON,RSD,RUB,RWF,SAR,SBD,SCR,SEK,SGD,SHP,SLE,SOS,SRD,STN,SVC,SZL,THB,TND,TOP,TRY,TTD,TWD,TZS,UAH,UGX,USD,UYU,UZS,VES,VND,VUV,WST,XAF,XCD,XOF,XPF,YER,ZAR,ZMW" }
+apple_pay = { country = "AU,NZ,CN,JP,HK,SG,MY,BH,AE,KW,BR,ES,GB,SE,NO,AT,NL,DE,HU,CY,LU,CH,BE,FR,DK,FI,RO,HR,LI,UA,MT,SI,GR,PT,IE,CZ,EE,LT,LV,IT,PL,IS,CA,US", currency = "AUD,CHF,CAD,EUR,GBP,HKD,SGD,USD" }
+paypal = { country = "AU,NZ,CN,JP,HK,MY,TH,KR,PH,ID,AE,KW,BR,ES,GB,SE,NO,SK,AT,NL,DE,HU,CY,LU,CH,BE,FR,DK,FI,RO,HR,UA,MT,SI,GI,PT,IE,CZ,EE,LT,LV,IT,PL,IS,CA,US", currency = "AUD,BRL,CAD,CZK,DKK,EUR,HKD,HUF,INR,JPY,MYR,MXN,NZD,NOK,PHP,PLN,RUB,GBP,SGD,SEK,CHF,THB,USD" }
 mobile_pay = { country = "DK,FI", currency = "DKK,SEK,NOK,EUR" }
-ali_pay = { country = "AU,N,JP,HK,SG,MY,TH,ES,UK,SE,NO,AT,NL,DE,CY,CH,BE,FR,DK,FI,RO,MT,SI,GR,PT,IE,IT,CA,US", currency = "USD,EUR,GBP,JPY,AUD,SGD,CHF,SEK,NOK,NZD,THB,HKD,CAD" }
-we_chat_pay = { country = "AU,NZ,CN,JP,HK,SG,ES,UK,SE,NO,AT,NL,DE,CY,CH,BE,FR,DK,LI,MT,SI,GR,PT,IT,CA,US", currency = "AUD,CAD,CNY,EUR,GBP,HKD,JPY,NZD,SGD,USD" }
+ali_pay = { country = "AU,JP,HK,SG,MY,TH,ES,GB,SE,NO,AT,NL,DE,CY,CH,BE,FR,DK,FI,RO,MT,SI,GR,PT,IE,IT,CA,US", currency = "USD,EUR,GBP,JPY,AUD,SGD,CHF,SEK,NOK,NZD,THB,HKD,CAD" }
+we_chat_pay = { country = "AU,NZ,CN,JP,HK,SG,ES,GB,SE,NO,AT,NL,DE,CY,CH,BE,FR,DK,LI,MT,SI,GR,PT,IT,CA,US", currency = "AUD,CAD,CNY,EUR,GBP,HKD,JPY,NZD,SGD,USD" }
 mb_way = { country = "PT", currency = "EUR" }
-klarna = { country = "AT,ES,UK,SE,NO,AT,NL,DE,CH,BE,FR,DK,FI,PT,IE,IT,PL,CA,US", currency = "USD,GBP,EUR,CHF,DKK,SEK,NOK,AUD,PLN,CAD" }
+klarna = { country = "AT,ES,GB,SE,NO,AT,NL,DE,CH,BE,FR,DK,FI,PT,IE,IT,PL,CA,US", currency = "USD,GBP,EUR,CHF,DKK,SEK,NOK,AUD,PLN,CAD" }
 affirm = { country = "US", currency = "USD" }
-afterpay_clearpay = { country = "AU,NZ,ES,UK,FR,IT,CA,US", currency = "GBP" }
+afterpay_clearpay = { country = "AU,NZ,ES,GB,FR,IT,CA,US", currency = "GBP" }
 pay_bright = { country = "CA", currency = "CAD" }
 walley = { country = "SE,NO,DK,FI", currency = "DKK,EUR,NOK,SEK" }
 giropay = { country = "DE", currency = "EUR" }
 eps = { country = "AT", currency = "EUR" }
-sofort = { country = "ES,UK,SE,AT,NL,DE,CH,BE,FR,FI,IT,PL", currency = "EUR" }
+sofort = { country = "ES,GB,SE,AT,NL,DE,CH,BE,FR,FI,IT,PL", currency = "EUR" }
 ideal = { country = "NL", currency = "EUR" }
 blik = {country = "PL", currency = "PLN"}
-trustly = {country = "ES,UK,SE,NO,AT,NL,DE,DK,FI,EE,LT,LV", currency = "CZK,DKK,EUR,GBP,NOK,SEK"}
+trustly = {country = "ES,GB,SE,NO,AT,NL,DE,DK,FI,EE,LT,LV", currency = "CZK,DKK,EUR,GBP,NOK,SEK"}
 online_banking_czech_republic = {country = "CZ", currency = "EUR,CZK"}
 online_banking_finland = {country = "FI", currency = "EUR"}
 online_banking_poland = {country = "PL", currency = "PLN"}
 online_banking_slovakia = {country = "SK", currency = "EUR,CZK"}
 bancontact_card = {country = "BE", currency = "EUR"}
 ach = {country = "US", currency = "USD"}
-bacs = {country = "UK", currency = "GBP"}
+bacs = {country = "GB", currency = "GBP"}
 sepa = {country = "ES,SK,AT,NL,DE,BE,FR,FI,PT,IE,EE,LT,LV,IT", currency = "EUR"}
 ali_pay_hk = {country = "HK", currency = "HKD"}
 bizum = {country = "ES", currency = "EUR"}
@@ -341,7 +341,7 @@ alfamart = {country = "ID", currency = "IDR"}
 indomaret = {country = "ID", currency = "IDR"}
 open_banking_uk = {country = "GB", currency = "GBP"}
 oxxo = {country = "MX", currency = "MXN"}
-pay_safe_card = {country = "AT,AU,BE,BR,BE,CA,HR,CY,CZ,DK,FI,FR,GE,DE,GI,HU,IS,IE,KW,LV,IE,LI,LT,LU,MT,MX,MD,ME,NL,NZ,NO,PY,PE,PL,PT,RO,SA,RS,SK,SI,ES,SE,CH,TR,UAE,UK,US,UY", currency = "EUR,AUD,BRL,CAD,CZK,DKK,GEL,GIP,HUF,ISK,KWD,CHF,MXN,MDL,NZD,NOK,PYG,PEN,PLN,RON,SAR,RSD,SEK,TRY,AED,GBP,USD,UYU"}
+pay_safe_card = {country = "AT,AU,BE,BR,BE,CA,HR,CY,CZ,DK,FI,FR,GE,DE,GI,HU,IS,IE,KW,LV,IE,LI,LT,LU,MT,MX,MD,ME,NL,NZ,NO,PY,PE,PL,PT,RO,SA,RS,SK,SI,ES,SE,CH,TR,AE,GB,US,UY", currency = "EUR,AUD,BRL,CAD,CZK,DKK,GEL,GIP,HUF,KWD,CHF,MXN,MDL,NZD,NOK,PYG,PEN,PLN,RON,SAR,RSD,SEK,TRY,AED,GBP,USD,UYU"}
 seven_eleven = {country = "JP", currency = "JPY"}
 lawson = {country = "JP", currency = "JPY"}
 mini_stop = {country = "JP", currency = "JPY"}
diff --git a/config/docker_compose.toml b/config/docker_compose.toml
index 8af1528e177..7ad4f6e62ca 100644
--- a/config/docker_compose.toml
+++ b/config/docker_compose.toml
@@ -286,7 +286,7 @@ alfamart = {country = "ID", currency = "IDR"}
 indomaret = {country = "ID", currency = "IDR"}
 open_banking_uk = {country = "GB", currency = "GBP"}
 oxxo = {country = "MX", currency = "MXN"}
-pay_safe_card = {country = "AT,AU,BE,BR,BE,CA,HR,CY,CZ,DK,FI,FR,GE,DE,GI,HU,IS,IE,KW,LV,IE,LI,LT,LU,MT,MX,MD,ME,NL,NZ,NO,PY,PE,PL,PT,RO,SA,RS,SK,SI,ES,SE,CH,TR,UAE,UK,US,UY", currency = "EUR,AUD,BRL,CAD,CZK,DKK,GEL,GIP,HUF,ISK,KWD,CHF,MXN,MDL,NZD,NOK,PYG,PEN,PLN,RON,SAR,RSD,SEK,TRY,AED,GBP,USD,UYU"}
+pay_safe_card = {country = "AT,AU,BE,BR,BE,CA,HR,CY,CZ,DK,FI,FR,GE,DE,GI,HU,IS,IE,KW,LV,IE,LI,LT,LU,MT,MX,MD,ME,NL,NZ,NO,PY,PE,PL,PT,RO,SA,RS,SK,SI,ES,SE,CH,TR,AE,GB,US,UY", currency = "EUR,AUD,BRL,CAD,CZK,DKK,GEL,GIP,HUF,KWD,CHF,MXN,MDL,NZD,NOK,PYG,PEN,PLN,RON,SAR,RSD,SEK,TRY,AED,GBP,USD,UYU"}
 seven_eleven = {country = "JP", currency = "JPY"}
 lawson = {country = "JP", currency = "JPY"}
 mini_stop = {country = "JP", currency = "JPY"}
@@ -322,7 +322,7 @@ debit = { currency = "USD" }
 ach = { currency = "USD" }
 
 [bank_config.online_banking_fpx]
-adyen.banks = "affin_bank,agro_bank,alliance_bank,am_bank,bank_islam,bank_muamalat,bank_rakyat,bank_simpanan_nasional,cimb_bank,hong_leong_bank,hsbc_bank,kuwait_finance_house,may_bank,ocbc_bank,public_bank,rhb_bank,standard_chartered_bank,uob_bank"
+adyen.banks = "affin_bank,agro_bank,alliance_bank,am_bank,bank_islam,bank_muamalat,bank_rakyat,bank_simpanan_nasional,cimb_bank,hong_leong_bank,hsbc_bank,kuwait_finance_house,maybank,ocbc_bank,public_bank,rhb_bank,standard_chartered_bank,uob_bank"
 
 [bank_config.online_banking_thailand]
 adyen.banks = "bangkok_bank,krungsri_bank,krung_thai_bank,the_siam_commercial_bank,kasikorn_bank"
diff --git a/crates/common_enums/src/enums.rs b/crates/common_enums/src/enums.rs
index 949cc2e0034..6cf125be5cd 100644
--- a/crates/common_enums/src/enums.rs
+++ b/crates/common_enums/src/enums.rs
@@ -387,12 +387,15 @@ pub enum Currency {
     ALL,
     AMD,
     ANG,
+    AOA,
     ARS,
     AUD,
     AWG,
     AZN,
+    BAM,
     BBD,
     BDT,
+    BGN,
     BHD,
     BIF,
     BMD,
@@ -401,6 +404,7 @@ pub enum Currency {
     BRL,
     BSD,
     BWP,
+    BYN,
     BZD,
     CAD,
     CHF,
@@ -409,6 +413,7 @@ pub enum Currency {
     COP,
     CRC,
     CUP,
+    CVE,
     CZK,
     DJF,
     DKK,
@@ -418,7 +423,9 @@ pub enum Currency {
     ETB,
     EUR,
     FJD,
+    FKP,
     GBP,
+    GEL,
     GHS,
     GIP,
     GMD,
@@ -433,6 +440,7 @@ pub enum Currency {
     IDR,
     ILS,
     INR,
+    IQD,
     JMD,
     JOD,
     JPY,
@@ -449,6 +457,7 @@ pub enum Currency {
     LKR,
     LRD,
     LSL,
+    LYD,
     MAD,
     MDL,
     MGA,
@@ -456,11 +465,13 @@ pub enum Currency {
     MMK,
     MNT,
     MOP,
+    MRU,
     MUR,
     MVR,
     MWK,
     MXN,
     MYR,
+    MZN,
     NAD,
     NGN,
     NIO,
@@ -468,6 +479,7 @@ pub enum Currency {
     NPR,
     NZD,
     OMR,
+    PAB,
     PEN,
     PGK,
     PHP,
@@ -476,34 +488,47 @@ pub enum Currency {
     PYG,
     QAR,
     RON,
+    RSD,
     RUB,
     RWF,
     SAR,
+    SBD,
     SCR,
     SEK,
     SGD,
+    SHP,
+    SLE,
     SLL,
     SOS,
+    SRD,
     SSP,
+    STN,
     SVC,
     SZL,
     THB,
+    TND,
+    TOP,
     TRY,
     TTD,
     TWD,
     TZS,
+    UAH,
     UGX,
     #[default]
     USD,
     UYU,
     UZS,
+    VES,
     VND,
     VUV,
+    WST,
     XAF,
+    XCD,
     XOF,
     XPF,
     YER,
     ZAR,
+    ZMW,
 }
 
 impl Currency {
@@ -560,12 +585,15 @@ impl Currency {
             Self::ALL => "008",
             Self::AMD => "051",
             Self::ANG => "532",
+            Self::AOA => "973",
             Self::ARS => "032",
             Self::AUD => "036",
             Self::AWG => "533",
             Self::AZN => "944",
+            Self::BAM => "977",
             Self::BBD => "052",
             Self::BDT => "050",
+            Self::BGN => "975",
             Self::BHD => "048",
             Self::BIF => "108",
             Self::BMD => "060",
@@ -574,6 +602,7 @@ impl Currency {
             Self::BRL => "986",
             Self::BSD => "044",
             Self::BWP => "072",
+            Self::BYN => "933",
             Self::BZD => "084",
             Self::CAD => "124",
             Self::CHF => "756",
@@ -581,6 +610,7 @@ impl Currency {
             Self::COP => "170",
             Self::CRC => "188",
             Self::CUP => "192",
+            Self::CVE => "132",
             Self::CZK => "203",
             Self::DJF => "262",
             Self::DKK => "208",
@@ -590,7 +620,9 @@ impl Currency {
             Self::ETB => "230",
             Self::EUR => "978",
             Self::FJD => "242",
+            Self::FKP => "238",
             Self::GBP => "826",
+            Self::GEL => "981",
             Self::GHS => "936",
             Self::GIP => "292",
             Self::GMD => "270",
@@ -605,6 +637,7 @@ impl Currency {
             Self::IDR => "360",
             Self::ILS => "376",
             Self::INR => "356",
+            Self::IQD => "368",
             Self::JMD => "388",
             Self::JOD => "400",
             Self::JPY => "392",
@@ -621,6 +654,7 @@ impl Currency {
             Self::LKR => "144",
             Self::LRD => "430",
             Self::LSL => "426",
+            Self::LYD => "434",
             Self::MAD => "504",
             Self::MDL => "498",
             Self::MGA => "969",
@@ -628,11 +662,13 @@ impl Currency {
             Self::MMK => "104",
             Self::MNT => "496",
             Self::MOP => "446",
+            Self::MRU => "929",
             Self::MUR => "480",
             Self::MVR => "462",
             Self::MWK => "454",
             Self::MXN => "484",
             Self::MYR => "458",
+            Self::MZN => "943",
             Self::NAD => "516",
             Self::NGN => "566",
             Self::NIO => "558",
@@ -640,6 +676,7 @@ impl Currency {
             Self::NPR => "524",
             Self::NZD => "554",
             Self::OMR => "512",
+            Self::PAB => "590",
             Self::PEN => "604",
             Self::PGK => "598",
             Self::PHP => "608",
@@ -649,33 +686,46 @@ impl Currency {
             Self::QAR => "634",
             Self::RON => "946",
             Self::CNY => "156",
+            Self::RSD => "941",
             Self::RUB => "643",
             Self::RWF => "646",
             Self::SAR => "682",
+            Self::SBD => "090",
             Self::SCR => "690",
             Self::SEK => "752",
             Self::SGD => "702",
+            Self::SHP => "654",
+            Self::SLE => "925",
             Self::SLL => "694",
             Self::SOS => "706",
+            Self::SRD => "968",
             Self::SSP => "728",
+            Self::STN => "930",
             Self::SVC => "222",
             Self::SZL => "748",
             Self::THB => "764",
+            Self::TND => "788",
+            Self::TOP => "776",
             Self::TRY => "949",
             Self::TTD => "780",
             Self::TWD => "901",
             Self::TZS => "834",
+            Self::UAH => "980",
             Self::UGX => "800",
             Self::USD => "840",
             Self::UYU => "858",
             Self::UZS => "860",
+            Self::VES => "928",
             Self::VND => "704",
             Self::VUV => "548",
+            Self::WST => "882",
             Self::XAF => "950",
+            Self::XCD => "951",
             Self::XOF => "952",
             Self::XPF => "953",
             Self::YER => "886",
             Self::ZAR => "710",
+            Self::ZMW => "967",
         }
     }
 
@@ -701,12 +751,15 @@ impl Currency {
             | Self::ALL
             | Self::AMD
             | Self::ANG
+            | Self::AOA
             | Self::ARS
             | Self::AUD
             | Self::AWG
             | Self::AZN
+            | Self::BAM
             | Self::BBD
             | Self::BDT
+            | Self::BGN
             | Self::BHD
             | Self::BMD
             | Self::BND
@@ -714,6 +767,7 @@ impl Currency {
             | Self::BRL
             | Self::BSD
             | Self::BWP
+            | Self::BYN
             | Self::BZD
             | Self::CAD
             | Self::CHF
@@ -721,6 +775,7 @@ impl Currency {
             | Self::COP
             | Self::CRC
             | Self::CUP
+            | Self::CVE
             | Self::CZK
             | Self::DKK
             | Self::DOP
@@ -729,7 +784,9 @@ impl Currency {
             | Self::ETB
             | Self::EUR
             | Self::FJD
+            | Self::FKP
             | Self::GBP
+            | Self::GEL
             | Self::GHS
             | Self::GIP
             | Self::GMD
@@ -743,6 +800,7 @@ impl Currency {
             | Self::IDR
             | Self::ILS
             | Self::INR
+            | Self::IQD
             | Self::JMD
             | Self::JOD
             | Self::KES
@@ -756,17 +814,20 @@ impl Currency {
             | Self::LKR
             | Self::LRD
             | Self::LSL
+            | Self::LYD
             | Self::MAD
             | Self::MDL
             | Self::MKD
             | Self::MMK
             | Self::MNT
             | Self::MOP
+            | Self::MRU
             | Self::MUR
             | Self::MVR
             | Self::MWK
             | Self::MXN
             | Self::MYR
+            | Self::MZN
             | Self::NAD
             | Self::NGN
             | Self::NIO
@@ -774,6 +835,7 @@ impl Currency {
             | Self::NPR
             | Self::NZD
             | Self::OMR
+            | Self::PAB
             | Self::PEN
             | Self::PGK
             | Self::PHP
@@ -781,42 +843,60 @@ impl Currency {
             | Self::PLN
             | Self::QAR
             | Self::RON
+            | Self::RSD
             | Self::RUB
             | Self::SAR
+            | Self::SBD
             | Self::SCR
             | Self::SEK
             | Self::SGD
+            | Self::SHP
+            | Self::SLE
             | Self::SLL
             | Self::SOS
+            | Self::SRD
             | Self::SSP
+            | Self::STN
             | Self::SVC
             | Self::SZL
             | Self::THB
+            | Self::TND
+            | Self::TOP
             | Self::TRY
             | Self::TTD
             | Self::TWD
             | Self::TZS
+            | Self::UAH
             | Self::USD
             | Self::UYU
             | Self::UZS
+            | Self::VES
+            | Self::WST
+            | Self::XCD
             | Self::YER
-            | Self::ZAR => false,
+            | Self::ZAR
+            | Self::ZMW => false,
         }
     }
 
     pub fn is_three_decimal_currency(self) -> bool {
         match self {
-            Self::BHD | Self::JOD | Self::KWD | Self::OMR => true,
+            Self::BHD | Self::IQD | Self::JOD | Self::KWD | Self::LYD | Self::OMR | Self::TND => {
+                true
+            }
             Self::AED
             | Self::ALL
             | Self::AMD
+            | Self::AOA
             | Self::ANG
             | Self::ARS
             | Self::AUD
             | Self::AWG
             | Self::AZN
+            | Self::BAM
             | Self::BBD
             | Self::BDT
+            | Self::BGN
             | Self::BIF
             | Self::BMD
             | Self::BND
@@ -824,6 +904,7 @@ impl Currency {
             | Self::BRL
             | Self::BSD
             | Self::BWP
+            | Self::BYN
             | Self::BZD
             | Self::CAD
             | Self::CHF
@@ -832,6 +913,7 @@ impl Currency {
             | Self::COP
             | Self::CRC
             | Self::CUP
+            | Self::CVE
             | Self::CZK
             | Self::DJF
             | Self::DKK
@@ -841,7 +923,9 @@ impl Currency {
             | Self::ETB
             | Self::EUR
             | Self::FJD
+            | Self::FKP
             | Self::GBP
+            | Self::GEL
             | Self::GHS
             | Self::GIP
             | Self::GMD
@@ -877,17 +961,20 @@ impl Currency {
             | Self::MMK
             | Self::MNT
             | Self::MOP
+            | Self::MRU
             | Self::MUR
             | Self::MVR
             | Self::MWK
             | Self::MXN
             | Self::MYR
+            | Self::MZN
             | Self::NAD
             | Self::NGN
             | Self::NIO
             | Self::NOK
             | Self::NPR
             | Self::NZD
+            | Self::PAB
             | Self::PEN
             | Self::PGK
             | Self::PHP
@@ -896,33 +983,45 @@ impl Currency {
             | Self::PYG
             | Self::QAR
             | Self::RON
+            | Self::RSD
             | Self::RUB
             | Self::RWF
             | Self::SAR
+            | Self::SBD
             | Self::SCR
             | Self::SEK
             | Self::SGD
+            | Self::SHP
+            | Self::SLE
             | Self::SLL
             | Self::SOS
+            | Self::SRD
             | Self::SSP
+            | Self::STN
             | Self::SVC
             | Self::SZL
             | Self::THB
+            | Self::TOP
             | Self::TRY
             | Self::TTD
             | Self::TWD
             | Self::TZS
+            | Self::UAH
             | Self::UGX
             | Self::USD
             | Self::UYU
             | Self::UZS
+            | Self::VES
             | Self::VND
             | Self::VUV
+            | Self::WST
             | Self::XAF
+            | Self::XCD
             | Self::XPF
             | Self::XOF
             | Self::YER
-            | Self::ZAR => false,
+            | Self::ZAR
+            | Self::ZMW => false,
         }
     }
 }
diff --git a/crates/currency_conversion/Cargo.toml b/crates/currency_conversion/Cargo.toml
index d84956fe2f7..d2c99080bf6 100644
--- a/crates/currency_conversion/Cargo.toml
+++ b/crates/currency_conversion/Cargo.toml
@@ -11,6 +11,6 @@ common_enums = { version = "0.1.0", path = "../common_enums", package = "common_
 
 # Third party crates
 rust_decimal = "1.29"
-rusty-money = { version = "0.4.0", features = ["iso", "crypto"] }
+rusty-money = { git = "https://github.com/varunsrin/rusty_money", rev = "bbc0150742a0fff905225ff11ee09388e9babdcc", features = ["iso", "crypto"] }
 serde = { version = "1.0.193", features = ["derive"] }
 thiserror = "1.0.43"
diff --git a/crates/currency_conversion/src/types.rs b/crates/currency_conversion/src/types.rs
index fec25b9fc60..a84520dca0a 100644
--- a/crates/currency_conversion/src/types.rs
+++ b/crates/currency_conversion/src/types.rs
@@ -81,12 +81,15 @@ pub fn currency_match(currency: Currency) -> &'static iso::Currency {
         Currency::ALL => iso::ALL,
         Currency::AMD => iso::AMD,
         Currency::ANG => iso::ANG,
+        Currency::AOA => iso::AOA,
         Currency::ARS => iso::ARS,
         Currency::AUD => iso::AUD,
         Currency::AWG => iso::AWG,
         Currency::AZN => iso::AZN,
+        Currency::BAM => iso::BAM,
         Currency::BBD => iso::BBD,
         Currency::BDT => iso::BDT,
+        Currency::BGN => iso::BGN,
         Currency::BHD => iso::BHD,
         Currency::BIF => iso::BIF,
         Currency::BMD => iso::BMD,
@@ -95,6 +98,7 @@ pub fn currency_match(currency: Currency) -> &'static iso::Currency {
         Currency::BRL => iso::BRL,
         Currency::BSD => iso::BSD,
         Currency::BWP => iso::BWP,
+        Currency::BYN => iso::BYN,
         Currency::BZD => iso::BZD,
         Currency::CAD => iso::CAD,
         Currency::CHF => iso::CHF,
@@ -103,6 +107,7 @@ pub fn currency_match(currency: Currency) -> &'static iso::Currency {
         Currency::COP => iso::COP,
         Currency::CRC => iso::CRC,
         Currency::CUP => iso::CUP,
+        Currency::CVE => iso::CVE,
         Currency::CZK => iso::CZK,
         Currency::DJF => iso::DJF,
         Currency::DKK => iso::DKK,
@@ -112,7 +117,9 @@ pub fn currency_match(currency: Currency) -> &'static iso::Currency {
         Currency::ETB => iso::ETB,
         Currency::EUR => iso::EUR,
         Currency::FJD => iso::FJD,
+        Currency::FKP => iso::FKP,
         Currency::GBP => iso::GBP,
+        Currency::GEL => iso::GEL,
         Currency::GHS => iso::GHS,
         Currency::GIP => iso::GIP,
         Currency::GMD => iso::GMD,
@@ -127,6 +134,7 @@ pub fn currency_match(currency: Currency) -> &'static iso::Currency {
         Currency::IDR => iso::IDR,
         Currency::ILS => iso::ILS,
         Currency::INR => iso::INR,
+        Currency::IQD => iso::IQD,
         Currency::JMD => iso::JMD,
         Currency::JOD => iso::JOD,
         Currency::JPY => iso::JPY,
@@ -143,6 +151,7 @@ pub fn currency_match(currency: Currency) -> &'static iso::Currency {
         Currency::LKR => iso::LKR,
         Currency::LRD => iso::LRD,
         Currency::LSL => iso::LSL,
+        Currency::LYD => iso::LYD,
         Currency::MAD => iso::MAD,
         Currency::MDL => iso::MDL,
         Currency::MGA => iso::MGA,
@@ -150,11 +159,13 @@ pub fn currency_match(currency: Currency) -> &'static iso::Currency {
         Currency::MMK => iso::MMK,
         Currency::MNT => iso::MNT,
         Currency::MOP => iso::MOP,
+        Currency::MRU => iso::MRU,
         Currency::MUR => iso::MUR,
         Currency::MVR => iso::MVR,
         Currency::MWK => iso::MWK,
         Currency::MXN => iso::MXN,
         Currency::MYR => iso::MYR,
+        Currency::MZN => iso::MZN,
         Currency::NAD => iso::NAD,
         Currency::NGN => iso::NGN,
         Currency::NIO => iso::NIO,
@@ -162,6 +173,7 @@ pub fn currency_match(currency: Currency) -> &'static iso::Currency {
         Currency::NPR => iso::NPR,
         Currency::NZD => iso::NZD,
         Currency::OMR => iso::OMR,
+        Currency::PAB => iso::PAB,
         Currency::PEN => iso::PEN,
         Currency::PGK => iso::PGK,
         Currency::PHP => iso::PHP,
@@ -170,32 +182,45 @@ pub fn currency_match(currency: Currency) -> &'static iso::Currency {
         Currency::PYG => iso::PYG,
         Currency::QAR => iso::QAR,
         Currency::RON => iso::RON,
+        Currency::RSD => iso::RSD,
         Currency::RUB => iso::RUB,
         Currency::RWF => iso::RWF,
         Currency::SAR => iso::SAR,
+        Currency::SBD => iso::SBD,
         Currency::SCR => iso::SCR,
         Currency::SEK => iso::SEK,
         Currency::SGD => iso::SGD,
+        Currency::SHP => iso::SHP,
+        Currency::SLE => iso::SLE,
         Currency::SLL => iso::SLL,
         Currency::SOS => iso::SOS,
+        Currency::SRD => iso::SRD,
         Currency::SSP => iso::SSP,
+        Currency::STN => iso::STN,
         Currency::SVC => iso::SVC,
         Currency::SZL => iso::SZL,
         Currency::THB => iso::THB,
+        Currency::TND => iso::TND,
+        Currency::TOP => iso::TOP,
         Currency::TTD => iso::TTD,
         Currency::TRY => iso::TRY,
         Currency::TWD => iso::TWD,
         Currency::TZS => iso::TZS,
+        Currency::UAH => iso::UAH,
         Currency::UGX => iso::UGX,
         Currency::USD => iso::USD,
         Currency::UYU => iso::UYU,
         Currency::UZS => iso::UZS,
+        Currency::VES => iso::VES,
         Currency::VND => iso::VND,
         Currency::VUV => iso::VUV,
+        Currency::WST => iso::WST,
         Currency::XAF => iso::XAF,
+        Currency::XCD => iso::XCD,
         Currency::XOF => iso::XOF,
         Currency::XPF => iso::XPF,
         Currency::YER => iso::YER,
         Currency::ZAR => iso::ZAR,
+        Currency::ZMW => iso::ZMW,
     }
 }
diff --git a/crates/kgraph_utils/src/transformers.rs b/crates/kgraph_utils/src/transformers.rs
index b1636418aa1..5bcb64fd875 100644
--- a/crates/kgraph_utils/src/transformers.rs
+++ b/crates/kgraph_utils/src/transformers.rs
@@ -312,12 +312,15 @@ impl IntoDirValue for api_enums::Currency {
             Self::ALL => Ok(dirval!(PaymentCurrency = ALL)),
             Self::AMD => Ok(dirval!(PaymentCurrency = AMD)),
             Self::ANG => Ok(dirval!(PaymentCurrency = ANG)),
+            Self::AOA => Ok(dirval!(PaymentCurrency = AOA)),
             Self::ARS => Ok(dirval!(PaymentCurrency = ARS)),
             Self::AUD => Ok(dirval!(PaymentCurrency = AUD)),
             Self::AWG => Ok(dirval!(PaymentCurrency = AWG)),
             Self::AZN => Ok(dirval!(PaymentCurrency = AZN)),
+            Self::BAM => Ok(dirval!(PaymentCurrency = BAM)),
             Self::BBD => Ok(dirval!(PaymentCurrency = BBD)),
             Self::BDT => Ok(dirval!(PaymentCurrency = BDT)),
+            Self::BGN => Ok(dirval!(PaymentCurrency = BGN)),
             Self::BHD => Ok(dirval!(PaymentCurrency = BHD)),
             Self::BIF => Ok(dirval!(PaymentCurrency = BIF)),
             Self::BMD => Ok(dirval!(PaymentCurrency = BMD)),
@@ -326,6 +329,7 @@ impl IntoDirValue for api_enums::Currency {
             Self::BRL => Ok(dirval!(PaymentCurrency = BRL)),
             Self::BSD => Ok(dirval!(PaymentCurrency = BSD)),
             Self::BWP => Ok(dirval!(PaymentCurrency = BWP)),
+            Self::BYN => Ok(dirval!(PaymentCurrency = BYN)),
             Self::BZD => Ok(dirval!(PaymentCurrency = BZD)),
             Self::CAD => Ok(dirval!(PaymentCurrency = CAD)),
             Self::CHF => Ok(dirval!(PaymentCurrency = CHF)),
@@ -334,6 +338,7 @@ impl IntoDirValue for api_enums::Currency {
             Self::COP => Ok(dirval!(PaymentCurrency = COP)),
             Self::CRC => Ok(dirval!(PaymentCurrency = CRC)),
             Self::CUP => Ok(dirval!(PaymentCurrency = CUP)),
+            Self::CVE => Ok(dirval!(PaymentCurrency = CVE)),
             Self::CZK => Ok(dirval!(PaymentCurrency = CZK)),
             Self::DJF => Ok(dirval!(PaymentCurrency = DJF)),
             Self::DKK => Ok(dirval!(PaymentCurrency = DKK)),
@@ -343,7 +348,9 @@ impl IntoDirValue for api_enums::Currency {
             Self::ETB => Ok(dirval!(PaymentCurrency = ETB)),
             Self::EUR => Ok(dirval!(PaymentCurrency = EUR)),
             Self::FJD => Ok(dirval!(PaymentCurrency = FJD)),
+            Self::FKP => Ok(dirval!(PaymentCurrency = FKP)),
             Self::GBP => Ok(dirval!(PaymentCurrency = GBP)),
+            Self::GEL => Ok(dirval!(PaymentCurrency = GEL)),
             Self::GHS => Ok(dirval!(PaymentCurrency = GHS)),
             Self::GIP => Ok(dirval!(PaymentCurrency = GIP)),
             Self::GMD => Ok(dirval!(PaymentCurrency = GMD)),
@@ -358,6 +365,7 @@ impl IntoDirValue for api_enums::Currency {
             Self::IDR => Ok(dirval!(PaymentCurrency = IDR)),
             Self::ILS => Ok(dirval!(PaymentCurrency = ILS)),
             Self::INR => Ok(dirval!(PaymentCurrency = INR)),
+            Self::IQD => Ok(dirval!(PaymentCurrency = IQD)),
             Self::JMD => Ok(dirval!(PaymentCurrency = JMD)),
             Self::JOD => Ok(dirval!(PaymentCurrency = JOD)),
             Self::JPY => Ok(dirval!(PaymentCurrency = JPY)),
@@ -374,6 +382,7 @@ impl IntoDirValue for api_enums::Currency {
             Self::LKR => Ok(dirval!(PaymentCurrency = LKR)),
             Self::LRD => Ok(dirval!(PaymentCurrency = LRD)),
             Self::LSL => Ok(dirval!(PaymentCurrency = LSL)),
+            Self::LYD => Ok(dirval!(PaymentCurrency = LYD)),
             Self::MAD => Ok(dirval!(PaymentCurrency = MAD)),
             Self::MDL => Ok(dirval!(PaymentCurrency = MDL)),
             Self::MGA => Ok(dirval!(PaymentCurrency = MGA)),
@@ -381,11 +390,13 @@ impl IntoDirValue for api_enums::Currency {
             Self::MMK => Ok(dirval!(PaymentCurrency = MMK)),
             Self::MNT => Ok(dirval!(PaymentCurrency = MNT)),
             Self::MOP => Ok(dirval!(PaymentCurrency = MOP)),
+            Self::MRU => Ok(dirval!(PaymentCurrency = MRU)),
             Self::MUR => Ok(dirval!(PaymentCurrency = MUR)),
             Self::MVR => Ok(dirval!(PaymentCurrency = MVR)),
             Self::MWK => Ok(dirval!(PaymentCurrency = MWK)),
             Self::MXN => Ok(dirval!(PaymentCurrency = MXN)),
             Self::MYR => Ok(dirval!(PaymentCurrency = MYR)),
+            Self::MZN => Ok(dirval!(PaymentCurrency = MZN)),
             Self::NAD => Ok(dirval!(PaymentCurrency = NAD)),
             Self::NGN => Ok(dirval!(PaymentCurrency = NGN)),
             Self::NIO => Ok(dirval!(PaymentCurrency = NIO)),
@@ -393,6 +404,7 @@ impl IntoDirValue for api_enums::Currency {
             Self::NPR => Ok(dirval!(PaymentCurrency = NPR)),
             Self::NZD => Ok(dirval!(PaymentCurrency = NZD)),
             Self::OMR => Ok(dirval!(PaymentCurrency = OMR)),
+            Self::PAB => Ok(dirval!(PaymentCurrency = PAB)),
             Self::PEN => Ok(dirval!(PaymentCurrency = PEN)),
             Self::PGK => Ok(dirval!(PaymentCurrency = PGK)),
             Self::PHP => Ok(dirval!(PaymentCurrency = PHP)),
@@ -401,33 +413,46 @@ impl IntoDirValue for api_enums::Currency {
             Self::PYG => Ok(dirval!(PaymentCurrency = PYG)),
             Self::QAR => Ok(dirval!(PaymentCurrency = QAR)),
             Self::RON => Ok(dirval!(PaymentCurrency = RON)),
+            Self::RSD => Ok(dirval!(PaymentCurrency = RSD)),
             Self::RUB => Ok(dirval!(PaymentCurrency = RUB)),
             Self::RWF => Ok(dirval!(PaymentCurrency = RWF)),
             Self::SAR => Ok(dirval!(PaymentCurrency = SAR)),
+            Self::SBD => Ok(dirval!(PaymentCurrency = SBD)),
             Self::SCR => Ok(dirval!(PaymentCurrency = SCR)),
             Self::SEK => Ok(dirval!(PaymentCurrency = SEK)),
             Self::SGD => Ok(dirval!(PaymentCurrency = SGD)),
+            Self::SHP => Ok(dirval!(PaymentCurrency = SHP)),
+            Self::SLE => Ok(dirval!(PaymentCurrency = SLE)),
             Self::SLL => Ok(dirval!(PaymentCurrency = SLL)),
             Self::SOS => Ok(dirval!(PaymentCurrency = SOS)),
+            Self::SRD => Ok(dirval!(PaymentCurrency = SRD)),
             Self::SSP => Ok(dirval!(PaymentCurrency = SSP)),
+            Self::STN => Ok(dirval!(PaymentCurrency = STN)),
             Self::SVC => Ok(dirval!(PaymentCurrency = SVC)),
             Self::SZL => Ok(dirval!(PaymentCurrency = SZL)),
             Self::THB => Ok(dirval!(PaymentCurrency = THB)),
+            Self::TND => Ok(dirval!(PaymentCurrency = TND)),
+            Self::TOP => Ok(dirval!(PaymentCurrency = TOP)),
             Self::TRY => Ok(dirval!(PaymentCurrency = TRY)),
             Self::TTD => Ok(dirval!(PaymentCurrency = TTD)),
             Self::TWD => Ok(dirval!(PaymentCurrency = TWD)),
             Self::TZS => Ok(dirval!(PaymentCurrency = TZS)),
+            Self::UAH => Ok(dirval!(PaymentCurrency = UAH)),
             Self::UGX => Ok(dirval!(PaymentCurrency = UGX)),
             Self::USD => Ok(dirval!(PaymentCurrency = USD)),
             Self::UYU => Ok(dirval!(PaymentCurrency = UYU)),
             Self::UZS => Ok(dirval!(PaymentCurrency = UZS)),
+            Self::VES => Ok(dirval!(PaymentCurrency = VES)),
             Self::VND => Ok(dirval!(PaymentCurrency = VND)),
             Self::VUV => Ok(dirval!(PaymentCurrency = VUV)),
+            Self::WST => Ok(dirval!(PaymentCurrency = WST)),
             Self::XAF => Ok(dirval!(PaymentCurrency = XAF)),
+            Self::XCD => Ok(dirval!(PaymentCurrency = XCD)),
             Self::XOF => Ok(dirval!(PaymentCurrency = XOF)),
             Self::XPF => Ok(dirval!(PaymentCurrency = XPF)),
             Self::YER => Ok(dirval!(PaymentCurrency = YER)),
             Self::ZAR => Ok(dirval!(PaymentCurrency = ZAR)),
+            Self::ZMW => Ok(dirval!(PaymentCurrency = ZMW)),
         }
     }
 }
diff --git a/crates/router/src/configs/settings.rs b/crates/router/src/configs/settings.rs
index 3c1d9f7d397..f186af60a9b 100644
--- a/crates/router/src/configs/settings.rs
+++ b/crates/router/src/configs/settings.rs
@@ -1,7 +1,6 @@
 use std::{
     collections::{HashMap, HashSet},
     path::PathBuf,
-    str::FromStr,
 };
 
 #[cfg(feature = "olap")]
@@ -19,7 +18,7 @@ use redis_interface::RedisSettings;
 pub use router_env::config::{Log, LogConsole, LogFile, LogTelemetry};
 use rust_decimal::Decimal;
 use scheduler::SchedulerSettings;
-use serde::{de::Error, Deserialize, Deserializer};
+use serde::Deserialize;
 use storage_impl::config::QueueStrategy;
 
 #[cfg(feature = "olap")]
@@ -191,7 +190,7 @@ pub struct ApplepayMerchantConfigs {
 
 #[derive(Debug, Deserialize, Clone, Default)]
 pub struct MultipleApiVersionSupportedConnectors {
-    #[serde(deserialize_with = "connector_deser")]
+    #[serde(deserialize_with = "deserialize_hashset")]
     pub supported_connectors: HashSet<api_models::enums::Connector>,
 }
 
@@ -205,42 +204,13 @@ pub struct TempLockerEnableConfig(pub HashMap<String, TempLockerEnablePaymentMet
 
 #[derive(Debug, Deserialize, Clone, Default)]
 pub struct ConnectorCustomer {
-    #[serde(deserialize_with = "connector_deser")]
+    #[serde(deserialize_with = "deserialize_hashset")]
     pub connector_list: HashSet<api_models::enums::Connector>,
     #[cfg(feature = "payouts")]
-    #[serde(deserialize_with = "payout_connector_deser")]
+    #[serde(deserialize_with = "deserialize_hashset")]
     pub payout_connector_list: HashSet<api_models::enums::PayoutConnectors>,
 }
 
-fn connector_deser<'a, D>(
-    deserializer: D,
-) -> Result<HashSet<api_models::enums::Connector>, D::Error>
-where
-    D: Deserializer<'a>,
-{
-    let value = <String>::deserialize(deserializer)?;
-    Ok(value
-        .trim()
-        .split(',')
-        .flat_map(api_models::enums::Connector::from_str)
-        .collect())
-}
-
-#[cfg(feature = "payouts")]
-fn payout_connector_deser<'a, D>(
-    deserializer: D,
-) -> Result<HashSet<api_models::enums::PayoutConnectors>, D::Error>
-where
-    D: Deserializer<'a>,
-{
-    let value = <String>::deserialize(deserializer)?;
-    Ok(value
-        .trim()
-        .split(',')
-        .flat_map(api_models::enums::PayoutConnectors::from_str)
-        .collect())
-}
-
 #[cfg(feature = "dummy_connector")]
 #[derive(Debug, Deserialize, Clone, Default)]
 pub struct DummyConnector {
@@ -281,13 +251,13 @@ pub struct SupportedPaymentMethodTypesForMandate(
 
 #[derive(Debug, Deserialize, Clone)]
 pub struct SupportedConnectorsForMandate {
-    #[serde(deserialize_with = "connector_deser")]
+    #[serde(deserialize_with = "deserialize_hashset")]
     pub connector_list: HashSet<api_models::enums::Connector>,
 }
 
 #[derive(Debug, Deserialize, Clone, Default)]
 pub struct PaymentMethodTokenFilter {
-    #[serde(deserialize_with = "pm_deser")]
+    #[serde(deserialize_with = "deserialize_hashset")]
     pub payment_method: HashSet<diesel_models::enums::PaymentMethod>,
     pub payment_method_type: Option<PaymentMethodTypeTokenFilter>,
     pub long_lived_token: bool,
@@ -304,7 +274,7 @@ pub enum ApplePayPreDecryptFlow {
 
 #[derive(Debug, Deserialize, Clone, Default)]
 pub struct TempLockerEnablePaymentMethodFilter {
-    #[serde(deserialize_with = "pm_deser")]
+    #[serde(deserialize_with = "deserialize_hashset")]
     pub payment_method: HashSet<diesel_models::enums::PaymentMethod>,
 }
 
@@ -316,44 +286,14 @@ pub struct TempLockerEnablePaymentMethodFilter {
     rename_all = "snake_case"
 )]
 pub enum PaymentMethodTypeTokenFilter {
-    #[serde(deserialize_with = "pm_type_deser")]
+    #[serde(deserialize_with = "deserialize_hashset")]
     EnableOnly(HashSet<diesel_models::enums::PaymentMethodType>),
-    #[serde(deserialize_with = "pm_type_deser")]
+    #[serde(deserialize_with = "deserialize_hashset")]
     DisableOnly(HashSet<diesel_models::enums::PaymentMethodType>),
     #[default]
     AllAccepted,
 }
 
-fn pm_deser<'a, D>(
-    deserializer: D,
-) -> Result<HashSet<diesel_models::enums::PaymentMethod>, D::Error>
-where
-    D: Deserializer<'a>,
-{
-    let value = <String>::deserialize(deserializer)?;
-    value
-        .trim()
-        .split(',')
-        .map(diesel_models::enums::PaymentMethod::from_str)
-        .collect::<Result<_, _>>()
-        .map_err(D::Error::custom)
-}
-
-fn pm_type_deser<'a, D>(
-    deserializer: D,
-) -> Result<HashSet<diesel_models::enums::PaymentMethodType>, D::Error>
-where
-    D: Deserializer<'a>,
-{
-    let value = <String>::deserialize(deserializer)?;
-    value
-        .trim()
-        .split(',')
-        .map(diesel_models::enums::PaymentMethodType::from_str)
-        .collect::<Result<_, _>>()
-        .map_err(D::Error::custom)
-}
-
 #[derive(Debug, Deserialize, Clone, Default)]
 pub struct BankRedirectConfig(
     pub HashMap<api_models::enums::PaymentMethodType, ConnectorBankNames>,
@@ -363,7 +303,7 @@ pub struct ConnectorBankNames(pub HashMap<String, BanksVector>);
 
 #[derive(Debug, Deserialize, Clone)]
 pub struct BanksVector {
-    #[serde(deserialize_with = "bank_vec_deser")]
+    #[serde(deserialize_with = "deserialize_hashset")]
     pub banks: HashSet<api_models::enums::BankNames>,
 }
 
@@ -385,9 +325,9 @@ pub enum PaymentMethodFilterKey {
 #[derive(Debug, Deserialize, Clone, Default)]
 #[serde(default)]
 pub struct CurrencyCountryFlowFilter {
-    #[serde(deserialize_with = "currency_set_deser")]
+    #[serde(deserialize_with = "deserialize_optional_hashset")]
     pub currency: Option<HashSet<api_models::enums::Currency>>,
-    #[serde(deserialize_with = "string_set_deser")]
+    #[serde(deserialize_with = "deserialize_optional_hashset")]
     pub country: Option<HashSet<api_models::enums::CountryAlpha2>>,
     pub not_available_flows: Option<NotAvailableFlows>,
 }
@@ -416,58 +356,6 @@ pub struct RequiredFieldFinal {
     pub common: HashMap<String, RequiredFieldInfo>,
 }
 
-fn string_set_deser<'a, D>(
-    deserializer: D,
-) -> Result<Option<HashSet<api_models::enums::CountryAlpha2>>, D::Error>
-where
-    D: Deserializer<'a>,
-{
-    let value = <Option<String>>::deserialize(deserializer)?;
-    Ok(value.and_then(|inner| {
-        let list = inner
-            .trim()
-            .split(',')
-            .flat_map(api_models::enums::CountryAlpha2::from_str)
-            .collect::<HashSet<_>>();
-        match list.len() {
-            0 => None,
-            _ => Some(list),
-        }
-    }))
-}
-
-fn currency_set_deser<'a, D>(
-    deserializer: D,
-) -> Result<Option<HashSet<api_models::enums::Currency>>, D::Error>
-where
-    D: Deserializer<'a>,
-{
-    let value = <Option<String>>::deserialize(deserializer)?;
-    Ok(value.and_then(|inner| {
-        let list = inner
-            .trim()
-            .split(',')
-            .flat_map(api_models::enums::Currency::from_str)
-            .collect::<HashSet<_>>();
-        match list.len() {
-            0 => None,
-            _ => Some(list),
-        }
-    }))
-}
-
-fn bank_vec_deser<'a, D>(deserializer: D) -> Result<HashSet<api_models::enums::BankNames>, D::Error>
-where
-    D: Deserializer<'a>,
-{
-    let value = <String>::deserialize(deserializer)?;
-    Ok(value
-        .trim()
-        .split(',')
-        .flat_map(api_models::enums::BankNames::from_str)
-        .collect())
-}
-
 #[derive(Debug, Default, Deserialize, Clone)]
 #[serde(default)]
 pub struct Secrets {
@@ -733,13 +621,13 @@ pub struct FileUploadConfig {
 
 #[derive(Debug, Deserialize, Clone, Default)]
 pub struct DelayedSessionConfig {
-    #[serde(deserialize_with = "deser_to_get_connectors")]
+    #[serde(deserialize_with = "deserialize_hashset")]
     pub connectors_with_delayed_session_response: HashSet<api_models::enums::Connector>,
 }
 
 #[derive(Debug, Deserialize, Clone, Default)]
 pub struct WebhookSourceVerificationCall {
-    #[serde(deserialize_with = "connector_deser")]
+    #[serde(deserialize_with = "deserialize_hashset")]
     pub connectors_with_webhook_source_verification_call: HashSet<api_models::enums::Connector>,
 }
 
@@ -756,21 +644,6 @@ pub struct ConnectorRequestReferenceIdConfig {
     pub merchant_ids_send_payment_id_as_connector_request_id: HashSet<String>,
 }
 
-fn deser_to_get_connectors<'a, D>(
-    deserializer: D,
-) -> Result<HashSet<api_models::enums::Connector>, D::Error>
-where
-    D: Deserializer<'a>,
-{
-    let value = <String>::deserialize(deserializer)?;
-    value
-        .trim()
-        .split(',')
-        .map(api_models::enums::Connector::from_str)
-        .collect::<Result<_, _>>()
-        .map_err(D::Error::custom)
-}
-
 impl Settings {
     pub fn new() -> ApplicationResult<Self> {
         Self::with_config_path(None)
@@ -861,24 +734,6 @@ impl Settings {
     }
 }
 
-#[cfg(test)]
-mod payment_method_deserialization_test {
-    #![allow(clippy::unwrap_used)]
-    use serde::de::{
-        value::{Error as ValueError, StrDeserializer},
-        IntoDeserializer,
-    };
-
-    use super::*;
-
-    #[test]
-    fn test_pm_deserializer() {
-        let deserializer: StrDeserializer<'_, ValueError> = "wallet,card".into_deserializer();
-        let test_pm = pm_deser(deserializer);
-        assert!(test_pm.is_ok())
-    }
-}
-
 #[cfg(feature = "payouts")]
 #[derive(Debug, Deserialize, Clone, Default)]
 pub struct Payouts {
@@ -893,7 +748,7 @@ pub struct LockSettings {
 }
 
 impl<'de> Deserialize<'de> for LockSettings {
-    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
+    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
         #[derive(Deserialize)]
         #[serde(deny_unknown_fields)]
         struct Inner {
@@ -928,3 +783,124 @@ pub struct PayPalOnboarding {
     pub partner_id: masking::Secret<String>,
     pub enabled: bool,
 }
+
+fn deserialize_hashset_inner<T>(value: impl AsRef<str>) -> Result<HashSet<T>, String>
+where
+    T: Eq + std::str::FromStr + std::hash::Hash,
+    <T as std::str::FromStr>::Err: std::fmt::Display,
+{
+    let (values, errors) = value
+        .as_ref()
+        .trim()
+        .split(',')
+        .map(|s| {
+            T::from_str(s.trim()).map_err(|error| {
+                format!(
+                    "Unable to deserialize `{}` as `{}`: {error}",
+                    s.trim(),
+                    std::any::type_name::<T>()
+                )
+            })
+        })
+        .fold(
+            (HashSet::new(), Vec::new()),
+            |(mut values, mut errors), result| match result {
+                Ok(t) => {
+                    values.insert(t);
+                    (values, errors)
+                }
+                Err(error) => {
+                    errors.push(error);
+                    (values, errors)
+                }
+            },
+        );
+    if !errors.is_empty() {
+        Err(format!("Some errors occurred:\n{}", errors.join("\n")))
+    } else {
+        Ok(values)
+    }
+}
+
+fn deserialize_hashset<'a, D, T>(deserializer: D) -> Result<HashSet<T>, D::Error>
+where
+    D: serde::Deserializer<'a>,
+    T: Eq + std::str::FromStr + std::hash::Hash,
+    <T as std::str::FromStr>::Err: std::fmt::Display,
+{
+    use serde::de::Error;
+
+    deserialize_hashset_inner(<String>::deserialize(deserializer)?).map_err(D::Error::custom)
+}
+
+fn deserialize_optional_hashset<'a, D, T>(deserializer: D) -> Result<Option<HashSet<T>>, D::Error>
+where
+    D: serde::Deserializer<'a>,
+    T: Eq + std::str::FromStr + std::hash::Hash,
+    <T as std::str::FromStr>::Err: std::fmt::Display,
+{
+    use serde::de::Error;
+
+    <Option<String>>::deserialize(deserializer).map(|value| {
+        value.map_or(Ok(None), |inner: String| {
+            let list = deserialize_hashset_inner(inner).map_err(D::Error::custom)?;
+            match list.len() {
+                0 => Ok(None),
+                _ => Ok(Some(list)),
+            }
+        })
+    })?
+}
+
+#[cfg(test)]
+mod hashset_deserialization_test {
+    #![allow(clippy::unwrap_used)]
+    use std::collections::HashSet;
+
+    use serde::de::{
+        value::{Error as ValueError, StrDeserializer},
+        IntoDeserializer,
+    };
+
+    use super::deserialize_hashset;
+
+    #[test]
+    fn test_payment_method_hashset_deserializer() {
+        use diesel_models::enums::PaymentMethod;
+
+        let deserializer: StrDeserializer<'_, ValueError> = "wallet,card".into_deserializer();
+        let payment_methods = deserialize_hashset::<'_, _, PaymentMethod>(deserializer);
+        let expected_payment_methods = HashSet::from([PaymentMethod::Wallet, PaymentMethod::Card]);
+
+        assert!(payment_methods.is_ok());
+        assert_eq!(payment_methods.unwrap(), expected_payment_methods);
+    }
+
+    #[test]
+    fn test_payment_method_hashset_deserializer_with_spaces() {
+        use diesel_models::enums::PaymentMethod;
+
+        let deserializer: StrDeserializer<'_, ValueError> =
+            "wallet, card, bank_debit".into_deserializer();
+        let payment_methods = deserialize_hashset::<'_, _, PaymentMethod>(deserializer);
+        let expected_payment_methods = HashSet::from([
+            PaymentMethod::Wallet,
+            PaymentMethod::Card,
+            PaymentMethod::BankDebit,
+        ]);
+
+        assert!(payment_methods.is_ok());
+        assert_eq!(payment_methods.unwrap(), expected_payment_methods);
+    }
+
+    #[test]
+    fn test_payment_method_hashset_deserializer_error() {
+        use diesel_models::enums::PaymentMethod;
+
+        let deserializer: StrDeserializer<'_, ValueError> =
+            "wallet, card, unknown".into_deserializer();
+        let payment_methods = deserialize_hashset::<'_, _, PaymentMethod>(deserializer);
+
+        assert!(payment_methods.is_err());
+    }
+}
diff --git a/openapi/openapi_spec.json b/openapi/openapi_spec.json
index 135ca638109..604a3c5dab3 100644
--- a/openapi/openapi_spec.json
+++ b/openapi/openapi_spec.json
@@ -5062,12 +5062,15 @@
           "ALL",
           "AMD",
           "ANG",
+          "AOA",
           "ARS",
           "AUD",
           "AWG",
           "AZN",
+          "BAM",
           "BBD",
           "BDT",
+          "BGN",
           "BHD",
           "BIF",
           "BMD",
@@ -5076,6 +5079,7 @@
           "BRL",
           "BSD",
           "BWP",
+          "BYN",
           "BZD",
           "CAD",
           "CHF",
@@ -5084,6 +5088,7 @@
           "COP",
           "CRC",
           "CUP",
+          "CVE",
           "CZK",
           "DJF",
           "DKK",
@@ -5093,7 +5098,9 @@
           "ETB",
           "EUR",
           "FJD",
+          "FKP",
           "GBP",
+          "GEL",
           "GHS",
           "GIP",
           "GMD",
@@ -5108,6 +5115,7 @@
           "IDR",
           "ILS",
           "INR",
+          "IQD",
           "JMD",
           "JOD",
           "JPY",
@@ -5124,6 +5132,7 @@
           "LKR",
           "LRD",
           "LSL",
+          "LYD",
           "MAD",
           "MDL",
           "MGA",
@@ -5131,11 +5140,13 @@
           "MMK",
           "MNT",
           "MOP",
+          "MRU",
           "MUR",
           "MVR",
           "MWK",
           "MXN",
           "MYR",
+          "MZN",
           "NAD",
           "NGN",
           "NIO",
@@ -5143,6 +5154,7 @@
           "NPR",
           "NZD",
           "OMR",
+          "PAB",
           "PEN",
           "PGK",
           "PHP",
@@ -5151,33 +5163,46 @@
           "PYG",
           "QAR",
           "RON",
+          "RSD",
           "RUB",
           "RWF",
           "SAR",
+          "SBD",
           "SCR",
           "SEK",
           "SGD",
+          "SHP",
+          "SLE",
           "SLL",
           "SOS",
+          "SRD",
           "SSP",
+          "STN",
           "SVC",
           "SZL",
           "THB",
+          "TND",
+          "TOP",
           "TRY",
           "TTD",
           "TWD",
           "TZS",
+          "UAH",
           "UGX",
           "USD",
           "UYU",
           "UZS",
+          "VES",
           "VND",
           "VUV",
+          "WST",
           "XAF",
+          "XCD",
           "XOF",
           "XPF",
           "YER",
-          "ZAR"
+          "ZAR",
+          "ZMW"
         ]
       },
       "CustomerAcceptance": {

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

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

## Description
<!-- Describe your changes in detail -->
This PR updates the application configuration deserialization logic to use a common generic function to deserialize `HashSet<T>` instead of specific ones. In addition, this PR updates the function to be more lenient in that it allows spaces around the commas for better readability.

## 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).
-->
Closes #3466.

## 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)?
-->
Unit tests:
```shell
cargo test --package router --lib --all-features -- configs::settings::hashset_deserialization_test
```

<img width="800" alt="Screenshot of unit tests run" src="https://github.com/juspay/hyperswitch/assets/22217505/ac1de2b4-f771-44c7-87a9-03e62e8904f6">

Also, ran the application with each of the modified config files to verify that the application is able to correctly deserialize the specified config entries.

## 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
- [ ] I added a [CHANGELOG](/CHANGELOG.md) entry if applicable
