Skip to content

HyperSwitch

API Development

Composable open‑source payments infrastructure that lets businesses assemble only the payment modules they need.

Rust Latest v1.121.2 · 15d ago Security brief →

Features

  • Modular payment suite – pick and integrate just the needed components (Cost Observability, Revenue Recovery, Vault, Intelligent Routing, Reconciliation, Alternate Payment Methods).
  • Vendor‑agnostic routing engine that selects the PSP with the highest predicted auth rate across Stripe, Adyen, Braintree, Worldpay, Checkout.com and 120+ others.
  • PCI‑compliant vault for securely storing cards, tokens, wallets and bank credentials with bring‑your‑own‑vault support.

Recent releases

View all 11 releases →
No immediate action
v1.121.2 Bug fix

Analytics query fix

Review required
v1.123.1 New feature
Auth

Payment method blocking + new wallets

v1.123.0 New feature
Notable features
  • Processing account ID in payload MITs
  • Stripe dispute status mapping fix for correct webhook event handling
  • Config-based UAS eligibility at org and merchant level
Full changelog

1.123.0 (2026-04-13)

Docker Images

  • v1.123.0 (with AWS SES support): docker pull docker.juspay.io/juspaydotin/hyperswitch-router:v1.123.0

  • v1.123.0-standalone (without AWS SES support): docker pull docker.juspay.io/juspaydotin/hyperswitch-router:v1.123.0-standalone

