[server] port = 8080 host = "0.0.0.0" request_body_limit = 16_384 # Post request body is limited to 16k. [log.file] enabled = false # Whether you want to store log in log files. path = "logs" # Where to store log files. level = "DEBUG" # What gets into log files. # rotation = "60" # mins # current framework doesn't support configuring rotation. set to hourly rotation. [log.console] enabled = true # Whether you want to see log in your terminal. level = "DEBUG" # What you see in your terminal. [log.telemetry] traces_enabled = false # Whether traces are enabled. metrics_enabled = true # Whether metrics are enabled. ignore_errors = false # Whether to ignore errors during traces or metrics pipeline setup. otel_exporter_otlp_endpoint = "https://otel-collector:4317" # Endpoint to send metrics and traces to. use_xray_generator = false [master_database] username = "db_user" password = "db_pass" host = "pg" port = 5432 dbname = "hyperswitch_db" pool_size = 5 [forex_api] call_delay = 21600 local_fetch_retry_count = 5 local_fetch_retry_delay = 1000 api_timeout = 20000 api_key = "YOUR API KEY HERE" fallback_api_key = "YOUR API KEY HERE" redis_lock_timeout = 26000 [replica_database] username = "db_user" password = "db_pass" host = "pg" port = 5432 dbname = "hyperswitch_db" pool_size = 5 [secrets] admin_api_key = "test_admin" jwt_secret = "secret" master_enc_key = "73ad7bbbbc640c845a150f67d058b279849370cd2c1f3c67c4dd6c869213e13a" recon_admin_api_key = "recon_test_admin" [user] password_validity_in_days = 90 two_factor_auth_expiry_in_secs = 300 totp_issuer_name = "Hyperswitch" [locker] host = "" host_rs = "" mock_locker = true basilisk_host = "" locker_enabled = true ttl_for_storage_in_secs = 220752000 [jwekey] vault_encryption_key = "" rust_locker_encryption_key = "" vault_private_key = "" [redis] host = "redis-standalone" port = 6379 cluster_enabled = false cluster_urls = ["redis-cluster:6379"] pool_size = 5 reconnect_max_attempts = 5 reconnect_delay = 5 default_ttl = 300 default_hash_ttl = 900 use_legacy_version = false stream_read_count = 1 auto_pipeline = true disable_auto_backpressure = false max_in_flight_commands = 5000 default_command_timeout = 30 unresponsive_timeout = 10 max_feed_count = 200 [cors] max_age = 30 # origins = "http://localhost:8080,http://localhost:9000" allowed_methods = "GET,POST,PUT,DELETE" wildcard_origin = true [refund] max_attempts = 10 max_age = 365 [api_keys] hash_key = "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" [connectors] aci.base_url = "https://eu-test.oppwa.com/" adyen.base_url = "https://checkout-test.adyen.com/" adyen.secondary_base_url = "https://pal-test.adyen.com/" airwallex.base_url = "https://api-demo.airwallex.com/" applepay.base_url = "https://apple-pay-gateway.apple.com/" authorizedotnet.base_url = "https://apitest.authorize.net/xml/v1/request.api" bambora.base_url = "https://api.na.bambora.com" bankofamerica.base_url = "https://apitest.merchant-services.bankofamerica.com/" billwerk.base_url = "https://api.reepay.com/" billwerk.secondary_base_url = "https://card.reepay.com/" bitpay.base_url = "https://test.bitpay.com" bluesnap.base_url = "https://sandbox.bluesnap.com/" bluesnap.secondary_base_url = "https://sandpay.bluesnap.com/" boku.base_url = "https://$-api4-stage.boku.com" braintree.base_url = "https://api.sandbox.braintreegateway.com/" braintree.secondary_base_url = "https://payments.sandbox.braintree-api.com/graphql" cashtocode.base_url = "https://cluster05.api-test.cashtocode.com" checkout.base_url = "https://api.sandbox.checkout.com/" coinbase.base_url = "https://api.commerce.coinbase.com" cryptopay.base_url = "https://business-sandbox.cryptopay.me" cybersource.base_url = "https://apitest.cybersource.com/" dlocal.base_url = "https://sandbox.dlocal.com/" dummyconnector.base_url = "http://localhost:8080/dummy-connector" ebanx.base_url = "https://sandbox.ebanxpay.com/" fiserv.base_url = "https://cert.api.fiservapps.com/" forte.base_url = "https://sandbox.forte.net/api/v3" globalpay.base_url = "https://apis.sandbox.globalpay.com/ucp/" globepay.base_url = "https://pay.globepay.co/" gocardless.base_url = "https://api-sandbox.gocardless.com" gpayments.base_url = "https://{{merchant_endpoint_prefix}}-test.api.as1.gpayments.net" helcim.base_url = "https://api.helcim.com/" iatapay.base_url = "https://sandbox.iata-pay.iata.org/api/v1" klarna.base_url = "https://api{{klarna_region}}.playground.klarna.com/" 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/" multisafepay.base_url = "https://testapi.multisafepay.com/" netcetera.base_url = "https://{{merchant_endpoint_prefix}}.3ds-server.prev.netcetera-cloud-payment.ch" nexinets.base_url = "https://apitest.payengine.de/v1" nmi.base_url = "https://secure.nmi.com/" noon.base_url = "https://api-test.noonpayments.com/" noon.key_mode = "Test" nuvei.base_url = "https://ppp-test.nuvei.com/" opayo.base_url = "https://pi-test.sagepay.com/" opennode.base_url = "https://dev-api.opennode.com" payeezy.base_url = "https://api-cert.payeezy.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/" payu.base_url = "https://secure.snd.payu.com/" placetopay.base_url = "https://test.placetopay.com/rest/gateway" powertranz.base_url = "https://staging.ptranz.com/api/" prophetpay.base_url = "https://ccm-thirdparty.cps.golf/" rapyd.base_url = "https://sandboxapi.rapyd.net" riskified.base_url = "https://sandbox.riskified.com/api" shift4.base_url = "https://api.shift4.com/" signifyd.base_url = "https://api.signifyd.com/" square.base_url = "https://connect.squareupsandbox.com/" square.secondary_base_url = "https://pci-connect.squareupsandbox.com/" stax.base_url = "https://apiprod.fattlabs.com/" stripe.base_url = "https://api.stripe.com/" threedsecureio.base_url = "https://service.sandbox.3dsecure.io" stripe.base_url_file_upload = "https://files.stripe.com/" trustpay.base_url = "https://test-tpgw.trustpay.eu/" trustpay.base_url_bank_redirects = "https://aapi.trustpay.eu/" tsys.base_url = "https://stagegw.transnox.com/" volt.base_url = "https://api.sandbox.volt.io/" 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/" zen.base_url = "https://api.zen-test.com/" zen.secondary_base_url = "https://secure.zen-test.com/" zsl.base_url = "https://api.sitoffalb.net/" [pm_filters.default] apple_pay = { country = "AU,CN,HK,JP,MO,MY,NZ,SG,TW,AM,AT,AZ,BY,BE,BG,HR,CY,CZ,DK,EE,FO,FI,FR,GE,DE,GR,GL,GG,HU,IS,IE,IM,IT,KZ,JE,LV,LI,LT,LU,MT,MD,MC,ME,NL,NO,PL,PT,RO,SM,RS,SK,SI,ES,SE,CH,UA,GB,AR,CO,CR,BR,MX,PE,BH,IL,JO,KW,PS,QA,SA,AE,CA,UM,US,KR,VN,MA,ZA,VA,CL,SV,GT,HN,PA", currency = "AED,AUD,CHF,CAD,EUR,GBP,HKD,SGD,USD" } [connectors.supported] wallets = ["klarna", "mifinity", "braintree", "applepay"] rewards = ["cashtocode", "zen"] cards = [ "aci", "adyen", "airwallex", "authorizedotnet", "bambora", "bankofamerica", "billwerk", "bitpay", "bluesnap", "boku", "braintree", "checkout", "coinbase", "cryptopay", "cybersource", "dlocal", "dummyconnector", "ebanx", "fiserv", "forte", "globalpay", "globepay", "gocardless", "gpayments", "helcim", "iatapay", "mollie", "multisafepay", "netcetera", "nexinets", "nmi", "noon", "nuvei", "opayo", "opennode", "payeezy", "payme", "payone", "paypal", "payu", "placetopay", "powertranz", "prophetpay", "shift4", "square", "stax", "stripe", "threedsecureio", "trustpay", "tsys", "volt", "wise", "worldline", "worldpay", "zen", "zsl", ] [delayed_session_response] connectors_with_delayed_session_response = "trustpay,payme" [webhook_source_verification_call] connectors_with_webhook_source_verification_call = "paypal" [scheduler] stream = "SCHEDULER_STREAM" [scheduler.consumer] disabled = false consumer_group = "SCHEDULER_GROUP" [scheduler.server] port = 3000 host = "127.0.0.1" workers = 1 #tokenization configuration which describe token lifetime and payment method for specific connector [tokenization] stripe = { long_lived_token = false, payment_method = "wallet", payment_method_type = { type = "disable_only", list = "google_pay" } } checkout = { long_lived_token = false, payment_method = "wallet", apple_pay_pre_decrypt_flow = "network_tokenization" } mollie = { long_lived_token = false, payment_method = "card" } stax = { long_lived_token = true, payment_method = "card,bank_debit" } square = { long_lived_token = false, payment_method = "card" } braintree = { long_lived_token = false, payment_method = "card" } gocardless = { long_lived_token = true, payment_method = "bank_debit" } billwerk = { long_lived_token = false, payment_method = "card" } [temp_locker_enable_config] stripe = { payment_method = "bank_transfer" } nuvei = { payment_method = "card" } shift4 = { payment_method = "card" } bluesnap = { payment_method = "card" } bankofamerica = { payment_method = "card" } cybersource = { payment_method = "card" } nmi = { payment_method = "card" } payme = { payment_method = "card" } [dummy_connector] enabled = true payment_ttl = 172800 payment_duration = 1000 payment_tolerance = 100 payment_retrieve_duration = 500 payment_retrieve_tolerance = 100 payment_complete_duration = 500 payment_complete_tolerance = 100 refund_ttl = 172800 refund_duration = 1000 refund_tolerance = 100 refund_retrieve_duration = 500 refund_retrieve_tolerance = 100 authorize_ttl = 36000 assets_base_url = "https://app.hyperswitch.io/assets/TestProcessor/" default_return_url = "https://app.hyperswitch.io/" slack_invite_url = "https://join.slack.com/t/hyperswitch-io/shared_invite/zt-2awm23agh-p_G5xNpziv6yAiedTkkqLg" discord_invite_url = "https://discord.gg/wJZ7DVW8mm" [payouts] payout_eligibility = true [pm_filters.adyen] online_banking_fpx = { country = "MY", currency = "MYR" } online_banking_thailand = { country = "TH", currency = "THB" } touch_n_go = { country = "MY", currency = "MYR" } atome = { country = "MY,SG", currency = "MYR,SGD" } swish = { country = "SE", currency = "SEK" } permata_bank_transfer = { country = "ID", currency = "IDR" } bca_bank_transfer = { country = "ID", currency = "IDR" } bni_va = { country = "ID", currency = "IDR" } bri_va = { country = "ID", currency = "IDR" } cimb_va = { country = "ID", currency = "IDR" } danamon_va = { country = "ID", currency = "IDR" } mandiri_va = { country = "ID", currency = "IDR" } alfamart = { country = "ID", currency = "IDR" } indomaret = { country = "ID", currency = "IDR" } open_banking_uk = { country = "GB", currency = "GBP" } oxxo = { country = "MX", currency = "MXN" } pay_safe_card = { country = "AT,AU,BE,BR,BE,CA,HR,CY,CZ,DK,FI,FR,GE,DE,GI,HU,IS,IE,KW,LV,IE,LI,LT,LU,MT,MX,MD,ME,NL,NZ,NO,PY,PE,PL,PT,RO,SA,RS,SK,SI,ES,SE,CH,TR,AE,GB,US,UY", currency = "EUR,AUD,BRL,CAD,CZK,DKK,GEL,GIP,HUF,KWD,CHF,MXN,MDL,NZD,NOK,PYG,PEN,PLN,RON,SAR,RSD,SEK,TRY,AED,GBP,USD,UYU" } seven_eleven = { country = "JP", currency = "JPY" } lawson = { country = "JP", currency = "JPY" } mini_stop = { country = "JP", currency = "JPY" } family_mart = { country = "JP", currency = "JPY" } seicomart = { country = "JP", currency = "JPY" } pay_easy = { country = "JP", currency = "JPY" } boleto = { country = "BR", currency = "BRL" } ideal = { country = "NL", currency = "EUR" } klarna = { country = "AU,AT,BE,CA,CZ,DK,FI,FR,DE,GR,IE,IT,NO,PL,PT,RO,ES,SE,CH,NL,GB,US", currency = "AUD,EUR,CAD,CZK,DKK,NOK,PLN,RON,SEK,CHF,GBP,USD" } paypal = { country = "AU,NZ,CN,JP,HK,MY,TH,KR,PH,ID,AE,KW,BR,ES,GB,SE,NO,SK,AT,NL,DE,HU,CY,LU,CH,BE,FR,DK,FI,RO,HR,UA,MT,SI,GI,PT,IE,CZ,EE,LT,LV,IT,PL,IS,CA,US", currency = "AUD,BRL,CAD,CZK,DKK,EUR,HKD,HUF,INR,JPY,MYR,MXN,NZD,NOK,PHP,PLN,RUB,GBP,SGD,SEK,CHF,THB,USD" } sofort = { country = "AT,BE,DE,ES,CH,NL", currency = "CHF,EUR" } [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" } [pm_filters.zen] credit = { not_available_flows = { capture_method = "manual" } } debit = { not_available_flows = { capture_method = "manual" } } boleto = { country = "BR", currency = "BRL" } efecty = { country = "CO", currency = "COP" } multibanco = { country = "PT", currency = "EUR" } pago_efectivo = { country = "PE", currency = "PEN" } pse = { country = "CO", currency = "COP" } pix = { country = "BR", currency = "BRL" } red_compra = { country = "CL", currency = "CLP" } red_pagos = { country = "UY", currency = "UYU" } [pm_filters.zsl] local_bank_transfer = { country = "CN", currency = "CNY" } [pm_filters.stripe] cashapp = { country = "US", currency = "USD" } [pm_filters.prophetpay] card_redirect = { currency = "USD" } [pm_filters.bankofamerica] credit = { currency = "USD" } debit = { currency = "USD" } apple_pay = { currency = "USD" } google_pay = { currency = "USD" } [pm_filters.helcim] credit = { currency = "USD" } debit = { currency = "USD" } [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.stax] credit = { currency = "USD" } debit = { currency = "USD" } ach = { currency = "USD" } [bank_config.online_banking_fpx] adyen.banks = "affin_bank,agro_bank,alliance_bank,am_bank,bank_islam,bank_muamalat,bank_rakyat,bank_simpanan_nasional,cimb_bank,hong_leong_bank,hsbc_bank,kuwait_finance_house,maybank,ocbc_bank,public_bank,rhb_bank,standard_chartered_bank,uob_bank" [bank_config.online_banking_thailand] adyen.banks = "bangkok_bank,krungsri_bank,krung_thai_bank,the_siam_commercial_bank,kasikorn_bank" [bank_config.open_banking_uk] adyen = { banks = "aib,bank_of_scotland,danske_bank,first_direct,first_trust,halifax,lloyds,monzo,nat_west,nationwide_bank,royal_bank_of_scotland,starling,tsb_bank,tesco_bank,ulster_bank,barclays,hsbc_bank,revolut,santander_przelew24,open_bank_success,open_bank_failure,open_bank_cancelled" } [mandates.supported_payment_methods] pay_later.klarna = { connector_list = "adyen" } wallet.google_pay = { connector_list = "stripe,adyen,bankofamerica" } wallet.apple_pay = { connector_list = "stripe,adyen,cybersource,noon,bankofamerica" } wallet.paypal = { connector_list = "adyen" } card.credit = { connector_list = "stripe,adyen,authorizedotnet,cybersource,globalpay,worldpay,multisafepay,nmi,nexinets,noon,bankofamerica" } card.debit = { connector_list = "stripe,adyen,authorizedotnet,cybersource,globalpay,worldpay,multisafepay,nmi,nexinets,noon,bankofamerica" } bank_debit.ach = { connector_list = "gocardless" } bank_debit.becs = { connector_list = "gocardless" } bank_debit.sepa = { connector_list = "gocardless" } bank_redirect.ideal = { connector_list = "stripe,adyen,globalpay" } bank_redirect.sofort = { connector_list = "stripe,adyen,globalpay" } bank_redirect.giropay = { connector_list = "adyen,globalpay" } [mandates.update_mandate_supported] card.credit = { connector_list = "cybersource" } card.debit = { connector_list = "cybersource" } [network_transaction_id_supported_connectors] connector_list = "stripe,adyen,cybersource" [connector_customer] connector_list = "gocardless,stax,stripe" payout_connector_list = "stripe,wise" [multiple_api_version_supported_connectors] supported_connectors = "braintree" [payment_method_auth] redis_expiry = 900 pm_auth_key = "Some_pm_auth_key" [lock_settings] redis_lock_expiry_seconds = 180 # 3 * 60 seconds delay_between_retries_in_milliseconds = 500 [events.kafka] brokers = ["localhost:9092"] intent_analytics_topic = "hyperswitch-payment-intent-events" attempt_analytics_topic = "hyperswitch-payment-attempt-events" refund_analytics_topic = "hyperswitch-refund-events" api_logs_topic = "hyperswitch-api-log-events" connector_logs_topic = "hyperswitch-connector-api-events" outgoing_webhook_logs_topic = "hyperswitch-outgoing-webhook-events" dispute_analytics_topic = "hyperswitch-dispute-events" audit_events_topic = "hyperswitch-audit-events" payout_analytics_topic = "hyperswitch-payout-events" consolidated_events_topic = "hyperswitch-consolidated-events" [analytics] source = "sqlx" [analytics.clickhouse] username = "default" # password = "" host = "http://localhost:8123" database_name = "default" [analytics.sqlx] username = "db_user" password = "db_pass" host = "localhost" port = 5432 dbname = "hyperswitch_db" pool_size = 5 connection_timeout = 10 queue_strategy = "Fifo" [kv_config] ttl = 900 # 15 * 60 seconds soft_kill = false [frm] enabled = true [connector_onboarding.paypal] client_id = "" client_secret = "" partner_id = "" enabled = true [events] source = "logs" [file_storage] file_storage_backend = "file_system" [unmasked_headers] keys = "user-agent" [opensearch] host = "https://opensearch:9200" [opensearch.auth] auth = "basic" username = "admin" password = "admin" region = "eu-central-1" [opensearch.indexes] payment_attempts = "hyperswitch-payment-attempt-events" payment_intents = "hyperswitch-payment-intent-events" refunds = "hyperswitch-refund-events" disputes = "hyperswitch-dispute-events" [saved_payment_methods] sdk_eligible_payment_methods = "card" [multitenancy] enabled = false [multitenancy.tenants] public = { name = "hyperswitch", base_url = "http://localhost:8080", schema = "public", redis_key_prefix = ""}