Features

  • connector:
    • Add processing account id in payload MITs (#11578)
    • [Nmi] googlepay decryptedflow with mandates (#11629)
    • [Noon] Add support for configurable region_based_endpoint while creating mca (#11675)
    • Add MIT category mapping for Checkout.com mandate payments (#11731)
  • core:
    • Implement NTID flow for Decrypted Wallet Token and also Implement for checkout connector (#11720)
    • Enable config-based UAS eligibility at org and merchant level (#11729)

Bug Fixes

  • connector:
    • [Worldpayxml] correctly map authenticate_shopper_id and scheme transaction id (#11525)
    • [Adyen] Remove recurringProcessingModel for CIT transactions (#11622)
    • [Adyen] Add Subscription to AdyenRecurringProcessingModel enum (#11605)
  • connectors: [stripe] fix webhook event type mapping (#11687)
  • payload: Update request structure and switch to JSON payload format (#11528)

Refactors

  • connector: [Adyen] [paypal] fix error propogation in webhook flows (#11730)
  • router: Handle dispute webhook validation failure with 4xx response (#11648)

Compatibility

This version of the Hyperswitch App server is compatible with the following versions of the other components:

Database Migration Changes

[!IMPORTANT]
Stripe Dispute Status Mapping Fix

We previously had a bug where incorrect dispute statuses were recorded (e.g., disputes marked as lost instead of opened) due to an incorrect mapping of Stripe's webhook events. This bug has been fixed in this release. Please run the following query to fix existing dispute records. This query uses Stripe's dispute states (stored in the connector_status column of the dispute table) for accurate state handling.

UPDATE dispute
SET dispute_status = CASE 
    WHEN LOWER(connector_status) = 'won' THEN 'dispute_won'
    WHEN LOWER(connector_status) = 'lost' THEN 'dispute_lost'
    WHEN LOWER(connector_status) IN ('needsresponse', 'warningneedsresponse') THEN 'dispute_opened'
    WHEN LOWER(connector_status) IN ('underreview', 'warningunderreview') THEN 'dispute_challenged'
    WHEN LOWER(connector_status) = 'warningclosed' THEN 'dispute_cancelled'
    ELSE dispute_status 
END
WHERE connector = 'stripe';

Configuration Changes

diff --git a/config/deployments/sandbox.toml b/config/deployments/sandbox.toml
index 52dac46bc1..57cd9688e7 100644
--- a/config/deployments/sandbox.toml
+++ b/config/deployments/sandbox.toml
@@ -99,21 +99,21 @@ loonio.base_url = "https://integration.loonio.ca/"
 mifinity.base_url = "https://demo.mifinity.com/"
 mollie.base_url = "https://api.mollie.com/v2/"
 mollie.secondary_base_url = "https://api.cc.mollie.com/v1/"
 moneris.base_url = "https://api.sb.moneris.io"
 mpgs.base_url = "https://test-gateway.mastercard.com"
 multisafepay.base_url = "https://testapi.multisafepay.com/"
 nexinets.base_url = "https://apitest.payengine.de/v1"
 nexixpay.base_url = "https://xpaysandbox.nexigroup.com/api/phoenix-0.0/psp/api/v1"
 nmi.base_url = "https://secure.nmi.com/"
 nomupay.base_url = "https://payout-api.sandbox.nomupay.com"
-noon.base_url = "https://api-test.noonpayments.com/"
+noon.base_url = "https://api-test{{region}}.noonpayments.com/"
 nordea.base_url = "https://api.nordeaopenbanking.com"
 noon.key_mode = "Test"
 novalnet.base_url = "https://payport.novalnet.de/v2"
 nuvei.base_url = "https://ppp-test.nuvei.com/"
 opayo.base_url = "https://pi-test.sagepay.com/"
 opennode.base_url = "https://dev-api.opennode.com"
 paybox.base_url = "https://preprod-ppps.paybox.com/PPPS.php"
 paybox.secondary_base_url="https://preprod-tpeweb.paybox.com/"
 payeezy.base_url = "https://api-cert.payeezy.com/"
 payjustnow.base_url = "https://sandbox-checkout.payjustnow.io/v2"
@@ -228,21 +228,21 @@ enabled = true
 [zero_mandates.supported_payment_methods]
 bank_debit.ach = { connector_list = "gocardless,adyen,payload" }
 bank_debit.becs = { connector_list = "gocardless,adyen" }
 bank_debit.bacs = { connector_list = "gocardless" }
 bank_debit.sepa = { connector_list = "gocardless,adyen" }
 card.credit.connector_list = "checkout,stripe,adyen,zift,authorizedotnet,cybersource,datatrans,worldpay,nmi,bankofamerica,wellsfargo,bamboraapac,nexixpay,novalnet,paypal,archipel,tesouro,mollie"
 card.debit.connector_list = "checkout,stripe,adyen,zift,authorizedotnet,cybersource,datatrans,worldpay,nmi,bankofamerica,wellsfargo,bamboraapac,nexixpay,novalnet,paypal,archipel,tesouro,mollie"
 pay_later.klarna.connector_list = "adyen"
 wallet.apple_pay.connector_list = "checkout,stripe,adyen,cybersource,bankofamerica,novalnet,nuvei,authorizedotnet,nmi,tesouro,worldpaymodular,worldpayxml"
 wallet.samsung_pay.connector_list = "cybersource"
-wallet.google_pay.connector_list = "checkout,stripe,adyen,cybersource,bankofamerica,novalnet,nuvei,authorizedotnet,tesouro,worldpaymodular,worldpayxml"
+wallet.google_pay.connector_list = "checkout,stripe,adyen,cybersource,bankofamerica,novalnet,nuvei,authorizedotnet,nmi,tesouro,worldpaymodular,worldpayxml"
 wallet.paypal.connector_list = "adyen,novalnet"
 wallet.momo.connector_list = "adyen"
 wallet.kakao_pay.connector_list = "adyen"
 wallet.go_pay.connector_list = "adyen"
 wallet.gcash.connector_list = "adyen"
 wallet.dana.connector_list = "adyen"
 wallet.twint.connector_list = "adyen"
 wallet.vipps.connector_list = "adyen"
 bank_redirect.ideal.connector_list = "adyen"
 bank_redirect.bancontact_card.connector_list = "adyen"
@@ -252,21 +252,21 @@ bank_redirect.open_banking_uk.connector_list = "adyen"
 [mandates.supported_payment_methods]
 bank_debit.ach = { connector_list = "gocardless,adyen,stripe,payload" }
 bank_debit.becs = { connector_list = "gocardless,stripe,adyen" }
 bank_debit.bacs = { connector_list = "stripe,gocardless" }
 bank_debit.sepa = { connector_list = "gocardless,adyen,stripe,deutschebank" }
 card.credit.connector_list = "aci,checkout,stripe,adyen,authorizedotnet,cybersource,datatrans,globalpay,worldpay,multisafepay,nmi,nexinets,noon,bankofamerica,braintree,nuvei,payme,wellsfargo,bamboraapac,elavon,fiuu,nexixpay,novalnet,paybox,paypal,xendit,moneris,archipel,worldpayvantiv,payload,paysafe,finix,tesouro,mollie,airwallex"
 card.debit.connector_list = "aci,checkout,stripe,adyen,authorizedotnet,cybersource,datatrans,globalpay,worldpay,multisafepay,nmi,nexinets,noon,bankofamerica,braintree,nuvei,payme,wellsfargo,bamboraapac,elavon,fiuu,nexixpay,novalnet,paybox,paypal,xendit,moneris,archipel,worldpayvantiv,payload,paysafe,finix,tesouro,mollie,airwallex"
 pay_later.klarna.connector_list = "adyen,aci"
 wallet.apple_pay.connector_list = "checkout,stripe,adyen,braintree,cybersource,noon,bankofamerica,nexinets,novalnet,nuvei,authorizedotnet,wellsfargo,worldpaymodular,worldpayvantiv,finix,nmi,tesouro,worldpayxml"
 wallet.samsung_pay.connector_list = "cybersource"
-wallet.google_pay.connector_list = "checkout,stripe,adyen,cybersource,bankofamerica,noon,globalpay,multisafepay,novalnet,nuvei,authorizedotnet,wellsfargo,worldpaymodular,worldpayvantiv,finix,tesouro,worldpayxml"
+wallet.google_pay.connector_list = "checkout,stripe,adyen,cybersource,bankofamerica,noon,globalpay,multisafepay,novalnet,nuvei,authorizedotnet,wellsfargo,worldpaymodular,worldpayvantiv,finix,nmi,tesouro,worldpayxml"
 wallet.paypal.connector_list = "adyen,globalpay,nexinets,novalnet,paypal,authorizedotnet"
 wallet.momo.connector_list = "adyen"
 wallet.kakao_pay.connector_list = "adyen"
 wallet.go_pay.connector_list = "adyen"
 wallet.gcash.connector_list = "adyen"
 wallet.dana.connector_list = "adyen"
 wallet.twint.connector_list = "adyen"
 wallet.vipps.connector_list = "adyen"
 
 bank_redirect.ideal.connector_list = "stripe,adyen,globalpay,multisafepay,nexinets,aci"

Full Changelog: v1.122.0...v1.123.0

v1.122.0 New feature
Notable features
  • Modular payment method retrieve, create, and update APIs
  • Guest customer support in v2 tunnel
  • Bank type and holder type support in ACH migration
Full changelog

1.122.0 (2026-03-24)

Docker Images

  • v1.122.0 (with AWS SES support): docker pull docker.juspay.io/juspaydotin/hyperswitch-router:v1.122.0

  • v1.122.0-standalone (without AWS SES support): docker pull docker.juspay.io/juspaydotin/hyperswitch-router:v1.122.0-standalone

Features

  • connector:
    • Fix Payload PSync headers handling (#11083)
    • [Worldpayxml] Implement mandates for ApplePay and GooglePay (#11356)
    • [Peachpayments] Perform PSync and RSync using reference_id (#11457)
  • core:
    • Add support for Guest Customer in v2 tunnel (#10973)
    • Populate error_message for payments_list api (#11054)
    • Braintree and Mifinity Form type in HS <> UCS Integration (#10989)
    • Add webhook context support for event type determination (#11363)
    • Add static routing to proxy payment core (#11387)
    • Add Peachpayments Data Inside connector_metadata in Payments Request (#11389)
  • interfaces: Add query_params functionality in microservice client (#11026)
  • payload: Add merchant_secret to connector_webhook_details for all environments (#11364)
  • payment-methods:
    • Add modular payment method retrieve transformer (#10994)
    • Add modular payment method create api (#11031)
    • Add modular payment method update api (#11044)
    • Add modular customer pml transformer (#11064)
    • Add support to fetch raw payment method data in v2 payment methods retrieve api (#11015)
  • payment_methods: Support bank_type, bank_holder_type, and bank_account_holder_name in ACH migration (#11375)
  • platform: Support save payment method for platform payments (#11056)
  • router:
    • Deprecate Implicit Customer Update in Payments (#10982)
    • [stripe connect] prevent creation of payment method for afterpay clearpay (#11051)
    • Introduce duplication check for bank debit (#11371)
  • Mandate data passage to ucs (#11053)

Bug Fixes

  • connector:
    • Fix PreAuth Conditions in NMI, Nuvei and Redsys (#11041)
    • Map Ds_State to status in Redsys PSync when Ds_Response is absent (#11096)
    • [REDSYS] add url safe base64 decoding support (#11024)
    • [Peachpayments] Pass COF Data as None in MIT Using Limited Card Data Flow (#11139)
    • [WorldpayWPG] Mandates Flow for Wallets When Authentication Type is three_ds (#11357)
    • Fix PayJustNow In-Store Payments when merchant_order_reference_id is Same (#11391)
    • [Peachpayments] Omit ECI field in Network Token Passthrough when its None (#11390)
    • [ADYEN] Pass through split refund data when payment charges are unavailable (#11478)
  • router:
    • Made payment account reference optional for visa click to pay (#11350)
    • Use V1VaultEntityId to create fingerprint request (#11372)
  • ucs: Handling Unspecified Payment status from UCS (#11057)
  • Payment method population in pyament_method_token (#10843)

Refactors

  • connector: [Worldpayxml] webhook body from xml to url encoded (#10991)
  • core: Derive card_isin in payment_token flow for routing dsl input (#11100)
  • ucs: Introduce authentication_step function to authorize_flow and bloat redsys with authenticate flow (#10490)
  • webhooks: Default to triggering webhooks for all the states in payments, refunds and payouts flow (#11028)
  • Centralize timeout error constants and improve refund error handling (#11073)

Miscellaneous Tasks

  • payments_v2: External vault payment v2 flow fix (#10927)
  • Fix for setupmandate and complete authorize for granular flows (#11070)

Compatibility

This version of the Hyperswitch App server is compatible with the following versions of the other components:

Database Migration Changes

DB Difference between v1.121.0 and v1.122.0

ALTER TABLE payment_methods
    ADD COLUMN IF NOT EXISTS locker_fingerprint_id VARCHAR(64);

Configuration Changes

diff --git a/config/deployments/env_specific.toml b/config/deployments/env_specific.toml
index 8681ff8360..d2f7c193da 100644
--- a/config/deployments/env_specific.toml
+++ b/config/deployments/env_specific.toml
@@ -293,20 +293,26 @@ jwt_secret = "secret"                    # JWT secret used for user authenticati
 # Server configuration
 [server]
 workers = 8
 port = 8080
 host = "127.0.0.1"
 # This is the grace time (in seconds) given to the actix-server to stop the execution
 # For more details: https://actix.rs/docs/server/#graceful-shutdown
 shutdown_timeout = 30
 # HTTP Request body limit. Defaults to 32kB
 request_body_limit = 32_768
+# Keep-alive timeout in seconds
+keep_alive = 5              
+# Client request timeout in milliseconds
+client_request_timeout = 5000
+# Client disconnect timeout in milliseconds
+client_disconnect_timeout = 1000
 
 # HTTPS Server Configuration
 # Self-signed Private Key and Certificate can be generated with mkcert for local development
 [server.tls]
 port = 8081
 host = "127.0.0.1"
 private_key = "/path/to/private_key.pem"
 certificate = "/path/to/certificate.pem"

 [secrets_management]
diff --git a/config/deployments/sandbox.toml b/config/deployments/sandbox.toml
index 34d269c5db..52dac46bc1 100644
--- a/config/deployments/sandbox.toml
+++ b/config/deployments/sandbox.toml
@@ -178,21 +178,21 @@ zift.base_url = "https://sandbox-secure.zift.io/"
 zen.base_url = "https://api.zen-test.com/"
 zen.secondary_base_url = "https://secure.zen-test.com/"
 zsl.base_url = "https://api.sitoffalb.net/"
 threedsecureio.base_url = "https://service.sandbox.3dsecure.io"
 netcetera.base_url = "https://{{merchant_endpoint_prefix}}.3ds-server.prev.netcetera-cloud-payment.ch"

 [delayed_session_response]
 connectors_with_delayed_session_response = "trustpay,payme" # List of connectors which have delayed session response

 [save_payment_method_on_session.unsupported_payment_methods]
-pay_later = "klarna,affirm"
+pay_later = "klarna,affirm,afterpay_clearpay"

 [dummy_connector]
 enabled = true                                                          # Whether dummy connector is enabled or not
 assets_base_url = "https://app.hyperswitch.io/assets/TestProcessor/"    # Base url for dummy connector assets
 authorize_ttl = 36000                                                   # Time to live for dummy connector authorize request in redis
 default_return_url = "https://app.hyperswitch.io/"                      # Default return url when no return url is passed while payment
 discord_invite_url = "https://discord.gg/wJZ7DVW8mm"                    # Discord invite url for hyperswitch
 payment_complete_duration = 500                                         # Fake delay duration for dummy connector payment complete
 payment_complete_tolerance = 100                                        # Fake delay tolerance for dummy connector payment complete
 payment_duration = 1000                                                 # Fake delay duration for dummy connector payment
@@ -226,23 +226,23 @@ adyen = "Star,Pulse,Accel,Nyce"
 enabled = true

 [zero_mandates.supported_payment_methods]
 bank_debit.ach = { connector_list = "gocardless,adyen,payload" }
 bank_debit.becs = { connector_list = "gocardless,adyen" }
 bank_debit.bacs = { connector_list = "gocardless" }
 bank_debit.sepa = { connector_list = "gocardless,adyen" }
 card.credit.connector_list = "checkout,stripe,adyen,zift,authorizedotnet,cybersource,datatrans,worldpay,nmi,bankofamerica,wellsfargo,bamboraapac,nexixpay,novalnet,paypal,archipel,tesouro,mollie"
 card.debit.connector_list = "checkout,stripe,adyen,zift,authorizedotnet,cybersource,datatrans,worldpay,nmi,bankofamerica,wellsfargo,bamboraapac,nexixpay,novalnet,paypal,archipel,tesouro,mollie"
 pay_later.klarna.connector_list = "adyen"
-wallet.apple_pay.connector_list = "checkout,stripe,adyen,cybersource,bankofamerica,novalnet,nuvei,authorizedotnet,nmi,tesouro,worldpaymodular"
+wallet.apple_pay.connector_list = "checkout,stripe,adyen,cybersource,bankofamerica,novalnet,nuvei,authorizedotnet,nmi,tesouro,worldpaymodular,worldpayxml"
 wallet.samsung_pay.connector_list = "cybersource"
-wallet.google_pay.connector_list = "checkout,stripe,adyen,cybersource,bankofamerica,novalnet,nuvei,authorizedotnet,tesouro,worldpaymodular"
+wallet.google_pay.connector_list = "checkout,stripe,adyen,cybersource,bankofamerica,novalnet,nuvei,authorizedotnet,tesouro,worldpaymodular,worldpayxml"
 wallet.paypal.connector_list = "adyen,novalnet"
 wallet.momo.connector_list = "adyen"
 wallet.kakao_pay.connector_list = "adyen"
 wallet.go_pay.connector_list = "adyen"
 wallet.gcash.connector_list = "adyen"
 wallet.dana.connector_list = "adyen"
 wallet.twint.connector_list = "adyen"
 wallet.vipps.connector_list = "adyen"
 bank_redirect.ideal.connector_list = "adyen"
 bank_redirect.bancontact_card.connector_list = "adyen"
@@ -250,23 +250,23 @@ bank_redirect.trustly.connector_list = "adyen"
 bank_redirect.open_banking_uk.connector_list = "adyen"

 [mandates.supported_payment_methods]
 bank_debit.ach = { connector_list = "gocardless,adyen,stripe,payload" }
 bank_debit.becs = { connector_list = "gocardless,stripe,adyen" }
 bank_debit.bacs = { connector_list = "stripe,gocardless" }
 bank_debit.sepa = { connector_list = "gocardless,adyen,stripe,deutschebank" }
 card.credit.connector_list = "aci,checkout,stripe,adyen,authorizedotnet,cybersource,datatrans,globalpay,worldpay,multisafepay,nmi,nexinets,noon,bankofamerica,braintree,nuvei,payme,wellsfargo,bamboraapac,elavon,fiuu,nexixpay,novalnet,paybox,paypal,xendit,moneris,archipel,worldpayvantiv,payload,paysafe,finix,tesouro,mollie,airwallex"
 card.debit.connector_list = "aci,checkout,stripe,adyen,authorizedotnet,cybersource,datatrans,globalpay,worldpay,multisafepay,nmi,nexinets,noon,bankofamerica,braintree,nuvei,payme,wellsfargo,bamboraapac,elavon,fiuu,nexixpay,novalnet,paybox,paypal,xendit,moneris,archipel,worldpayvantiv,payload,paysafe,finix,tesouro,mollie,airwallex"
 pay_later.klarna.connector_list = "adyen,aci"
-wallet.apple_pay.connector_list = "checkout,stripe,adyen,braintree,cybersource,noon,bankofamerica,nexinets,novalnet,nuvei,authorizedotnet,wellsfargo,worldpaymodular,worldpayvantiv,finix,nmi,tesouro"
+wallet.apple_pay.connector_list = "checkout,stripe,adyen,braintree,cybersource,noon,bankofamerica,nexinets,novalnet,nuvei,authorizedotnet,wellsfargo,worldpaymodular,worldpayvantiv,finix,nmi,tesouro,worldpayxml"
 wallet.samsung_pay.connector_list = "cybersource"
-wallet.google_pay.connector_list = "checkout,stripe,adyen,cybersource,bankofamerica,noon,globalpay,multisafepay,novalnet,nuvei,authorizedotnet,wellsfargo,worldpaymodular,worldpayvantiv,finix,tesouro"
+wallet.google_pay.connector_list = "checkout,stripe,adyen,cybersource,bankofamerica,noon,globalpay,multisafepay,novalnet,nuvei,authorizedotnet,wellsfargo,worldpaymodular,worldpayvantiv,finix,tesouro,worldpayxml"
 wallet.paypal.connector_list = "adyen,globalpay,nexinets,novalnet,paypal,authorizedotnet"
 wallet.momo.connector_list = "adyen"
 wallet.kakao_pay.connector_list = "adyen"
 wallet.go_pay.connector_list = "adyen"
 wallet.gcash.connector_list = "adyen"
 wallet.dana.connector_list = "adyen"
 wallet.twint.connector_list = "adyen"
 wallet.vipps.connector_list = "adyen"

 bank_redirect.ideal.connector_list = "stripe,adyen,globalpay,multisafepay,nexinets,aci"

Full Changelog: v1.121.0...v1.122.0

v1.121.0 New feature
Notable features
  • CardDetailsForNetworkTransactionId and NetworkToken payments in HS<>UCS tunnel
  • APPLEPAY and GOOGLE PAY decrypted flow support
  • Wallets, bankredirect, banktransfer in HS<>UCS integration
Full changelog

1.121.0 (2026-02-24)

Docker Images

  • v1.121.0 (with AWS SES support): docker pull docker.juspay.io/juspaydotin/hyperswitch-router:v1.121.0

  • v1.121.0-standalone (without AWS SES support): docker pull docker.juspay.io/juspaydotin/hyperswitch-router:v1.121.0-standalone

Features

  • UCS:
    • Added CardDetailsForNetworkTransactionId & NetworkToken payments support for Hyperswitch<>UCS tunnel (#10796)
    • Added wallets, bankredirect, banktransfer, bnpl payment methods in HS<>UCS tunnel (#10760)
    • Enable Trustly and Interact in HS<>UCS (#10838)
    • Enable Bank Debit in HS<>UCS (#10914)
  • Wallets: APPLEPAY AND GOOGLE PAY DECRYPTED FLOW support (#10329)
  • analytics:
    • Add compatibility for payout with anaylitics api (#10479)
    • Infer payout_audit table for payout analytics (#10842)
  • auth:
    • Implemented embedded tokens (#10424)
    • Distinguish platform self-operations from connected-scope operations (#10913)
  • authentication:
    • Add force_3ds and exemption support for juspayThreeds Server (#10181)
    • Add domain models for authentication and support kafka filters in dashboard (#10446)
    • Add pending authentication status to authentication attempt count (#10833)
    • Added VM for authentication ctp (#10803)
    • Add webhook integration for Authentication Service (#10900)
  • braintree: Add UCS wallet support for PaypalSdk, ApplePayThirdPartySdk, and GooglePayThirdPartySdk (#10513)
  • business_profile: Add token field selector column to business profile (#10190)
  • connector:
    • [Envoy] template code for connector (#10220)
    • [Peach Payments] Add Automatic Capture Flow for Peach Payments (#10270)
    • [NOVALNET] Pass Payment Metadata fields to Connector (#10315)
    • [Worldpayxml] add payout webhook impl for worldpay wpg (#10346)
    • [BRAINTREE] apple pay mandate for braintree (#10273)
    • Add client_unqiue_id in Nuvei Pyament Request (#10366)
    • [Mollie] Add Recurring Payment and Manual Capture Flows (#10408)
    • Payload ach recurring (#10412)
    • [Dlocal] Implement oxxo voucher (#10450)
    • [WorldpayWPG] Add google pay - connector decryption flow (#10460)
    • [WorldpayXML] Implement webhooks for payments and refunds (#10496)
    • Introduce Connector Customer Flow and Optional Billing Address Support (#10499)
    • [Airwallex] Implemented Mandates (#10431)
    • [WorldpayWPG] Implement cards and apple pay decrypt payout (#10545)
    • [WorldpayWPG] Add 3DS flow for cards (#10442)
    • Add transaction_code support across Zift payment flows (#10581)
    • [WorldpayWPG] Add apple pay - connector decryption flow (#10482)
    • [BRAINTREE] Add support for external 3DS pass-through authentication (#10591)
    • [Zift] Remove billing address fields and add mandate setup (account verification) support (#10665)
    • [Peach Payments] Add Pre-Auth Flow With Full Reversal (#10590)
    • [NMI] Implement Apple Pay - hyperswitch decryption flow (#10686)
    • Add Apple Pay HS-Decryption support for Braintree (#10734)
    • [Payjustnowinstore] Add Connector Template Code (#10716)
    • [NOVALNET] Make Billing Email a required field for SEPA (#10720)
    • [PayJustNow In-Store] Implement PayJustNow Payment Method (#10745)
    • [Shift4] Enhance error mapping to support issuer error codes (#10748)
    • [Gigadat] store intearc customer_info in additional data (#10749)
    • [Zift] use Ecommerce transaction_industry_type instead of card present/not present (#10775)
    • [FINIX] webhook + statement descriptor (#10758)
    • [ADYEN] Googlepay predecrypt (#10806)
    • [worldpaymodular] worldpay modular connector (#10795)
    • [Peachpayments] Extend Network Token Passthrough by Merchant (#10864)
    • [xendit] add QRIS payment methods (#10759)
    • Add support for processing_account_id via metadata across Payload flows (#10904)
    • Enable order create for nordea (#10945)
    • [CYBERSOURCE] pass merchant order reference id in payment request (#10723)
    • Implement Payjustnowinstore Payments Webhooks (#11043)
  • connectors:
    • Tesouro recurring wallets & store expiry-date for decrypted Apple&Googlepay (#10122)
    • [payload] add source verification and handle webhook response (#10204)
    • [worldpayxml] add browser, shipping, shopper and billing data to the connector's payment request (#10357)
  • core:
    • Add all_keys_required in Capture, Refund and RSync Flows (#10178)
    • Support skipping PSP tokenization in payment and mandate flows (#10074)
    • Implement ucs granular setup mandate flow (#10383)
    • Get Access Token Redis Key From Connector (#10080)
    • Added mandate_id flow support in HS<>UCS (#10399)
    • Map Connector Customer Id Inside Connector Mandate Details inside Batch Migrations API (#10410)
    • Add amount captured in payment attempt (#10498)
    • Consume Card Holder Name in Payment Method Batch Migrations (#10551)
    • Add Session flow support in Hyperswitch<>UCS tunnel (#10552)
    • Add requires_capture to default payment webhook statuses (#10660)
    • Bumped UCS Client dependency to bring latest changes (#10641)
    • [Network Token] Passing Network Token in payments request (#9975)
    • Added OpenBanking PaymentMethod for Hyperswitch <> UCS Integration (#10635)
    • Propagate metadata from locker response to payment method response (#10645)
    • Add connector_response_reference_id for ErrorResponse (#10816)
    • Add intent_fulfillment_time configuration to temp locker (#10877)
    • Changed Metadata Type in Hyperswitch<>UCS tunnel (#10911)
    • Added Dual Refunds Validation - Chargeback+Refund (#10533)
    • Added BankTransfer PaymentMethod for Hyperswitch <> UCS Integration (#10814)
    • Extend Support for whole_connector_response in Cancel Flow (#10981)
    • MIT using Limited Card Data (#10965)
    • Bumped UCS dependency to bring latest changes (#10977)
    • PSync Redirection Data in HS <> UCS Integration (#11141)
  • core/connector:
    • [ADYEN] Added Support For External Authentication By Merchant (#10193)
    • Add partner merchant identifier field in payment intent (#10319)
  • errors: Populate error details in response (#10837)
  • euclid:
    • Support for extended_card_bins in routing (#10290)
    • Add configs to disable pre-routing for certain specific PMs and PMTs (#10470)
    • Support for transaction_initiator based routing (#10658)
    • Support for issuer_country based routing (#10638)
  • feature: [Zift] Add External 3DS Cards Support (#10277)
  • framework: Add Smithy Annotations for Customers, Mandates (#10191)
  • gsm:
    • Add standardised error fields to GSM models and database schema (#10600)
    • Add GSM data import to database in Cypress test workflow (#10853)
  • metrics: Add injector service metrics and observability (#9945)
  • network_token: NT eligibility API in v2 (#10670)
  • oidc:
    • Add OIDC infrastructure and discovery endpoints (#10145)
    • Implement OIDC authorize and token flows (#10147)
  • payment-links: Expose template generation as wasm builds (#10225)
  • payment-methods:
    • Add support for session create api and customer pml for guest checkout (#10334)
    • Add support for guest checkout flow in payment method service (#10487)
    • Add volatile payment method id support in proxy v2 (#10597)
  • payment_links:
    • Allow Custom T&C messages to be passed for various Payment Method Types (#10252)
    • Add Validation On Not Allowing Custom T&C When Domain is set to Hyperswitch Hosted (#10355)
    • Verify payment method mapping for custom tnc (#10562)
  • payment_method:
    • Auth token details vaulting through external vault (#10020)
    • Add support to pass network_transaction_id in /v2 update payment method request (#10920)
  • payment_method_data: [adyen] Auth code in payment response (#10985)
  • payment_methods:
    • Add custom tokenizer for external vault (#10314)
    • Add batch payment method data retrieval endpoint (#10663)
    • Payment method id retrieval from payment token for V2 (#10834)
  • payments:
    • Change lookup for find gsm code and message (#10585)
    • Add structured error details to payment attempts (#10646)
    • Add error details for PaymentsResponse (#10799)
  • payouts:
    • Add payout filter v2 (#9971)
    • [WorldpayWPG] Implement fast access feature of worldpaywpg for payouts (#10647)
    • Add passthrough payout flow for nuvei (#10463)
    • Add manual update api for payouts (#10539)
    • Propagate payout_id in connector events (#10518)
    • Add audit table for payouts (#10588)
  • platform:
    • Introduce platform type support (#10325)
    • Implement customer sharing model and refactor API key authentication (#10387)
    • Implement platform-connected setup for publishable key authentication (#10475)
    • Support payment create get tracker for platform (#10465)
    • Implement payment method sharing model for platform-connected setup (#10458)
    • Support update tracker for platform in payments (#10691)
    • Support get customer for platform in payments (#10684)
    • Add processor_merchant_id and initiator fields to payments response (#10804)
    • Update PostUpdateTracker to accept processor (#10743)
    • Accept processor for trigger payments webhooks (#10794)
    • UCS functions in payments core (#10867)
    • Convert organization to platform organization (#10910)
    • JWT Authentication for Platform (#10988)
    • Pass processor context for connector functions in payments core (#11002)
    • Support 3ds payments for platform (#11011)
    • make_pm_data to work with platform setup (#11017)
    • Enable connected merchant creation for platform organization in sandbox (#11039)
  • relay: Add capture and capture-retrieve flow (#11014)
  • revenue_recovery:
    • Revenue recovery invoices list API and get intent routes for payments (#9409)
    • Introduce hourly retry history and decision threshold in Decider Request (#10386)
    • Enable multiple retries for partial charged payments (#9818)
  • router:
    • Combine payment method check-balance and apply endpoints (v2) (#10197)
    • Flow changes for split payments (v2) (#9239)
    • Add create order granular flow (#10379)
    • Add payment method tokenization granular flow (#10377)
    • Added preferred 3ds and cardnetwork in next action data for 3ds (#10296)
    • Silence vault failures for setup_future_usage off_session payments in the confirm flow (#10406)
    • Add field type for gift card number and CVC (v2) (#10433)
    • [stripe] add support for googlepay via stripe connect (#10466)
    • Add encrypted_payment_method_data to payment_attempt to conditionally persist sensitive additional payment_method_data (#10484)
    • Add modified_at field to Payments List Response (#10492)
    • Add is_guest_customer in payment method list response (#10598)
    • Add support for CIT payments using saved ACH PM (#10592)
    • Add webhook_setup_capabilities to merchant response (#10793)
    • Add support for storing ACH Bank Debit Details in locker (#10614)
  • scheduler: Add task segregation based on application source (#10505)
  • subscriptions: Update get plans to get items (#10434)
  • theme: Implement theme versioning API and database schema (#10593)
  • ucs:
    • Implement UCS granular flow for PSync (#10192)
    • Add new next_action type and wait screen instructions for upi payments (#10323)
    • Added upi_source support for upi (#10675)
    • Added IncrementalAuthorization Flow support for HS<>UCS tunnel (#10831)
  • user: Add validation for invite acceptance flow (#10251)
  • xendit: Add settlement split flow for card payments with multiple split routes (#10916)
  • Add granular authorize support for Unified Connector Service (#10348)
  • Implement UCS granular Session Token create Flow (#10364)
  • Added support for granular access token HS<>UCS (#10381)
  • Added Create connector customer granular flow HS<>UCS tunnel (#10397)
  • Subscription list API (#10275)
  • Implement UCS granular flows with gateway context refactoring (#10420)
  • Add configurable granular preprocessing flow for authentication bloated connectors (#10567)
  • Passing Access token for CreateOrder , Capture , Void (#10582)
  • UCS repeat payment in granular authorize (#10576)
  • Implement generic Locker api handler (#10242)
  • Added PreAuthenticate Flow for Nmi HS<>UCS tunnel (#10632)
  • Added Paypal Post Auth Flow for HS<>UCS tunnel (#10640)
  • Implement granular authentication flow for UCS gateway interfaces (#10622)
  • Add authentication type filter for tokenization (#10828)
  • Adyen repeat payment dependencies for HS<>UCS (#10851)
  • Add gift card balance check support for Blackhawknetwork connector (#10897)
  • Generating request id for every retry in consumer workflow (#10919)
  • Add modular payment method client (#10960)

Bug Fixes

  • Authipay: AuthiPay AuthType Fix (#10246)
  • Config: [Peach Payments] Production Base URL (#10631)
  • UCS: Bugs related to UCS granular flow (#10525)
  • api: Align ApiEvent status_code with HTTP response when proxy_connector_http_status_code enabled (#10680)
  • auth: Change authentication data type annotation for profile create v2 (#10373)
  • authentication:
    • Fix connector and profile CRUD authentication and authorization (#10002)
    • Fixed authentication connector update failures from dashboard (#10343)
    • Made mcc optional for session call in click to pay flow (#10507)
  • checkout: Billing descriptor reference (#10384)
  • config: [stripe] add stripe to zero_mandates supported_payment_methods (#10644)
  • connector:
    • Nuvei mandate fix + add us as supported country for googlepay in prod (#10236)
    • Nuvie psync + rsync delay exception (#10284)
    • [PayJustNow] Omit Nullable Fields if None (#10267)
    • [DLOCAL] Amount Conversion Fix (#9518)
    • Update connector integration status [feature metric] (#10299)
    • [Payouts] fetch name from customer with billing as backup (#10447)
    • Tesouro mandate fix for hyperswitch decrypt flow for wallets (#10351)
    • Fix Dwolla Error Handling (#10344)
    • [payload] RSync throwing 404 and re-use existing util functions (#10542)
    • Correct card brand mapping to match supported network list (#10602)
    • Fix Fiserv Deserialization Error (#10124)
    • [authorizedotnet] user_fields double serializing and remove authorization_indicator_type (#10609)
    • [gigadat] make strict type and mask gigadat webhook payload (#10633)
    • [stripe] set setup_future_usage as none for affirm and klarna (#10610)
    • [Mollie] Remove Validation for 3DS (#10548)
    • Nmi merchant_defined_fields are double encoded (#10603)
    • [bluesnap] pass connector_request_ref_id instead of payment_id (#10653)
    • [WORLDPAYWPG] Fix PSync deserialization error response (#10764)
    • [WORLDPAYWPG] Fixed 3DS challenge endpoint (#10772)
    • [AIRWALLEX] OrderCreation for all flows (#10768)
    • Remove new line from error_message (#10786)
    • [REDSYS] Fix base64 padding issue (#10757)
    • [stripe] support customer-initiated mandate payments and send setup_future_usage for tokenized cards (#10815)
    • [worldpaymodular] capture issue (#10887)
    • [AIRWALLEX] Map issuer error code and issuer error message (#10776)
    • Worldpay modular Rsync id issue (#10926)
    • Handle Mollie failed payments with error details from details object (#10824)
    • [Payjustnowinstore] Fix callback_url Placeholder Value (#10937)
    • [adyen] delayed capture automatic (#10947)
    • Fix Paypal Error handling (#10942)
    • [NOVALNET] Populating connector transaction id during 2xx failures (#10901)
    • [WorldpayWPG] Updated connector_request_reference_id generation to its default logic (#10961)
    • [ADYEN] skip serializing none in mandate payments (#10964)
    • [NMI] Fix webhook handling and include shipping & billing addresses in request (#10983)
    • [Nuvei] Fixed Error handling in the redirection flow (#10967)
    • [adyen] googlepay FPAN + 3ds (#11022)
    • [Peachpayments] Pass COF Data as None in MIT Using Limited Card Data Flow (#11131)
  • connectors:
    • [Nexixpay] avoid complete authorize call when preprocessing failed (#10254)
    • [Adyen] Connector customer for mit (#10302)
    • [Nexixpay] add verify flag for zero-amount transactions (#10449)
    • [stripe] correct metadata serialization to avoid duplicate quoting (#10537)
    • [Adyen] Make shopper_reference optional for on_session payments (#10520)
    • Add 3ds validations for connector for card specific only (#10560)
    • [redsys] fix three_d_s_server_trans_i_d mapping (#10784)
  • core:
    • [Network Token] Check Network Token Status Response Type Fix (#10354)
    • Fix billing descriptor name example (#10342)
    • Merchant Category Code Enum to strict Struct (#10423)
    • Implemented Payouts Aggregate API (#10559)
    • Fix partial authz retries for smart (#10564)
    • Consume shipping_cost and order_tax_amount in update operation (#10805)
    • [payout-sync-webhook] when source verified=false trigger outgoing webhook (#10903)
    • Trim whitespace from phone numbers and country code (#10754)
  • cybersource: Update error handling to use message instead of reason in response (#10224)
  • diesel_models: Enforce default for custom_serde fields also fix drainer session_id threading (#10480)
  • docker: Increase RUST_MIN_STACK size to handle stack overflow (#10730)
  • docker-compose: Pin diesel_cli version for migration_runner (#11368)
  • encryption-service: Re-introduce legacy key store decryption behavior for backward compatibility (#10899)
  • external_services: Mask sender_email (#10848)
  • nmi: Pass only the payment data in the setup mandate call (#10333)
  • noon: Update error message handling to use the correct field in error responses (#10219)
  • nuvei: 3ds for base64 padding issue in prod (#10476)
  • oidc: Registration of oidc paths (#10678)
  • payment-methods: Remove hardcoded inactive status in payment method create and update api (#10737)
  • payment_methods: Fix error deserialization for network tokenization service (#10170)
  • payments:
    • Avoid unnecessary database call for 'on-session' payments (#11038)
  • payouts:
    • Add condition to block updating the terminal status through payout webhook (#10339)
    • Update payout intent in case of webhook (#10531)
    • Concurrency issue in payout webhooks (#10523)
    • Add fallback for names for payout via Psp token (#10502)
    • Make payment_id optional for payout event log response (#10882)
  • platform: Update validate_request to accept Processor instead of Platform (#10405)
  • refund: Mark refund as failed for connectors implementing FlowNotSupported error (#10654)
  • revenue_recovery: Add fraud_filter_override field in vantiv and fix backfill api, unlocking token bug (#10257)
  • router:
    • Read form method using getAttribute instead of property access (#10278)
    • Add fallback to statement descriptor fields when billing descriptor is missing (#10271)
    • Propagate payment method type and subtype to split payment attempts (v2) (#10443)
    • [stripe] add apple pay direct charges support (#10577)
    • Prevent panic when masking non-ASCII strings (#10682)
    • Use intent to populate setup_future_usage in router_data (#10829)
    • Prevent creation of saved klarna and affirm payment methods (#10813)
    • Change role info not found in redis error from 5xx to 4xx (#10949)
  • routing: Remove duplicate MCA call for each payment method type (#10324)
  • stripe:
    • Update error handling to use message instead of code for response errors (#10216)
    • Remove application fee validation for splitpayments (#10362)
  • transformers: Update error reason handling in response transformations (#10313)
  • trustpay: Update error message handling to use error_message instead of result_code (#10239)
  • user-role: Add entity type validation in user role lineage queries (#10608)
  • users: Check if the inviter role info entity type is greater than invitee (#10667)
  • wasm:
    • [finix] add merchant source verification key (#10792)
  • Connector Metadata Extraction for Void and Capture in HS<>UCS tunnel (#10234)
  • Update and fix failing Postman collection tests (#10265)
  • Add tenant-id in headers for generating fingerprint request (#10182)
  • Make AWS KMS key_id optional for flexible encryption workflows (#10274)
  • Use updated state for PSync granular flow (#10368)
  • Update Stripe Postman collection tests (#10231)
  • Send customer_name to ucs during customer create (#10561)
  • Use proper masked deserialize method to deserialize ucs response (#10566)
  • Changes reference field from payment_id to connector_request_reference_id for worldpay (#10503)
  • Invoke UCS in shadow mode even when the HS request fails HS↔UCS tunnel (#10544)
  • Added connector name from router data instead of MCA type in HS<>UCS tunnel (#10454)
  • Added context to UCS shadow mode logs HS<>UCS (#10575)
  • [Volt] Production URL for Refunds Flow (#10619)
  • Serialize metadata values to pass all fields (#10568)
  • Merged the shadow and rollout configs in HS<>UCS tunnel (#10473)
  • Corrected the mapping of metadata fields in HS<>UCS tunnel (#10626)
  • Implement is_pre_authentication_flow_required function for nmi (#10692)
  • WorldpayVantiv Cypress fix (#10656)
  • Fix fallback decryption failures in case of unavailability of encryption service (#10572)
  • Added PostAuth Flow for Nexixpay HS<>UCS (#10706)
  • [WORLDPAY] Handle text/html 404 responses gracefully (#8753)
  • Handling err response from UCS (#10865)
  • Fixed payload in NT API from body to query params (#11025)
  • Add client_secret validation in session and eligibility authentication apis (#11144)

Refactors

  • auth: Restructure authentication to use unified Platform model with initiator tracking (#10746)
  • connector:
    • [Gigadat] add phone country code in interac required fields (#10255)
    • [WorldpayWPG] Refactored payout flow (#10226)
    • Rename field in required field for Loonio and Gigadat (#10516)
    • Refactor Volt Connector to New API Contract (#9928)
    • [jpmorgan] properly pass fields to capture and void request (#10617)
    • [paysafe] introduce PaymentMethodToken flow (#10541)
    • [jpmorgan] move hardcoded values to merchant_account_metadata (#10717)
    • [ checkout ] gpay and applepay predecrypted mandates (#11000)
  • core: Derive card_isin in payment_token flow for routing dsl input (#11135)
  • euclid_wasm: Change connector config for VGS vault connector (#10540)
  • payment_method_v2: Add customer_id column in v2 customers table (#10933)
  • payment_methods: Add cvc token PM V2 APIs (#10787)
  • payment_methods_v2: Refactor Update saved PM session API to enable cvc only update (#10855)
  • router:
    • Remove key manager state from DB interfaces (#10169)
    • Handle failures in apply_three_ds_authentication_strategy gracefully (#10722)
  • webhook: Event filtering to support separate query paths for event_id and object_id filters (#10402)
  • Update storage call to only fetch blocklist status from db (#10280)
  • Updated HS<>UCS transformers for new flattened payment_method proto change (#10303)
  • Remove dynamo calls from HS code (#10530)
  • Introduce PreAuth for redsys HS<>UCS tunnel (#10727)
  • Consolidate payment gateway routing with unified execution path (#10710)
  • Added PreAuth flow for nuvei HS<>UCS tunnel (#10726)
  • Added new headers for comparison service HS<>UCS (#10770)
  • Simplify payment processing flow and unify gateway context handling v2 (#10774)
  • Invoking Granular flow instead of Preprocessing (#10778)
  • Refactor create order interface to support redirection and SDK session tokens for Trustpay and Payme (#10779)
  • Invoking Pre Auth flow for Nuvei (#10809)
  • Introduce balance check core support (#10896)
  • Refactored S2S PM APIs to store cvc (#10912)
  • Refactor PaymentMethod sessions update API to include payment_method_data in response and fix fingerprintID bug in PM delete (#11021)

Miscellaneous Tasks

  • barclaycard: Introduce Authentication Flows for Barclaycard (#10810)
  • core: Deprecate preprocessing flow from core (#10987)
  • euclid_wasm: Add wasm for Vgs vault (#10198)
  • payment-methods: Card expiry addition to v2 (#10811)
  • payment_methods_v2: Payment method token to payment method id api document addition (#10956)
  • payments: Token generation and consumption changes in v2 (#10835)
  • wasm: [Peachpayments] Add WASM Changes for Peachpayments Network Token Flow (#10958)
  • Introduce order create integration for nordea and payme (#10752)
  • Introduce pre_authenticate flow in shift4 (#10861)
  • Added authentication data field in transaction response (#10995)
  • Populating authentication data for (Cybersource, Nexixpay, Barclaycard) (#11020)
  • Fix for setupmandate and complete authorize for granular flows (#11114)
  • Conditional Audit Event of UCS only during Primary mode (#11119)

Compatibility

This version of the Hyperswitch App server is compatible with the following versions of the other components:

Database Migration Changes

DB Difference between v1.120.0 and v1.121.0

-- Your SQL goes here
-- Add created_by column to customers table for tracking the creator/origin of the record
ALTER TABLE customers ADD COLUMN IF NOT EXISTS created_by VARCHAR(255);

-- Add last_modified_by column to customers table for tracking who last modified the record
ALTER TABLE customers ADD COLUMN IF NOT EXISTS last_modified_by VARCHAR(255);
-- Your SQL goes here

-- This migration backfills the organization_id column in the payouts table.
-- It sets organization_id based on the corresponding merchant_account entry for cases where the organization_id was NULL.
-- This is required for older payout records created before organization_id was introduced as a column in the payouts table.

UPDATE payouts p
SET organization_id = ma.organization_id
FROM merchant_account ma
WHERE p.merchant_id = ma.merchant_id
  AND p.organization_id IS NULL;
-- Add skip_psp_tokenization column to payment_intent table
ALTER TABLE payment_intent
ADD COLUMN IF NOT EXISTS tokenization VARCHAR(64);
-- Add skip_psp_tokenization column to payment_intent table
ALTER TABLE payment_attempt
ADD COLUMN IF NOT EXISTS tokenization VARCHAR(64);
-- Your SQL goes here
-- Add created_by column to payment_methods table for tracking the creator/origin of the record
ALTER TABLE payment_methods ADD COLUMN IF NOT EXISTS created_by VARCHAR(255);

-- Add last_modified_by column to payment_methods table for tracking who last modified the record
ALTER TABLE payment_methods ADD COLUMN IF NOT EXISTS last_modified_by VARCHAR(255);
-- Your SQL goes here
ALTER TABLE payment_intent ADD COLUMN IF NOT EXISTS partner_merchant_identifier_details jsonb;
-- Your SQL goes here
ALTER TABLE payment_attempt ADD COLUMN IF NOT EXISTS encrypted_payment_method_data BYTEA;
-- Your SQL goes here
ALTER TABLE authentication
ADD COLUMN IF NOT EXISTS earliest_supported_version JSONB,
ADD COLUMN IF NOT EXISTS latest_supported_version JSONB,
ADD COLUMN IF NOT EXISTS mcc VARCHAR(8),
ADD COLUMN IF NOT EXISTS platform VARCHAR(64),
ADD COLUMN IF NOT EXISTS device_type VARCHAR(255),
ADD COLUMN IF NOT EXISTS device_brand VARCHAR(255),
ADD COLUMN IF NOT EXISTS device_os VARCHAR(255),
ADD COLUMN IF NOT EXISTS device_display VARCHAR(255),
ADD COLUMN IF NOT EXISTS browser_name VARCHAR(255),
ADD COLUMN IF NOT EXISTS browser_version VARCHAR(255),
ADD COLUMN IF NOT EXISTS scheme_name VARCHAR(255),
ADD COLUMN IF NOT EXISTS exemption_requested BOOLEAN,
ADD COLUMN IF NOT EXISTS exemption_accepted BOOLEAN,
ADD COLUMN IF NOT EXISTS issuer_id VARCHAR(255),
ADD COLUMN IF NOT EXISTS issuer_country VARCHAR(16),
ADD COLUMN IF NOT EXISTS merchant_country_code VARCHAR(8),
ADD COLUMN IF NOT EXISTS billing_country VARCHAR(16),
ADD COLUMN IF NOT EXISTS shipping_country VARCHAR(16);
-- Add the application_source column to the process_tracker table if it does not exist
ALTER TABLE process_tracker ADD COLUMN IF NOT EXISTS application_source VARCHAR(64);
ALTER TYPE "IntentStatus" ADD VALUE IF NOT EXISTS 'partially_captured_and_processing';
-- Your SQL goes here
ALTER TABLE payment_intent
ADD COLUMN state_metadata JSONB NULL;
-- Your SQL goes here
ALTER TABLE themes
ADD COLUMN IF NOT EXISTS theme_config_version VARCHAR(32) NOT NULL DEFAULT extract(epoch from now())::text;
-- Your SQL goes here
ALTER TABLE gateway_status_map
    ADD COLUMN IF NOT EXISTS standardised_code VARCHAR(64),
    ADD COLUMN IF NOT EXISTS description VARCHAR(1024),
    ADD COLUMN IF NOT EXISTS user_guidance_message VARCHAR(1024);
-- Your SQL goes here
ALTER TABLE payment_attempt ADD COLUMN IF NOT EXISTS error_details JSONB;
-- Your SQL goes here
ALTER TYPE "RelayType" ADD VALUE IF NOT EXISTS 'capture';
-- Your SQL goes here
CREATE INDEX CONCURRENTLY IF NOT EXISTS payment_intent_processor_merchant_id_payment_id_index ON payment_intent (processor_merchant_id, payment_id);
-- Your SQL goes here
CREATE INDEX CONCURRENTLY IF NOT EXISTS payment_attempt_processor_merchant_id_payment_id_index ON payment_attempt (processor_merchant_id, payment_id);

Configuration Changes

[!IMPORTANT]
When upgrading from previous versions to v1.121.0, please ensure you configure key_manager.use_legacy_key_store_decryption carefully. Misconfiguring this when upgrading from a previous Hyperswitch version would cause decryption failures, and in turn, API failures.

If you are upgrading from a previous Hyperswitch version, set it to true:

[key_manager]
# ...
use_legacy_key_store_decryption = true

If you are deploying Hyperswitch for the first time, or deploying it in a new environment, set it to false:

[key_manager]
# ...
use_legacy_key_store_decryption = false
diff --git a/config/deployments/sandbox.toml b/config/deployments/sandbox.toml
index 759f91c277..34d269c5db 100644
--- a/config/deployments/sandbox.toml
+++ b/config/deployments/sandbox.toml
@@ -59,20 +59,21 @@ cryptopay.base_url = "https://business-sandbox.cryptopay.me"
 cybersource.base_url = "https://apitest.cybersource.com/"
 datatrans.base_url = "https://api.sandbox.datatrans.com/"
 datatrans.secondary_base_url = "https://pay.sandbox.datatrans.com/"
 deutschebank.base_url = "https://testmerch.directpos.de/rest-api"
 digitalvirgo.base_url = "https://dcb-integration-service-sandbox-external.staging.digitalvirgo.pl"
 dlocal.base_url = "https://sandbox.dlocal.com/"
 dummyconnector.base_url = "http://localhost:8080/dummy-connector"
 dwolla.base_url = "https://api-sandbox.dwolla.com"
 ebanx.base_url = "https://sandbox.ebanxpay.com/"
 elavon.base_url = "https://api.demo.convergepay.com/VirtualMerchantDemo/"
+envoy.base_url = "https://www.envoytx.com/MerchantAPI.asmx"
 facilitapay.base_url = "https://sandbox-api.facilitapay.com/api/v1"
 finix.base_url = "https://finix.sandbox-payments-api.com"
 fiserv.base_url = "https://cert.api.fiservapps.com/"
 fiservemea.base_url = "https://prod.emea.api.fiservapps.com/sandbox"
 fiuu.base_url = "https://sandbox.merchant.razer.com/"
 flexiti.base_url = "https://onlineapi.flexiti.fi/flexiti/online-api/"
 fiuu.secondary_base_url="https://sandbox.merchant.razer.com/"
 fiuu.third_base_url="https://api.merchant.razer.com/"
 forte.base_url = "https://sandbox.forte.net/api/v3"
 getnet.base_url = "https://api-test.getneteurope.com/engine/rest"
@@ -109,20 +110,21 @@ noon.base_url = "https://api-test.noonpayments.com/"
 nordea.base_url = "https://api.nordeaopenbanking.com"
 noon.key_mode = "Test"
 novalnet.base_url = "https://payport.novalnet.de/v2"
 nuvei.base_url = "https://ppp-test.nuvei.com/"
 opayo.base_url = "https://pi-test.sagepay.com/"
 opennode.base_url = "https://dev-api.opennode.com"
 paybox.base_url = "https://preprod-ppps.paybox.com/PPPS.php"
 paybox.secondary_base_url="https://preprod-tpeweb.paybox.com/"
 payeezy.base_url = "https://api-cert.payeezy.com/"
 payjustnow.base_url = "https://sandbox-checkout.payjustnow.io/v2"
+payjustnowinstore.base_url = "https://sandbox.payjustnow.com/api"
 payload.base_url = "https://api.payload.com"
 payme.base_url = "https://sandbox.payme.io/"
 payone.base_url = "https://payment.preprod.payone.com/"
 paypal.base_url = "https://api-m.sandbox.paypal.com/"
 paysafe.base_url = "https://api.test.paysafe.com/paymenthub/"
 paystack.base_url = "https://api.paystack.co"
 paytm.base_url = "https://securegw-stage.paytm.in/"
 payu.base_url = "https://secure.snd.payu.com/"
 peachpayments.base_url = "https://apitest.bankint.ppay.io/v/1"
 phonepe.base_url = "https://api.phonepe.com/apis/hermes/"
@@ -149,42 +151,49 @@ stripe.base_url_file_upload = "https://files.stripe.com/"
 stripebilling.base_url = "https://api.stripe.com/"
 taxjar.base_url = "https://api.sandbox.taxjar.com/v2/"
 tesouro.base_url = "https://api.sandbox.tesouro.com"
 thunes.base_url = "https://api.limonetikqualif.com/"
 tokenex.base_url = "https://test-api.tokenex.com"
 tokenio.base_url = "https://api.sandbox.token.io"
 trustpay.base_url = "https://test-tpgw.trustpay.eu/"
 trustpayments.base_url = "https://webservices.securetrading.net/"
 trustpay.base_url_bank_redirects = "https://aapi.trustpay.eu/"
 tsys.base_url = "https://stagegw.transnox.com/"
-vgs.base_url = "https://api.sandbox.verygoodvault.com/"
-volt.base_url = "https://api.sandbox.volt.io/"
+vgs.base_url = "https://{{vault_id}}.sandbox.vault-api.verygoodvault.com/"
+vgs.secondary_base_url = "https://auth.verygoodsecurity.com/"
+volt.base_url = "https://gateway.sandbox.volt.io"
+volt.secondary_base_url = "https://api.sandbox.volt.io"
 wellsfargo.base_url = "https://apitest.cybersource.com/"
 wellsfargopayout.base_url = "https://api-sandbox.wellsfargo.com/"
 wise.base_url = "https://api.sandbox.transferwise.tech/"
 worldline.base_url = "https://eu.sandbox.api-ingenico.com/"
 worldpay.base_url = "https://try.access.worldpay.com/"
+worldpaymodular.base_url = "https://try.access.worldpay.com/"
 worldpayvantiv.base_url = "https://transact.vantivprelive.com/vap/communicator/online"
 worldpayvantiv.secondary_base_url = "https://onlinessr.vantivprelive.com"
 worldpayvantiv.third_base_url = "https://services.vantivprelive.com"
 worldpayxml.base_url = "https://secure-test.worldpay.com/jsp/merchant/xml/paymentService.jsp"
+worldpayxml.secondary_base_url = "https://centinelapistag.cardinalcommerce.com/V2/Cruise/StepUp"
 xendit.base_url = "https://api.xendit.co"
 zift.base_url = "https://sandbox-secure.zift.io/"
 zen.base_url = "https://api.zen-test.com/"
 zen.secondary_base_url = "https://secure.zen-test.com/"
 zsl.base_url = "https://api.sitoffalb.net/"
 threedsecureio.base_url = "https://service.sandbox.3dsecure.io"
 netcetera.base_url = "https://{{merchant_endpoint_prefix}}.3ds-server.prev.netcetera-cloud-payment.ch"
 
 [delayed_session_response]
 connectors_with_delayed_session_response = "trustpay,payme" # List of connectors which have delayed session response
 
+[save_payment_method_on_session.unsupported_payment_methods]
+pay_later = "klarna,affirm"
+
 [dummy_connector]
 enabled = true                                                          # Whether dummy connector is enabled or not
 assets_base_url = "https://app.hyperswitch.io/assets/TestProcessor/"    # Base url for dummy connector assets
 authorize_ttl = 36000                                                   # Time to live for dummy connector authorize request in redis
 default_return_url = "https://app.hyperswitch.io/"                      # Default return url when no return url is passed while payment
 discord_invite_url = "https://discord.gg/wJZ7DVW8mm"                    # Discord invite url for hyperswitch
 payment_complete_duration = 500                                         # Fake delay duration for dummy connector payment complete
 payment_complete_tolerance = 100                                        # Fake delay tolerance for dummy connector payment complete
 payment_duration = 1000                                                 # Fake delay duration for dummy connector payment
 payment_retrieve_duration = 500                                         # Fake delay duration for dummy connector payment sync
@@ -210,54 +219,54 @@ force_cookies = false
 supported_currencies = "USD"
 supported_connectors = "adyen"
 
 [debit_routing_config.connector_supported_debit_networks]
 adyen = "Star,Pulse,Accel,Nyce"
 
 [frm]
 enabled = true
 
 [zero_mandates.supported_payment_methods]
-bank_debit.ach = { connector_list = "gocardless,adyen" }
+bank_debit.ach = { connector_list = "gocardless,adyen,payload" }
 bank_debit.becs = { connector_list = "gocardless,adyen" }
 bank_debit.bacs = { connector_list = "gocardless" }
 bank_debit.sepa = { connector_list = "gocardless,adyen" }
-card.credit.connector_list = "checkout,stripe,adyen,zift,authorizedotnet,cybersource,datatrans,worldpay,nmi,bankofamerica,wellsfargo,bamboraapac,nexixpay,novalnet,paypal,archipel,tesouro"
-card.debit.connector_list = "checkout,stripe,adyen,zift,authorizedotnet,cybersource,datatrans,worldpay,nmi,bankofamerica,wellsfargo,bamboraapac,nexixpay,novalnet,paypal,archipel,tesouro"
+card.credit.connector_list = "checkout,stripe,adyen,zift,authorizedotnet,cybersource,datatrans,worldpay,nmi,bankofamerica,wellsfargo,bamboraapac,nexixpay,novalnet,paypal,archipel,tesouro,mollie"
+card.debit.connector_list = "checkout,stripe,adyen,zift,authorizedotnet,cybersource,datatrans,worldpay,nmi,bankofamerica,wellsfargo,bamboraapac,nexixpay,novalnet,paypal,archipel,tesouro,mollie"
 pay_later.klarna.connector_list = "adyen"
-wallet.apple_pay.connector_list = "adyen,cybersource,bankofamerica,novalnet,nuvei,authorizedotnet,nmi"
+wallet.apple_pay.connector_list = "checkout,stripe,adyen,cybersource,bankofamerica,novalnet,nuvei,authorizedotnet,nmi,tesouro,worldpaymodular"
 wallet.samsung_pay.connector_list = "cybersource"
-wallet.google_pay.connector_list = "adyen,cybersource,bankofamerica,novalnet,nuvei,authorizedotnet"
+wallet.google_pay.connector_list = "checkout,stripe,adyen,cybersource,bankofamerica,novalnet,nuvei,authorizedotnet,tesouro,worldpaymodular"
 wallet.paypal.connector_list = "adyen,novalnet"
 wallet.momo.connector_list = "adyen"
 wallet.kakao_pay.connector_list = "adyen"
 wallet.go_pay.connector_list = "adyen"
 wallet.gcash.connector_list = "adyen"
 wallet.dana.connector_list = "adyen"
 wallet.twint.connector_list = "adyen"
 wallet.vipps.connector_list = "adyen"
 bank_redirect.ideal.connector_list = "adyen"
 bank_redirect.bancontact_card.connector_list = "adyen"
 bank_redirect.trustly.connector_list = "adyen"
 bank_redirect.open_banking_uk.connector_list = "adyen"
 
 [mandates.supported_payment_methods]
-bank_debit.ach = { connector_list = "gocardless,adyen,stripe" }
+bank_debit.ach = { connector_list = "gocardless,adyen,stripe,payload" }
 bank_debit.becs = { connector_list = "gocardless,stripe,adyen" }
 bank_debit.bacs = { connector_list = "stripe,gocardless" }
 bank_debit.sepa = { connector_list = "gocardless,adyen,stripe,deutschebank" }
-card.credit.connector_list = "aci,checkout,stripe,adyen,authorizedotnet,cybersource,datatrans,globalpay,worldpay,multisafepay,nmi,nexinets,noon,bankofamerica,braintree,nuvei,payme,wellsfargo,bamboraapac,elavon,fiuu,nexixpay,novalnet,paybox,paypal,xendit,moneris,archipel,worldpayvantiv,payload,paysafe,finix,tesouro"
-card.debit.connector_list = "aci,checkout,stripe,adyen,authorizedotnet,cybersource,datatrans,globalpay,worldpay,multisafepay,nmi,nexinets,noon,bankofamerica,braintree,nuvei,payme,wellsfargo,bamboraapac,elavon,fiuu,nexixpay,novalnet,paybox,paypal,xendit,moneris,archipel,worldpayvantiv,payload,paysafe,finix,tesouro"
+card.credit.connector_list = "aci,checkout,stripe,adyen,authorizedotnet,cybersource,datatrans,globalpay,worldpay,multisafepay,nmi,nexinets,noon,bankofamerica,braintree,nuvei,payme,wellsfargo,bamboraapac,elavon,fiuu,nexixpay,novalnet,paybox,paypal,xendit,moneris,archipel,worldpayvantiv,payload,paysafe,finix,tesouro,mollie,airwallex"
+card.debit.connector_list = "aci,checkout,stripe,adyen,authorizedotnet,cybersource,datatrans,globalpay,worldpay,multisafepay,nmi,nexinets,noon,bankofamerica,braintree,nuvei,payme,wellsfargo,bamboraapac,elavon,fiuu,nexixpay,novalnet,paybox,paypal,xendit,moneris,archipel,worldpayvantiv,payload,paysafe,finix,tesouro,mollie,airwallex"
 pay_later.klarna.connector_list = "adyen,aci"
-wallet.apple_pay.connector_list = "stripe,adyen,cybersource,noon,bankofamerica,nexinets,novalnet,nuvei,authorizedotnet,wellsfargo,worldpayvantiv,finix,nmi"
+wallet.apple_pay.connector_list = "checkout,stripe,adyen,braintree,cybersource,noon,bankofamerica,nexinets,novalnet,nuvei,authorizedotnet,wellsfargo,worldpaymodular,worldpayvantiv,finix,nmi,tesouro"
 wallet.samsung_pay.connector_list = "cybersource"
-wallet.google_pay.connector_list = "stripe,adyen,cybersource,bankofamerica,noon,globalpay,multisafepay,novalnet,nuvei,authorizedotnet,wellsfargo,worldpayvantiv,finix"
+wallet.google_pay.connector_list = "checkout,stripe,adyen,cybersource,bankofamerica,noon,globalpay,multisafepay,novalnet,nuvei,authorizedotnet,wellsfargo,worldpaymodular,worldpayvantiv,finix,tesouro"
 wallet.paypal.connector_list = "adyen,globalpay,nexinets,novalnet,paypal,authorizedotnet"
 wallet.momo.connector_list = "adyen"
 wallet.kakao_pay.connector_list = "adyen"
 wallet.go_pay.connector_list = "adyen"
 wallet.gcash.connector_list = "adyen"
 wallet.dana.connector_list = "adyen"
 wallet.twint.connector_list = "adyen"
 wallet.vipps.connector_list = "adyen"
 
 bank_redirect.ideal.connector_list = "stripe,adyen,globalpay,multisafepay,nexinets,aci"
@@ -268,20 +277,22 @@ bank_redirect.trustly.connector_list="adyen,aci"
 bank_redirect.open_banking_uk.connector_list="adyen"
 bank_redirect.eps.connector_list="globalpay,nexinets,aci,multisafepay"
 
 [mandates.update_mandate_supported]
 card.credit = { connector_list = "cybersource" }            # Update Mandate supported payment method type and connector for card
 card.debit = { connector_list = "cybersource" }             # Update Mandate supported payment method type and connector for card
 
 [network_transaction_id_supported_connectors]
 connector_list = "adyen,archipel,checkout,cybersource,novalnet,nuvei,stripe,worldpay,worldpayvantiv"
 
+[card_only_mit_supported_connectors]
+connector_list = "peachpayments" # Supported connectors for card only mit
 
 [payouts]
 payout_eligibility = true               # Defaults the eligibility of a payout method to true in case connector does not provide checks for payout eligibility
 
 #Payment Method Filters Based on Country and Currency
 [pm_filters.default]
 ach = { country = "US", currency = "USD" }
 affirm = { country = "US", currency = "USD" }
 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" }
@@ -575,20 +586,22 @@ crypto_currency = { country = "US, CA, GB, AT, BE, BG, HR, CY, CZ, DK, EE, FI, F
 [pm_filters.digitalvirgo]
 direct_carrier_billing = {country = "MA, CM, ZA, EG, SN, DZ, TN, ML, GN, GH, LY, GA, CG, MG, BW, SD, NG, ID, SG, AZ, TR, FR, ES, PL, GB, PT, DE, IT, BE, IE, SK, GR, NL, CH, BR, MX, AR, CL, AE, IQ, KW, BH, SA, QA, PS, JO, OM, RU" , currency = "MAD, XOF, XAF, ZAR, EGP, DZD, TND, GNF, GHS, LYD, XAF, CDF, MGA, BWP, SDG, NGN, IDR, SGD, RUB, AZN, TRY, EUR, PLN, GBP, CHF, BRL, MXN, ARS, CLP, AED, IQD, KWD, BHD, SAR, QAR, ILS, JOD, OMR" }
 
 [pm_filters.paybox]
 debit = { country = "FR", currency = "CAD, AUD, EUR, USD" }
 credit = { country = "FR", currency = "CAD, AUD, EUR, USD" }
 
 [pm_filters.payload]
 debit = { currency = "USD,CAD" }
 credit = { currency = "USD,CAD" }
+ach = { currency = "USD,CAD" }
+
 
 [pm_filters.klarna]
 klarna = { country = "AU,AT,BE,CA,CZ,DK,FI,FR,DE,GR,IE,IT,NL,NZ,NO,PL,PT,ES,SE,CH,GB,US", currency = "CHF,DKK,EUR,GBP,NOK,PLN,SEK,USD,AUD,NZD,CAD" }
 
 [pm_filters.flexiti]
 flexiti = { country = "CA", currency = "CAD" }
 
 [pm_filters.mifinity]
 mifinity = { country = "BR,CN,SG,MY,DE,CH,DK,GB,ES,AD,GI,FI,FR,GR,HR,IT,JP,MX,AR,CO,CL,PE,VE,UY,PY,BO,EC,GT,HN,SV,NI,CR,PA,DO,CU,PR,NL,NO,PL,PT,SE,RU,TR,TW,HK,MO,AX,AL,DZ,AS,AO,AI,AG,AM,AW,AU,AT,AZ,BS,BH,BD,BB,BE,BZ,BJ,BM,BT,BQ,BA,BW,IO,BN,BG,BF,BI,KH,CM,CA,CV,KY,CF,TD,CX,CC,KM,CG,CK,CI,CW,CY,CZ,DJ,DM,EG,GQ,ER,EE,ET,FK,FO,FJ,GF,PF,TF,GA,GM,GE,GH,GL,GD,GP,GU,GG,GN,GW,GY,HT,HM,VA,IS,IN,ID,IE,IM,IL,JE,JO,KZ,KE,KI,KW,KG,LA,LV,LB,LS,LI,LT,LU,MK,MG,MW,MV,ML,MT,MH,MQ,MR,MU,YT,FM,MD,MC,MN,ME,MS,MA,MZ,NA,NR,NP,NC,NZ,NE,NG,NU,NF,MP,OM,PK,PW,PS,PG,PH,PN,QA,RE,RO,RW,BL,SH,KN,LC,MF,PM,VC,WS,SM,ST,SA,SN,RS,SC,SL,SX,SK,SI,SB,SO,ZA,GS,KR,LK,SR,SJ,SZ,TH,TL,TG,TK,TO,TT,TN,TM,TC,TV,UG,UA,AE,UZ,VU,VN,VG,VI,WF,EH,ZM", currency = "AUD,CAD,CHF,CNY,CZK,DKK,EUR,GBP,INR,JPY,NOK,NZD,PLN,RUB,SEK,ZAR,USD,EGP,UYU,UZS" }
 
@@ -651,21 +664,22 @@ becs = { country = "AU", currency = "AUD" }
 sofort = {country = "AT,BE,BG,HR,CY,CZ,DK,EE,FI,FR,DE,GR,HU,IS,IE,IT,LV,LI,LT,LU,MT,NL,NO,PL,PT,RO,SK,SI,ES,SE", currency = "EUR" }
 blik = {country="PL", currency = "PLN"}
 bancontact_card = { country = "BE", currency = "EUR" }
 przelewy24 = { country = "PL", currency = "EUR,PLN" }
 online_banking_fpx = { country = "MY", currency = "MYR" }
 amazon_pay = { country = "AF,AX,AL,DZ,AS,AD,AO,AI,AQ,AG,AR,AM,AW,AU,AT,AZ,BS,BH,BD,BB,BY,BE,BZ,BJ,BM,BT,BO,BQ,BA,BW,BV,BR,IO,BN,BG,BF,BI,KH,CM,CA,CV,KY,CF,TD,CL,CN,CX,CC,CO,KM,CG,CD,CK,CR,CI,HR,CU,CW,CY,CZ,DK,DJ,DM,DO,EC,EG,SV,GQ,ER,EE,ET,FK,FO,FJ,FI,FR,GF,PF,TF,GA,GM,GE,DE,GH,GI,GR,GL,GD,GP,GU,GT,GG,GN,GW,GY,HT,HM,VA,HN,HK,HU,IS,IN,ID,IR,IQ,IE,IM,IL,IT,JM,JP,JE,JO,KZ,KE,KI,KP,KR,KW,KG,LA,LV,LB,LS,LR,LY,LI,LT,LU,MO,MK,MG,MW,MY,MV,ML,MT,MH,MQ,MR,MU,YT,MX,FM,MD,MC,MN,ME,MS,MA,MZ,MM,NA,NR,NP,NL,NC,NZ,NI,NE,NG,NU,NF,MP,NO,OM,PK,PW,PS,PA,PG,PY,PE,PH,PN,PL,PT,PR,QA,RE,RO,RU,RW,BL,SH,KN,LC,MF,PM,VC,WS,SM,ST,SA,SN,RS,SC,SL,SG,SX,SK,SI,SB,SO,ZA,GS,SS,ES,LK,SD,SR,SJ,SZ,SE,CH,SY,TW,TJ,TZ,TH,TL,TG,TK,TO,TT,TN,TR,TM,TC,TV,UG,UA,AE,GB,UM,UY,UZ,VU,VE,VN,VG,VI,WF,EH,YE,ZM,ZW,US", currency = "USD,AUD,GBP,DKK,EUR,HKD,JPY,NZD,NOK,ZAR,SEK,CHF" }
 we_chat_pay = { country = "CN", currency = "CNY,AUD,CAD,EUR,GBP,HKD,JPY,SGD,USD,DKK,NOK,SEK,CHF" }
 ali_pay = {country = "CN", currency = "AUD,CAD,CNY,EUR,GBP,HKD,JPY,MYR,NZD,SGD,USD"}
 
 [pm_filters.volt]
-open_banking_uk = { country = "DE,GB,AT,BE,CY,EE,ES,FI,FR,GR,HR,IE,IT,LT,LU,LV,MT,NL,PT,SI,SK,BG,CZ,DK,HU,NO,PL,RO,SE,AU,BR", currency = "EUR,GBP,DKK,NOK,PLN,SEK,AUD,BRL" }
+open_banking = { country = "DE,GB,AT,BE,CY,EE,ES,FI,FR,GR,HR,IE,IT,LT,LU,LV,MT,NL,PT,SI,SK,BG,CZ,DK,HU,NO,PL,RO,SE,AU,BR", currency = "GBP,EUR,DKK,NOK,PLN,SEK" }
+open_banking_uk = { country = "DE,GB,AT,BE,CY,EE,ES,FI,FR,GR,HR,IE,IT,LT,LU,LV,MT,NL,PT,SI,SK,BG,CZ,DK,HU,NO,PL,RO,SE,AU,BR", currency = "GBP" }
 
 [pm_filters.razorpay]
 upi_collect = {country = "IN", currency = "INR"}
 
 [pm_filters.phonepe]
 upi_collect = { country = "IN", currency = "INR" }
 upi_intent = { country = "IN", currency = "INR" }
 
 [pm_filters.paytm]
 upi_collect = { country = "IN", currency = "INR" }
@@ -677,23 +691,29 @@ debit = { currency = "AUD,BGN,CAD,CHF,COP,CZK,DKK,EUR,GBP,HRK,HUF,ILS,INR,JPY,MY
 
 [pm_filters.plaid]
 open_banking_pis = {currency = "EUR,GBP"}
 
 [pm_filters.worldpay]
 debit = { country = "AF,DZ,AW,AU,AZ,BS,BH,BD,BB,BZ,BM,BT,BO,BA,BW,BR,BN,BG,BI,KH,CA,CV,KY,CL,CO,KM,CD,CR,CZ,DK,DJ,ST,DO,EC,EG,SV,ER,ET,FK,FJ,GM,GE,GH,GI,GT,GN,GY,HT,HN,HK,HU,IS,IN,ID,IR,IQ,IE,IL,IT,JM,JP,JO,KZ,KE,KW,LA,LB,LS,LR,LY,LT,MO,MK,MG,MW,MY,MV,MR,MU,MX,MD,MN,MA,MZ,MM,NA,NZ,NI,NG,KP,NO,AR,PK,PG,PY,PE,UY,PH,PL,GB,QA,OM,RO,RU,RW,WS,SG,ST,ZA,KR,LK,SH,SD,SR,SZ,SE,CH,SY,TW,TJ,TZ,TH,TT,TN,TR,UG,UA,US,UZ,VU,VE,VN,ZM,ZW", currency = "AFN,DZD,ANG,AWG,AUD,AZN,BSD,BHD,BDT,BBD,BZD,BMD,BTN,BOB,BAM,BWP,BRL,BND,BGN,BIF,KHR,CAD,CVE,KYD,XOF,XAF,XPF,CLP,COP,KMF,CDF,CRC,EUR,CZK,DKK,DJF,DOP,XCD,EGP,SVC,ERN,ETB,EUR,FKP,FJD,GMD,GEL,GHS,GIP,GTQ,GNF,GYD,HTG,HNL,HKD,HUF,ISK,INR,IDR,IRR,IQD,ILS,JMD,JPY,JOD,KZT,KES,KWD,LAK,LBP,LSL,LRD,LYD,MOP,MKD,MGA,MWK,MYR,MVR,MRU,MUR,MXN,MDL,MNT,MAD,MZN,MMK,NAD,NPR,NZD,NIO,NGN,KPW,NOK,ARS,PKR,PAB,PGK,PYG,PEN,UYU,PHP,PLN,GBP,QAR,OMR,RON,RUB,RWF,WST,SAR,RSD,SCR,SLL,SGD,STN,SBD,SOS,ZAR,KRW,LKR,SHP,SDG,SRD,SZL,SEK,CHF,SYP,TWD,TJS,TZS,THB,TOP,TTD,TND,TRY,TMT,AED,UGX,UAH,USD,UZS,VUV,VND,YER,CNY,ZMW,ZWL" }
 credit = { country = "AF,DZ,AW,AU,AZ,BS,BH,BD,BB,BZ,BM,BT,BO,BA,BW,BR,BN,BG,BI,KH,CA,CV,KY,CL,CO,KM,CD,CR,CZ,DK,DJ,ST,DO,EC,EG,SV,ER,ET,FK,FJ,GM,GE,GH,GI,GT,GN,GY,HT,HN,HK,HU,IS,IN,ID,IR,IQ,IE,IL,IT,JM,JP,JO,KZ,KE,KW,LA,LB,LS,LR,LY,LT,MO,MK,MG,MW,MY,MV,MR,MU,MX,MD,MN,MA,MZ,MM,NA,NZ,NI,NG,KP,NO,AR,PK,PG,PY,PE,UY,PH,PL,GB,QA,OM,RO,RU,RW,WS,SG,ST,ZA,KR,LK,SH,SD,SR,SZ,SE,CH,SY,TW,TJ,TZ,TH,TT,TN,TR,UG,UA,US,UZ,VU,VE,VN,ZM,ZW", currency = "AFN,DZD,ANG,AWG,AUD,AZN,BSD,BHD,BDT,BBD,BZD,BMD,BTN,BOB,BAM,BWP,BRL,BND,BGN,BIF,KHR,CAD,CVE,KYD,XOF,XAF,XPF,CLP,COP,KMF,CDF,CRC,EUR,CZK,DKK,DJF,DOP,XCD,EGP,SVC,ERN,ETB,EUR,FKP,FJD,GMD,GEL,GHS,GIP,GTQ,GNF,GYD,HTG,HNL,HKD,HUF,ISK,INR,IDR,IRR,IQD,ILS,JMD,JPY,JOD,KZT,KES,KWD,LAK,LBP,LSL,LRD,LYD,MOP,MKD,MGA,MWK,MYR,MVR,MRU,MUR,MXN,MDL,MNT,MAD,MZN,MMK,NAD,NPR,NZD,NIO,NGN,KPW,NOK,ARS,PKR,PAB,PGK,PYG,PEN,UYU,PHP,PLN,GBP,QAR,OMR,RON,RUB,RWF,WST,SAR,RSD,SCR,SLL,SGD,STN,SBD,SOS,ZAR,KRW,LKR,SHP,SDG,SRD,SZL,SEK,CHF,SYP,TWD,TJS,TZS,THB,TOP,TTD,TND,TRY,TMT,AED,UGX,UAH,USD,UZS,VUV,VND,YER,CNY,ZMW,ZWL" }
 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", currency = "DZD, AOA, USD, XCD, ARS, AUD, AZN, EUR, BHD, BYN, BRL, BGN, CAD, CLP, COP, CZK, DKK, DOP, EGP, HKD, HUF, INR, IDR, ILS, JPY, JOD, KZT, KES, KWD, LBP, MYR, MXN, NZD, NOK, OMR, PKR, PAB, PEN, PHP, PLN, QAR, RON, RUB, SAR, SGD, ZAR, LKR, SEK, CHF, TWD, THB, TRY, UAH, AED, GBP, UYU, VND" }
 apple_pay = { country = "EG, MA, ZA, AU, CN, HK, JP, MO, MY, MN, NZ, SG, TW, VN, AM, AT, AZ, BY, BE, BG, HR, CY, CZ, DK, EE, FO, FI, FR, GE, DE, GR, GL, GG, HU, IE, IS, 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, VA, AR, BR, CL, CO, CR, DO, EC, SV, GT, HN, MX, PA, PY, PE, BS, BH, IL, JO, KW, OM, PS, QA, SA, AE, CA, US, PR", currency = "EGP, MAD, ZAR, AUD, CNY, HKD, JPY, MOP, MYR, MNT, NZD, SGD, KRW, TWD, VND, EUR, AZN, BYN, BGN, CZK, DKK, GEL, GBP, HUF, ISK, KZT, CHF, MDL, NOK, PLN, RON, RSD, SEK, UAH, ARS, BRL, CLP, COP, CRC, DOP, USD, GTQ, HNL, MXN, PAB, PYG, PEN, BSD, UYU, BHD, ILS, JOD, KWD, OMR, QAR, SAR, AED, CAD" }
 
+[pm_filters.worldpaymodular]
+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", currency = "DZD, AOA, USD, XCD, ARS, AUD, AZN, EUR, BHD, BYN, BRL, BGN, CAD, CLP, COP, CZK, DKK, DOP, EGP, HKD, HUF, INR, IDR, ILS, JPY, JOD, KZT, KES, KWD, LBP, MYR, MXN, NZD, NOK, OMR, PKR, PAB, PEN, PHP, PLN, QAR, RON, RUB, SAR, SGD, ZAR, LKR, SEK, CHF, TWD, THB, TRY, UAH, AED, GBP, UYU, VND" }
+apple_pay = { country = "EG, MA, ZA, AU, CN, HK, JP, MO, MY, MN, NZ, SG, TW, VN, AM, AT, AZ, BY, BE, BG, HR, CY, CZ, DK, EE, FO, FI, FR, GE, DE, GR, GL, GG, HU, IE, IS, 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, VA, AR, BR, CL, CO, CR, DO, EC, SV, GT, HN, MX, PA, PY, PE, BS, BH, IL, JO, KW, OM, PS, QA, SA, AE, CA, US, PR", currency = "EGP, MAD, ZAR, AUD, CNY, HKD, JPY, MOP, MYR, MNT, NZD, SGD, KRW, TWD, VND, EUR, AZN, BYN, BGN, CZK, DKK, GEL, GBP, HUF, ISK, KZT, CHF, MDL, NOK, PLN, RON, RSD, SEK, UAH, ARS, BRL, CLP, COP, CRC, DOP, USD, GTQ, HNL, MXN, PAB, PYG, PEN, BSD, UYU, BHD, ILS, JOD, KWD, OMR, QAR, SAR, AED, CAD" }
+
 [pm_filters.worldpayxml]
 debit = { country = "AF,DZ,AW,AU,AZ,BS,BH,BD,BB,BZ,BM,BT,BO,BA,BW,BR,BN,BG,BI,KH,CA,CV,KY,CL,CO,KM,CD,CR,CZ,DK,DJ,ST,DO,EC,EG,SV,ER,ET,FK,FJ,GM,GE,GH,GI,GT,GN,GY,HT,HN,HK,HU,IS,IN,ID,IR,IQ,IE,IL,IT,JM,JP,JO,KZ,KE,KW,LA,LB,LS,LR,LY,LT,MO,MK,MG,MW,MY,MV,MR,MU,MX,MD,MN,MA,MZ,MM,NA,NZ,NI,NG,KP,NO,AR,PK,PG,PY,PE,UY,PH,PL,GB,QA,OM,RO,RU,RW,WS,SG,ST,ZA,KR,LK,SH,SD,SR,SZ,SE,CH,SY,TW,TJ,TZ,TH,TT,TN,TR,UG,UA,US,UZ,VU,VE,VN,ZM,ZW", currency = "AFN,DZD,ANG,AWG,AUD,AZN,BSD,BHD,BDT,BBD,BZD,BMD,BTN,BOB,BAM,BWP,BRL,BND,BGN,BIF,KHR,CAD,CVE,KYD,XOF,XAF,XPF,CLP,COP,KMF,CDF,CRC,EUR,CZK,DKK,DJF,DOP,XCD,EGP,SVC,ERN,ETB,EUR,FKP,FJD,GMD,GEL,GHS,GIP,GTQ,GNF,GYD,HTG,HNL,HKD,HUF,ISK,INR,IDR,IRR,IQD,ILS,JMD,JPY,JOD,KZT,KES,KWD,LAK,LBP,LSL,LRD,LYD,MOP,MKD,MGA,MWK,MYR,MVR,MRU,MUR,MXN,MDL,MNT,MAD,MZN,MMK,NAD,NPR,NZD,NIO,NGN,KPW,NOK,ARS,PKR,PAB,PGK,PYG,PEN,UYU,PHP,PLN,GBP,QAR,OMR,RON,RUB,RWF,WST,SAR,RSD,SCR,SLL,SGD,STN,SBD,SOS,ZAR,KRW,LKR,SHP,SDG,SRD,SZL,SEK,CHF,SYP,TWD,TJS,TZS,THB,TOP,TTD,TND,TRY,TMT,AED,UGX,UAH,USD,UZS,VUV,VND,YER,CNY,ZMW,ZWL" }
 credit = { country = "AF,DZ,AW,AU,AZ,BS,BH,BD,BB,BZ,BM,BT,BO,BA,BW,BR,BN,BG,BI,KH,CA,CV,KY,CL,CO,KM,CD,CR,CZ,DK,DJ,ST,DO,EC,EG,SV,ER,ET,FK,FJ,GM,GE,GH,GI,GT,GN,GY,HT,HN,HK,HU,IS,IN,ID,IR,IQ,IE,IL,IT,JM,JP,JO,KZ,KE,KW,LA,LB,LS,LR,LY,LT,MO,MK,MG,MW,MY,MV,MR,MU,MX,MD,MN,MA,MZ,MM,NA,NZ,NI,NG,KP,NO,AR,PK,PG,PY,PE,UY,PH,PL,GB,QA,OM,RO,RU,RW,WS,SG,ST,ZA,KR,LK,SH,SD,SR,SZ,SE,CH,SY,TW,TJ,TZ,TH,TT,TN,TR,UG,UA,US,UZ,VU,VE,VN,ZM,ZW", currency = "AFN,DZD,ANG,AWG,AUD,AZN,BSD,BHD,BDT,BBD,BZD,BMD,BTN,BOB,BAM,BWP,BRL,BND,BGN,BIF,KHR,CAD,CVE,KYD,XOF,XAF,XPF,CLP,COP,KMF,CDF,CRC,EUR,CZK,DKK,DJF,DOP,XCD,EGP,SVC,ERN,ETB,EUR,FKP,FJD,GMD,GEL,GHS,GIP,GTQ,GNF,GYD,HTG,HNL,HKD,HUF,ISK,INR,IDR,IRR,IQD,ILS,JMD,JPY,JOD,KZT,KES,KWD,LAK,LBP,LSL,LRD,LYD,MOP,MKD,MGA,MWK,MYR,MVR,MRU,MUR,MXN,MDL,MNT,MAD,MZN,MMK,NAD,NPR,NZD,NIO,NGN,KPW,NOK,ARS,PKR,PAB,PGK,PYG,PEN,UYU,PHP,PLN,GBP,QAR,OMR,RON,RUB,RWF,WST,SAR,RSD,SCR,SLL,SGD,STN,SBD,SOS,ZAR,KRW,LKR,SHP,SDG,SRD,SZL,SEK,CHF,SYP,TWD,TJS,TZS,THB,TOP,TTD,TND,TRY,TMT,AED,UGX,UAH,USD,UZS,VUV,VND,YER,CNY,ZMW,ZWL" }
+google_pay = { country = "AF,DZ,AW,AU,AZ,BS,BH,BD,BB,BZ,BM,BT,BO,BA,BW,BR,BN,BG,BI,KH,CA,CV,KY,CL,CO,KM,CD,CR,CZ,DK,DJ,ST,DO,EC,EG,SV,ER,ET,FK,FJ,GM,GE,GH,GI,GT,GN,GY,HT,HN,HK,HU,IS,IN,ID,IR,IQ,IE,IL,IT,JM,JP,JO,KZ,KE,KW,LA,LB,LS,LR,LY,LT,MO,MK,MG,MW,MY,MV,MR,MU,MX,MD,MN,MA,MZ,MM,NA,NZ,NI,NG,KP,NO,AR,PK,PG,PY,PE,UY,PH,PL,GB,QA,OM,RO,RU,RW,WS,SG,ST,ZA,KR,LK,SH,SD,SR,SZ,SE,CH,SY,TW,TJ,TZ,TH,TT,TN,TR,UG,UA,US,UZ,VU,VE,VN,ZM,ZW", currency = "AFN,DZD,ANG,AWG,AUD,AZN,BSD,BHD,BDT,BBD,BZD,BMD,BTN,BOB,BAM,BWP,BRL,BND,BGN,BIF,KHR,CAD,CVE,KYD,XOF,XAF,XPF,CLP,COP,KMF,CDF,CRC,EUR,CZK,DKK,DJF,DOP,XCD,EGP,SVC,ERN,ETB,EUR,FKP,FJD,GMD,GEL,GHS,GIP,GTQ,GNF,GYD,HTG,HNL,HKD,HUF,ISK,INR,IDR,IRR,IQD,ILS,JMD,JPY,JOD,KZT,KES,KWD,LAK,LBP,LSL,LRD,LYD,MOP,MKD,MGA,MWK,MYR,MVR,MRU,MUR,MXN,MDL,MNT,MAD,MZN,MMK,NAD,NPR,NZD,NIO,NGN,KPW,NOK,ARS,PKR,PAB,PGK,PYG,PEN,UYU,PHP,PLN,GBP,QAR,OMR,RON,RUB,RWF,WST,SAR,RSD,SCR,SLL,SGD,STN,SBD,SOS,ZAR,KRW,LKR,SHP,SDG,SRD,SZL,SEK,CHF,SYP,TWD,TJS,TZS,THB,TOP,TTD,TND,TRY,TMT,AED,UGX,UAH,USD,UZS,VUV,VND,YER,CNY,ZMW,ZWL" }
+apple_pay = { country = "AF,DZ,AW,AU,AZ,BS,BH,BD,BB,BZ,BM,BT,BO,BA,BW,BR,BN,BG,BI,KH,CA,CV,KY,CL,CO,KM,CD,CR,CZ,DK,DJ,ST,DO,EC,EG,SV,ER,ET,FK,FJ,GM,GE,GH,GI,GT,GN,GY,HT,HN,HK,HU,IS,IN,ID,IR,IQ,IE,IL,IT,JM,JP,JO,KZ,KE,KW,LA,LB,LS,LR,LY,LT,MO,MK,MG,MW,MY,MV,MR,MU,MX,MD,MN,MA,MZ,MM,NA,NZ,NI,NG,KP,NO,AR,PK,PG,PY,PE,UY,PH,PL,GB,QA,OM,RO,RU,RW,WS,SG,ST,ZA,KR,LK,SH,SD,SR,SZ,SE,CH,SY,TW,TJ,TZ,TH,TT,TN,TR,UG,UA,US,UZ,VU,VE,VN,ZM,ZW", currency = "AFN,DZD,ANG,AWG,AUD,AZN,BSD,BHD,BDT,BBD,BZD,BMD,BTN,BOB,BAM,BWP,BRL,BND,BGN,BIF,KHR,CAD,CVE,KYD,XOF,XAF,XPF,CLP,COP,KMF,CDF,CRC,EUR,CZK,DKK,DJF,DOP,XCD,EGP,SVC,ERN,ETB,EUR,FKP,FJD,GMD,GEL,GHS,GIP,GTQ,GNF,GYD,HTG,HNL,HKD,HUF,ISK,INR,IDR,IRR,IQD,ILS,JMD,JPY,JOD,KZT,KES,KWD,LAK,LBP,LSL,LRD,LYD,MOP,MKD,MGA,MWK,MYR,MVR,MRU,MUR,MXN,MDL,MNT,MAD,MZN,MMK,NAD,NPR,NZD,NIO,NGN,KPW,NOK,ARS,PKR,PAB,PGK,PYG,PEN,UYU,PHP,PLN,GBP,QAR,OMR,RON,RUB,RWF,WST,SAR,RSD,SCR,SLL,SGD,STN,SBD,SOS,ZAR,KRW,LKR,SHP,SDG,SRD,SZL,SEK,CHF,SYP,TWD,TJS,TZS,THB,TOP,TTD,TND,TRY,TMT,AED,UGX,UAH,USD,UZS,VUV,VND,YER,CNY,ZMW,ZWL" }
 
 [pm_filters.worldpayvantiv]
 debit = { country = "AF,DZ,AW,AU,AZ,BS,BH,BD,BB,BZ,BM,BT,BO,BA,BW,BR,BN,BG,BI,KH,CA,CV,KY,CL,CO,KM,CD,CR,CZ,DK,DJ,ST,DO,EC,EG,SV,ER,ET,FK,FJ,GM,GE,GH,GI,GT,GN,GY,HT,HN,HK,HU,IS,IN,ID,IR,IQ,IE,IL,IT,JM,JP,JO,KZ,KE,KW,LA,LB,LS,LR,LY,LT,MO,MK,MG,MW,MY,MV,MR,MU,MX,MD,MN,MA,MZ,MM,NA,NZ,NI,NG,KP,NO,AR,PK,PG,PY,PE,UY,PH,PL,GB,QA,OM,RO,RU,RW,WS,SG,ST,ZA,KR,LK,SH,SD,SR,SZ,SE,CH,SY,TW,TJ,TZ,TH,TT,TN,TR,UG,UA,US,UZ,VU,VE,VN,ZM,ZW", currency = "AFN,DZD,ANG,AWG,AUD,AZN,BSD,BHD,BDT,BBD,BZD,BMD,BTN,BOB,BAM,BWP,BRL,BND,BGN,BIF,KHR,CAD,CVE,KYD,XOF,XAF,XPF,CLP,COP,KMF,CDF,CRC,EUR,CZK,DKK,DJF,DOP,XCD,EGP,SVC,ERN,ETB,EUR,FKP,FJD,GMD,GEL,GHS,GIP,GTQ,GNF,GYD,HTG,HNL,HKD,HUF,ISK,INR,IDR,IRR,IQD,ILS,JMD,JPY,JOD,KZT,KES,KWD,LAK,LBP,LSL,LRD,LYD,MOP,MKD,MGA,MWK,MYR,MVR,MRU,MUR,MXN,MDL,MNT,MAD,MZN,MMK,NAD,NPR,NZD,NIO,NGN,KPW,NOK,ARS,PKR,PAB,PGK,PYG,PEN,UYU,PHP,PLN,GBP,QAR,OMR,RON,RUB,RWF,WST,SAR,RSD,SCR,SLL,SGD,STN,SBD,SOS,ZAR,KRW,LKR,SHP,SDG,SRD,SZL,SEK,CHF,SYP,TWD,TJS,TZS,THB,TOP,TTD,TND,TRY,TMT,AED,UGX,UAH,USD,UZS,VUV,VND,YER,CNY,ZMW,ZWL" }
 credit = { country = "AF,DZ,AW,AU,AZ,BS,BH,BD,BB,BZ,BM,BT,BO,BA,BW,BR,BN,BG,BI,KH,CA,CV,KY,CL,CO,KM,CD,CR,CZ,DK,DJ,ST,DO,EC,EG,SV,ER,ET,FK,FJ,GM,GE,GH,GI,GT,GN,GY,HT,HN,HK,HU,IS,IN,ID,IR,IQ,IE,IL,IT,JM,JP,JO,KZ,KE,KW,LA,LB,LS,LR,LY,LT,MO,MK,MG,MW,MY,MV,MR,MU,MX,MD,MN,MA,MZ,MM,NA,NZ,NI,NG,KP,NO,AR,PK,PG,PY,PE,UY,PH,PL,GB,QA,OM,RO,RU,RW,WS,SG,ST,ZA,KR,LK,SH,SD,SR,SZ,SE,CH,SY,TW,TJ,TZ,TH,TT,TN,TR,UG,UA,US,UZ,VU,VE,VN,ZM,ZW", currency = "AFN,DZD,ANG,AWG,AUD,AZN,BSD,BHD,BDT,BBD,BZD,BMD,BTN,BOB,BAM,BWP,BRL,BND,BGN,BIF,KHR,CAD,CVE,KYD,XOF,XAF,XPF,CLP,COP,KMF,CDF,CRC,EUR,CZK,DKK,DJF,DOP,XCD,EGP,SVC,ERN,ETB,EUR,FKP,FJD,GMD,GEL,GHS,GIP,GTQ,GNF,GYD,HTG,HNL,HKD,HUF,ISK,INR,IDR,IRR,IQD,ILS,JMD,JPY,JOD,KZT,KES,KWD,LAK,LBP,LSL,LRD,LYD,MOP,MKD,MGA,MWK,MYR,MVR,MRU,MUR,MXN,MDL,MNT,MAD,MZN,MMK,NAD,NPR,NZD,NIO,NGN,KPW,NOK,ARS,PKR,PAB,PGK,PYG,PEN,UYU,PHP,PLN,GBP,QAR,OMR,RON,RUB,RWF,WST,SAR,RSD,SCR,SLL,SGD,STN,SBD,SOS,ZAR,KRW,LKR,SHP,SDG,SRD,SZL,SEK,CHF,SYP,TWD,TJS,TZS,THB,TOP,TTD,TND,TRY,TMT,AED,UGX,UAH,USD,UZS,VUV,VND,YER,CNY,ZMW,ZWL" }
 apple_pay = { country = "AF,DZ,AW,AU,AZ,BS,BH,BD,BB,BZ,BM,BT,BO,BA,BW,BR,BN,BG,BI,KH,CA,CV,KY,CL,CO,KM,CD,CR,CZ,DK,DJ,ST,DO,EC,EG,SV,ER,ET,FK,FJ,GM,GE,GH,GI,GT,GN,GY,HT,HN,HK,HU,IS,IN,ID,IR,IQ,IE,IL,IT,JM,JP,JO,KZ,KE,KW,LA,LB,LS,LR,LY,LT,MO,MK,MG,MW,MY,MV,MR,MU,MX,MD,MN,MA,MZ,MM,NA,NZ,NI,NG,KP,NO,AR,PK,PG,PY,PE,UY,PH,PL,GB,QA,OM,RO,RU,RW,WS,SG,ST,ZA,KR,LK,SH,SD,SR,SZ,SE,CH,SY,TW,TJ,TZ,TH,TT,TN,TR,UG,UA,US,UZ,VU,VE,VN,ZM,ZW", currency = "AFN,DZD,ANG,AWG,AUD,AZN,BSD,BHD,BDT,BBD,BZD,BMD,BTN,BOB,BAM,BWP,BRL,BND,BGN,BIF,KHR,CAD,CVE,KYD,XOF,XAF,XPF,CLP,COP,KMF,CDF,CRC,EUR,CZK,DKK,DJF,DOP,XCD,EGP,SVC,ERN,ETB,EUR,FKP,FJD,GMD,GEL,GHS,GIP,GTQ,GNF,GYD,HTG,HNL,HKD,HUF,ISK,INR,IDR,IRR,IQD,ILS,JMD,JPY,JOD,KZT,KES,KWD,LAK,LBP,LSL,LRD,LYD,MOP,MKD,MGA,MWK,MYR,MVR,MRU,MUR,MXN,MDL,MNT,MAD,MZN,MMK,NAD,NPR,NZD,NIO,NGN,KPW,NOK,ARS,PKR,PAB,PGK,PYG,PEN,UYU,PHP,PLN,GBP,QAR,OMR,RON,RUB,RWF,WST,SAR,RSD,SCR,SLL,SGD,STN,SBD,SOS,ZAR,KRW,LKR,SHP,SDG,SRD,SZL,SEK,CHF,SYP,TWD,TJS,TZS,THB,TOP,TTD,TND,TRY,TMT,AED,UGX,UAH,USD,UZS,VUV,VND,YER,CNY,ZMW,ZWL" }
 google_pay = { country = "AF,DZ,AW,AU,AZ,BS,BH,BD,BB,BZ,BM,BT,BO,BA,BW,BR,BN,BG,BI,KH,CA,CV,KY,CL,CO,KM,CD,CR,CZ,DK,DJ,ST,DO,EC,EG,SV,ER,ET,FK,FJ,GM,GE,GH,GI,GT,GN,GY,HT,HN,HK,HU,IS,IN,ID,IR,IQ,IE,IL,IT,JM,JP,JO,KZ,KE,KW,LA,LB,LS,LR,LY,LT,MO,MK,MG,MW,MY,MV,MR,MU,MX,MD,MN,MA,MZ,MM,NA,NZ,NI,NG,KP,NO,AR,PK,PG,PY,PE,UY,PH,PL,GB,QA,OM,RO,RU,RW,WS,SG,ST,ZA,KR,LK,SH,SD,SR,SZ,SE,CH,SY,TW,TJ,TZ,TH,TT,TN,TR,UG,UA,US,UZ,VU,VE,VN,ZM,ZW", currency = "AFN,DZD,ANG,AWG,AUD,AZN,BSD,BHD,BDT,BBD,BZD,BMD,BTN,BOB,BAM,BWP,BRL,BND,BGN,BIF,KHR,CAD,CVE,KYD,XOF,XAF,XPF,CLP,COP,KMF,CDF,CRC,EUR,CZK,DKK,DJF,DOP,XCD,EGP,SVC,ERN,ETB,EUR,FKP,FJD,GMD,GEL,GHS,GIP,GTQ,GNF,GYD,HTG,HNL,HKD,HUF,ISK,INR,IDR,IRR,IQD,ILS,JMD,JPY,JOD,KZT,KES,KWD,LAK,LBP,LSL,LRD,LYD,MOP,MKD,MGA,MWK,MYR,MVR,MRU,MUR,MXN,MDL,MNT,MAD,MZN,MMK,NAD,NPR,NZD,NIO,NGN,KPW,NOK,ARS,PKR,PAB,PGK,PYG,PEN,UYU,PHP,PLN,GBP,QAR,OMR,RON,RUB,RWF,WST,SAR,RSD,SCR,SLL,SGD,STN,SBD,SOS,ZAR,KRW,LKR,SHP,SDG,SRD,SZL,SEK,CHF,SYP,TWD,TJS,TZS,THB,TOP,TTD,TND,TRY,TMT,AED,UGX,UAH,USD,UZS,VUV,VND,YER,CNY,ZMW,ZWL" }
 
 [pm_filters.zen]
 boleto = { country = "BR", currency = "BRL" }
 efecty = { country = "CO", currency = "COP" }
@@ -717,27 +737,21 @@ google_pay = { country = "MY", currency = "MYR" }
 online_banking_fpx = { country = "MY", currency = "MYR" }
 credit = { country = "CN,HK,ID,MY,PH,SG,TH,TW,VN", currency = "CNY,HKD,IDR,MYR,PHP,SGD,THB,TWD,VND" }
 debit = { country = "CN,HK,ID,MY,PH,SG,TH,TW,VN", currency = "CNY,HKD,IDR,MYR,PHP,SGD,THB,TWD,VND" }
 
 [pm_filters.trustpay]
 instant_bank_transfer = { country = "CZ,SK,GB,AT,DE,IT", currency = "CZK, EUR, GBP" }
 instant_bank_transfer_poland = { country = "PL", currency = "PLN" }
 instant_bank_transfer_finland = { country = "FI", currency = "EUR" }
 sepa = { country = "ES,SK,AT,NL,DE,BE,FR,FI,PT,IE,EE,LT,LV,IT,GB", currency = "EUR" }
 
-[pm_filters.dlocal]
-credit = {country = "AR,BD,BO,BR,CM,CL,CN,CO,CR,DO,EC,SV,EG,GH,GT,HN,IN,ID,CI,JP,KE,MY,MX,MA,NI,NG,PK,PA,PY,PE,PH,RW,SA,SN,ZA,TZ,TH,TR,UG,UY,VN,ZM", currency = "ARS,BDT,BOB,BRL,XAF,CLP,CNY,COP,CRC,DOP,USD,EGP,GHS,GTQ,HNL,INR,IDR,XOF,JPY,KES,MYR,MXN,MAD,NIO,NGN,PKR,PYG,PEN,PHP,RWF,SAR,XOF,ZAR,TZS,THB,TRY,UGX,UYU,VND,ZMW"}
-debit = {country = "AR,BD,BO,BR,CM,CL,CN,CO,CR,DO,EC,SV,EG,GH,GT,HN,IN,ID,CI,JP,KE,MY,MX,MA,NI,NG,PK,PA,PY,PE,PH,RW,SA,SN,ZA,TZ,TH,TR,UG,UY,VN,ZM", currency = "ARS,BDT,BOB,BRL,XAF,CLP,CNY,COP,CRC,DOP,USD,EGP,GHS,GTQ,HNL,INR,IDR,XOF,JPY,KES,MYR,MXN,MAD,NIO,NGN,PKR,PYG,PEN,PHP,RWF,SAR,XOF,ZAR,TZS,THB,TRY,UGX,UYU,VND,ZMW"}
-
 [pm_filters.mollie]
-credit = { not_available_flows = { capture_method = "manual" } }
-debit = { not_available_flows = { capture_method = "manual" } }
 eps = { country = "AT", currency = "EUR" }
 ideal = { country = "NL", currency = "EUR" }
 przelewy24 = { country = "PL", currency = "PLN,EUR" }
 
 [pm_filters.amazonpay]
 amazon_pay = { country = "US", currency = "USD" }
 
 [pm_filters.bluesnap]
 credit = { country = "AD,AE,AG,AL,AM,AO,AR,AT,AU,AZ,BA,BB,BD,BE,BG,BH,BI,BJ,BN,BO,BR,BS,BT,BW,BY,BZ,CA,CD,CF,CG,CH,CI,CL,CM,CN,CO,CR,CV,CY,CZ,DE,DK,DJ,DM,DO,DZ,EC,EE,EG,ER,ES,ET,FI,FJ,FM,FR,GA,GB,GD,GE,GG,GH,GM,GN,GQ,GR,GT,GW,GY,HN,HR,HT,HU,ID,IE,IL,IN,IS,IT,JM,JP,JO,KE,KG,KH,KI,KM,KN,KR,KW,KZ,LA,LB,LC,LI,LK,LR,LS,LT,LU,LV,MA,MC,MD,ME,MG,MH,MK,ML,MM,MN,MR,MT,MU,MV,MW,MX,MY,MZ,NA,NE,NG,NI,NL,NO,NP,NR,NZ,OM,PA,PE,PG,PH,PK,PL,PS,PT,PW,PY,QA,RO,RS,RW,SA,SB,SC,SE,SG,SI,SK,SL,SM,SN,SO,SR,SS,ST,SV,SZ,TD,TG,TH,TJ,TL,TM,TN,TO,TR,TT,TV,TZ,UA,UG,US,UY,UZ,VA,VC,VE,VN,VU,WS,ZA,ZM,ZW", currency = "AED,AFN,ALL,AMD,ANG,ARS,AUD,AWG,BAM,BBD,BGN,BHD,BMD,BND,BOB,BRL,BSD,BWP,CAD,CHF,CLP,CNY,COP,CRC,CZK,DKK,DOP,DZD,EGP,EUR,FJD,GBP,GEL,GIP,GTQ,HKD,HUF,IDR,ILS,INR,ISK,JMD,JPY,KES,KHR,KRW,KWD,KYD,KZT,LBP,LKR,MAD,MDL,MKD,MUR,MWK,MXN,MYR,NAD,NGN,NOK,NPR,NZD,OMR,PAB,PEN,PGK,PHP,PLN,PKR,QAR,RON,RSD,RUB,SAR,SCR,SDG,SEK,SGD,THB,TND,TRY,TTD,TWD,TZS,UAH,USD,UYU,UZS,VND,XAF,XCD,XOF,ZAR"}
 google_pay = { country = "AL, DZ, AS, AO, AG, AR, AU, AT, AZ, BH, BY, BE, BR, BG, 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", currency = "ALL, DZD, USD, XCD, ARS, AUD, EUR, BHD, BRL, BGN, CAD, CLP, COP, CZK, DKK, DOP, EGP, HKD, HUF, INR, IDR, ILS, JPY, KZT, KES, KWD, LBP, MYR, MXN, NZD, NOK, OMR, PKR, PAB, PEN, PHP, PLN, QAR, RON, RUB, SAR, SGD, ZAR, LKR, SEK, CHF, TWD, THB, TRY, UAH, AED, GBP, UYU, VND"}
@@ -866,20 +880,23 @@ debit = { country = "AL,AD,AM,AT,AZ,BY,BE,BA,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GE
 credit = { country = "US,CA,IL,GB", currency = "ILS,USD,EUR" }
 debit = { country = "US,CA,IL,GB", currency = "ILS,USD,EUR" }
 apple_pay = { country = "US,CA,IL,GB", currency = "ILS,USD,EUR" }
 
 [pm_filters.paysafe]
 apple_pay = {country = "AF,AX,AL,DZ,AS,AD,AO,AI,AQ,AG,AR,AM,AW,AU,AT,AZ,BS,BH,BD,BB,BY,BE,BZ,BJ,BM,BT,BO,BQ,BA,BW,BV,BR,IO,BN,BG,BF,BI,KH,CM,CA,CV,KY,CF,TD,CL,CN,CX,CC,CO,KM,CG,CD,CK,CR,CI,HR,CU,CW,CY,CZ,DK,DJ,DM,DO,EC,EG,SV,GQ,ER,EE,ET,FK,FO,FJ,FI,FR,GF,PF,TF,GA,GM,GE,DE,GH,GI,GR,GL,GD,GP,GU,GT,GG,GN,GW,GY,HT,HM,HN,HK,HU,IS,IN,ID,IR,IQ,IE,IM,IL,IT,JM,JP,JE,JO,KZ,KE,KI,KP,KR,KW,KG,LA,LV,LB,LS,LR,LY,LI,LT,LU,MO,MK,MG,MW,MY,MV,ML,MT,MH,MQ,MR,MU,YT,MX,FM,MD,MC,MN,ME,MS,MA,MZ,MM,NA,NR,NP,NC,NZ,NI,NE,NG,NU,NF,MP,NO,OM,PK,PW,PS,PA,PG,PY,PE,PH,PN,PL,PT,PR,QA,RE,RO,RU,RW,BL,SH,KN,LC,MF,VC,WS,SM,ST,SA,SN,RS,SC,SL,SG,SX,SK,SI,SB,SO,ZA,GS,SS,ES,LK,PM,SD,SR,SJ,SZ,SE,CH,SY,TW,TJ,TZ,TH,NL,TL,TG,TK,TO,TT,TN,TR,TM,TC,TV,UG,UA,AE,GB,US,UM,UY,UZ,VU,VA,VE,VN,VG,VI,WF,EH,YE,ZM,ZW", currency = "ARS,AUD,AZN,BHD,BOB,BAM,BRL,BGN,CAD,CLP,CNY,COP,CRC,HRK,CZK,DKK,DOP,XCD,EGP,ETB,EUR,FJD,GEL,GTQ,HTG,HNL,HKD,HUF,INR,IDR,JMD,JPY,JOD,KZT,KES,KRW,KWD,LBP,LYD,MWK,MUR,MXN,MDL,MAD,ILS,NZD,NGN,NOK,OMR,PKR,PAB,PYG,PEN,PHP,PLN,GBP,QAR,RON,RUB,RWF,SAR,RSD,SGD,ZAR,LKR,SEK,CHF,SYP,TWD,THB,TTD,TND,TRY,UAH,AED,UYU,USD,VND" }
 
 [pm_filters.payjustnow]
 payjustnow = { country = "ZA", currency = "ZAR" }
 
+[pm_filters.payjustnowinstore]
+payjustnow = { country = "ZA", currency = "ZAR" }
+
 [payout_method_filters.stripe]
 ach = { country = "US", currency = "USD" }
 
 [payout_method_filters.loonio]
 interac = { currency = "CAD" }
 
 [payout_method_filters.gigadat]
 interac = { currency = "CAD" }
 
 [payout_method_filters.worldpayxml]
@@ -897,33 +914,34 @@ cybersource = { payment_method = "card" }
 barclaycard = { payment_method = "card" }
 nmi.payment_method = "card"
 payme.payment_method = "card"
 deutschebank = { payment_method = "bank_debit" }
 paybox = { payment_method = "card" }
 nexixpay = { payment_method = "card" }
 redsys = { payment_method = "card" }
 
 #tokenization configuration which describe token lifetime and payment method for specific connector
 [tokenization]
-braintree = { long_lived_token = false, payment_method = "card" }
+braintree = { long_lived_token = false, payment_method = "card,wallet" }
 checkout = { long_lived_token = false, payment_method = "wallet", apple_pay_pre_decrypt_flow = "network_tokenization", google_pay_pre_decrypt_flow = "network_tokenization" }
 gocardless = { long_lived_token = true, payment_method = "bank_debit" }
 hipay = { long_lived_token = false, payment_method = "card" }
 mollie = { long_lived_token = false, payment_method = "card" }
 payme = { long_lived_token = false, payment_method = "card" }
 square = { long_lived_token = false, payment_method = "card" }
 stax = { long_lived_token = true, payment_method = "card,bank_debit" }
 stripe = { long_lived_token = false, payment_method = "wallet", payment_method_type = { list = "google_pay", type = "disable_only" } }
 billwerk = {long_lived_token = false, payment_method = "card"}
 globalpay = { long_lived_token = false, payment_method = "card", flow = "mandates" }
 dwolla = { long_lived_token = true, payment_method = "bank_debit" }
 finix= { long_lived_token = false, payment_method = "card,wallet" }
+paysafe= { long_lived_token = false, payment_method = "card,wallet" ,payment_method_type = { type = "enable_only", list = "apple_pay,credit,debit"},allowed_card_authentication_type= "no_three_ds"}
 
 [webhooks]
 outgoing_enabled = true
 redis_lock_expiry_seconds = 180
 
 [l2_l3_data_config]
 enabled = "true"
 
 [webhook_source_verification_call]
 connectors_with_webhook_source_verification_call = "paypal"        # List of connectors which has additional source verification api-call
@@ -938,27 +956,53 @@ sdk_eligible_payment_methods = "card"
 connector_list = "tokenio"
 
 [network_tokenization_supported_card_networks]
 card_networks = "Visa, AmericanExpress, Mastercard"
 
 [network_tokenization_supported_connectors]
 connector_list = "adyen,cybersource,peachpayments"
 
 [platform]
 enabled = true
-allow_connected_merchants = false
+allow_connected_merchants = true
 
 [billing_connectors_payment_sync]
 billing_connectors_which_require_payment_sync = "stripebilling, recurly"
 
 [billing_connectors_invoice_sync]
 billing_connectors_which_requires_invoice_sync_call = "recurly"
 
 [authentication_providers]
 click_to_pay = {connector_list = "adyen, cybersource, trustpay"}
 
+[authentication_service_enabled_connectors]
+connector_list = "juspaythreedsserver, ctp_mastercard, ctp_visa"
+
 [list_dispute_supported_connectors]
 connector_list = "worldpayvantiv"
 
 [grpc_client.unified_connector_service]
 ucs_only_connectors = "paytm, phonepe"    # Comma-separated list of connectors that use UCS only
 ucs_psync_disabled_connectors = "cashtocode"    # Comma-separated list of connectors to disable UCS PSync call
+
+# Merchant Advice Code Configuration
+[merchant_advice_codes.visa]
+"01" = { description = "The issuer will never approve (do not reattempt with the same card)", recommended_action = "do_not_retry" }
+"02" = { description = "The issuer cannot approve at this time (limit the reattempts with the same card to a maximum of 20 times within 30 days)", recommended_action = "retry_later" }
+"03" = { description = "Data quality (monitor for fraud attacks, revalidate the customer data prior to reattempt for a maximum of 20 times within 30 days)", recommended_action = "retry_after_instrument_update" }
+"04" = { description = "Generic response codes (limit the reattempts with the same card to a maximum of 20 times within 30 days)", recommended_action = "retry_later" }
+
+[merchant_advice_codes.mastercard]
+"01" = { description = "New account information available", recommended_action = "retry_after_instrument_update" }
+"02" = { description = "Cannot approve at this time, try again later", recommended_action = "retry_later" }
+"03" = { description = "Do not try again", recommended_action = "do_not_retry" }
+"04" = { description = "Token not supported", recommended_action = "retry_with_different_payment_method_data" }
+"05" = { description = "Negotiated value not approved", recommended_action = "do_not_retry" }
+"21" = { description = "Stop recurring payment", recommended_action = "stop_recurring" }
+"22" = { description = "Merchant does not qualify for product code", recommended_action = "do_not_retry" }
+"24" = { description = "Retry after 1 hour", recommended_action = "retry_after_1_hour" }
+"25" = { description = "Retry after 24 hours", recommended_action = "retry_after_24_hours" }
+"26" = { description = "Retry after 2 days", recommended_action = "retry_after_2_days" }
+"27" = { description = "Retry after 4 days", recommended_action = "retry_after_4_days" }
+"28" = { description = "Retry after 6 days", recommended_action = "retry_after_6_days" }
+"29" = { description = "Retry after 8 days", recommended_action = "retry_after_8_days" }
+"30" = { description = "Retry after 10 days", recommended_action = "retry_after_10_days" }
diff --git a/config/deployments/env_specific.toml b/config/deployments/env_specific.toml
index 091c27d96c..8681ff8360 100644
--- a/config/deployments/env_specific.toml
+++ b/config/deployments/env_specific.toml
@@ -1,12 +1,17 @@
 # For explanantion of each config, please refer to the `config/config.example.toml` file
 
+# This is used to identify the running application instance
+# Check common_enums::ApplicationSource for available options
+# For more details - https://github.com/juspay/hyperswitch/issues/10489
+application_source = "main"
+
 [analytics.clickhouse]
 username = "clickhouse_username"     # Clickhouse username
 password = "clickhouse_password"     # Clickhouse password (optional)
 host = "http://localhost:8123"       # Clickhouse host in http(s)://<URL>:<PORT> format
 database_name = "clickhouse_db_name" # Clickhouse database name
 
 # Analytics configuration.
 [analytics]
 source = "sqlx" # The Analytics source/strategy to be used
 forex_enabled = false # Boolean to enable or disable forex conversion
@@ -111,29 +116,27 @@ bucket_name = "bucket"   # The AWS S3 bucket name for file storage
 # This section provides configs for currency conversion api
 [forex_api]
 api_key = ""                      # Api key for making request to foreign exchange Api
 fallback_api_key = ""             # Api key for the fallback service
 data_expiration_delay_in_seconds = 21600     # Expiration time for data in cache as well as redis in seconds
 redis_lock_timeout_in_seconds = 100        # Redis remains write locked for 100 s once the acquire_redis_lock is called
 redis_ttl_in_seconds = 172800     # Time to expire for forex data stored in Redis
 
 [jwekey] # 3 priv/pub key pair
 vault_encryption_key = ""       # public key in pem format, corresponding private key in rust locker
-rust_locker_encryption_key = "" # public key in pem format, corresponding private key in rust locker
 vault_private_key = ""          # private key in pem format, corresponding public key in rust locker
 
 # Locker settings contain details for accessing a card locker, a
 # PCI Compliant storage entity which stores payment method information
 # like card details
 [locker]
 host = ""                                                             # Locker host
-host_rs = ""                                                          # Rust Locker host
 mock_locker = true                                                    # Emulate a locker locally using Postgres
 locker_signing_key_id = "1"                                           # Key_id to sign basilisk hs locker
 locker_enabled = true                                                 # Boolean to enable or disable saving cards in locker
 redis_temp_locker_encryption_key = "redis_temp_locker_encryption_key" # Encryption key for redis temp locker
 ttl_for_storage_in_secs = 220752000                                   # Time to live for storage entries in locker
 
 
 [log.console]
 enabled = true
 level = "DEBUG"
@@ -269,20 +272,24 @@ refunds = "hyperswitch-refund-events"
 disputes = "hyperswitch-dispute-events"
 payouts = "hyperswitch-payout-events"
 sessionizer_payment_attempts = "sessionizer-payment-attempt-events"
 sessionizer_payment_intents = "sessionizer-payment-intent-events"
 sessionizer_refunds = "sessionizer-refund-events"
 sessionizer_disputes = "sessionizer-dispute-events"
 
 # Configuration for the Key Manager Service
 [key_manager]
 url = "http://localhost:5000" # URL of the encryption service
+# Enable / disable legacy key store decryption behavior.
+# Set to true if upgrading from previous versions of Hyperswitch.
+# Set to false for new deployments to use newer / correct decryption behavior.
+use_legacy_key_store_decryption = false
 
 # This section provides some secret values.
 [secrets]
 master_enc_key = "sample_key"            # Master Encryption key used to encrypt merchant wise encryption key. Should be 32-byte long.
 admin_api_key = "test_admin"             # admin API key for admin authentication.
 jwt_secret = "secret"                    # JWT secret used for user authentication.
 
 # Server configuration
 [server]
 workers = 8
@@ -347,20 +354,21 @@ id = "12345" # Default CellID for Global Cell Information
 [network_tokenization_service] # Network Tokenization Service Configuration
 generate_token_url= ""        # base url to generate token
 fetch_token_url= ""           # base url to fetch token
 token_service_api_key= ""      # api key for token service
 public_key= ""                # public key to encrypt data for token service
 private_key= ""               # private key to decrypt  response payload from token service
 key_id= ""                    # key id to encrypt data for token service
 delete_token_url= ""          # base url to delete token from token service
 check_token_status_url= ""    # base url to check token status from token service
 webhook_source_verification_key= "" # webhook source verification key to verify the webhook payload from token service
+check_tokenize_eligibility_url="" # base url to check tokenization eligibility from token service
 
 [grpc_client.dynamic_routing_client] # Dynamic Routing Client Configuration
 host = "localhost" # Client Host
 port = 7000        # Client Port
 service = "dynamo" # Service name
 
 [grpc_client.recovery_decider_client] # Revenue recovery client base url
 base_url = "http://127.0.0.1:8080"  #Base URL
 
 [theme.storage]
@@ -439,10 +447,23 @@ enabled = false                                  # Enable or disable Superpositi
 endpoint = "http://superposition:8080"          # Superposition service endpoint URL
 token = "your_superposition_token"              # Superposition token
 org_id = "your_org_id"                          # Organization ID in Superposition
 workspace_id = "your_workspace_id"              # Workspace ID in Superposition
 polling_interval = 15                           # Polling interval in seconds for configuration updates
 # request_timeout =                              # Request timeout in seconds for Superposition API calls (optional, default: none)
 
 [trace_header]
 header_name = "x-request-id"    # HTTP header name for request tracing
 id_reuse = "ignore_incoming"    # Policy for handling incoming request IDs: "use_incoming" or "ignore_incoming"
+
+[oidc.key.k1]
+kid = ""          # Key ID used to identify the signing key in JWKS and JWT headers (Generate using: openssl rand -hex 16)
+private_key = ""  # RSA private key used for signing ID tokens (Generate using: openssl genrsa -out private.key 4096)
+
+[oidc.key.k2]
+kid = ""          # Key ID used to identify the signing key in JWKS and JWT headers (Generate using: openssl rand -hex 16)
+private_key = ""  # RSA private key used for signing ID tokens (Generate using: openssl genrsa -out private2.key 4096)
+
+[oidc.client.c1]
+client_id = ""     # OIDC client identifier for the relying party (Generate using: openssl rand -hex 8)
+client_secret = "" # Client secret used to authenticate the client (Generate using: openssl rand -hex 32)
+redirect_uri = ""  # Redirect URI registered for the OIDC client 
\ No newline at end of file

Full Changelog: v1.120.0...v1.121.0

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

About

Stars
42,827
Forks
4,771
Languages
Rust JavaScript Shell

Install & Platforms

Install via
docker

Community & Support

Beta — feedback welcome: [email protected]