Releases: juspay/hyperswitch
Hyperswitch v1.116.0
1.116.0 (2025-08-05)
Docker Images
-
v1.116.0
(with AWS SES support):docker pull docker.juspay.io/juspaydotin/hyperswitch-router:v1.116.0
-
v1.116.0-standalone
(without AWS SES support):docker pull docker.juspay.io/juspaydotin/hyperswitch-router:v1.116.0-standalone
Features
- ai: Add endpoints to chat with ai service (#8585)
- analytics: Add RoutingApproach filter in payment analytics (#8408)
- business_profile: Added merchant country code in business profile (#8529)
- connector:
- [ARCHIPEL] fix Mastercard scheme string for Applepay payments (#8450)
- [jpmorgan] implement refund flow (#8436)
- Implement capture and webhook flow, fix some issues in ACI (#8349)
- [ADYENPLATFORM] add card payouts (#8504)
- [SANTANDER] Added Authorize, PSync, Void, Refund & RSync Flows for Pix QR Code Bank Transfer (#8463)
multisafepay
added payment methods | TRUSTLY | WeChatpay | Alipay (#8465)- [shift4] Boleto, Trustly, Alipay, Wechatpay PMs added (#8476)
- [AUTHORIZEDOTNET] Add AVS checks (#8511)
- [shift4] Blik, Klarna, Bitpay PMs added (#8478)
- [Redsys] Use merchant payment_id for ds_merchant_order with length check (#8485)
- [payload] introduce no-3ds cards (#8545)
- [AUTHIPAY] Integrate cards non 3ds payments (#8266)
- [AIRWALLEX] - Added Paypal, Trustly, Klarna , Atome, Blik Payment Methods (#8475)
- [payload] add webhook support (#8558)
- [AUTHORIZEDOTNET] Populated merchant required fields in setupmandate flow (#8618)
- [Multisafepay] Integrate EPS, MBWAY and SOFORT (#8506)
- Add Incremental Authorization flow for Paypal (#8517)
- Add apple pay decrypt support for Adyen (#8605)
- Added Supported Country and Currencies (#8383)
- [AUTHORIZEDOTNET] customer_id length validated and server-too-busy error handled (#8696)
- connectors:
- core:
- data-migration: Add connector customer and mandate details support for multiple profiles (#8473)
- debit_routing:
- kafka: Add payment_intent payment_attempt and refund kafka events for v2 (#8328)
- payment-methods: Create payment_token in vault confirm / do payment-confirm with temp token from session (#8525)
- payment_methods: [Paysera, Skrill] Add support to paysera and skrill wallets and in shift4 (#8487)
- payments:
- payouts: Add domain type for PayoutId (#8395)
- revenue_recovery: Invoke attempt list instead of payment get in recovery webhooks flow (#8393)
- router:
- routing:
Bug Fixes
- connector:
- [STRIPE] Retrieving Connect Account Id from Mandate Metadata in MITs (#8326)
- [NEXIXPAY] Add Validation Checks for Request Fields (#8345)
- Adyen connector creates connector's customer reference on the fly fixed (#8447)
- [TRUSTPAY] Consuming Amount in PSync Response (#8455)
- [CYBERSOURCE] Passing pares_status for MasterCard & Visa and transaction_type field (#8518)
- [Worldpayvantiv] Psync status mapping and add address lines to billing data (#8602)
- [AUTHORIZEDOTNET] Added Invoice Number Fix (#8685)
- [Cybersource] Add type_selection_indicator as 1 for all cards (#8663)
- Add Trustpay in Authentication Providers Config (#8622)
- connectors: [worldpayvantiv] change endpoint, add billing address and fix 5xx incase of psync (#8354)
- payment_method: Update entity id used for Vault to global customer id (#8380)
- payout: Use get_string_repr for formatting payout IDs (#8547)
- recovery: Populate connector request reference id in revenue recovery record attempt flow. (#8434)
- router:
- routing: Remove frm rule migration support as it is not supported in DE (#8448)
- users: Fallback to fresh lineage context if cached role_id no longer matches (#8593)
- Payments redirects for v2 (#8405)
- Update routing_approach for session_token flow (#8490)
Refactors
- connector:
- core: Make raw_connector_response as secret (#8565)
- dynamic_routing: Make the dynamo configs optional (#8589)
- payment-links: Use top redirection in status page (#8641)
- payments: Fetch payment method information in attempts list api v2 and add custom billing connector template (#8681)
- router:
- Remove
refunds_v2
feature flag (#8310) - Decrypt the wallet token before...
- Remove
v1.115.0
1.115.0 (2025-07-02)
Docker Images
-
v1.115.0
(with AWS SES support):docker pull docker.juspay.io/juspaydotin/hyperswitch-router:v1.115.0
-
v1.115.0-standalone
(without AWS SES support):docker pull docker.juspay.io/juspaydotin/hyperswitch-router:v1.115.0-standalone
✨ Features
Analytics & Intelligence
Business Profile & Configuration
- Add business_profile config to enable external vault (#7876)
- Add
merchant_category_code
in business profile (#8296)
Payment Connectors
New Connectors & Templates
- Archipel connector (#7851)
- Add barclaycard template code (#8017)
- [nordea] template code (#8056)
- Introduce connector template code for WorldpayXML (#7968)
- [Template] add Worldpayvantiv (#8226)
- [Worldpayvantiv] add card support (#8219)
Connector Enhancements
- Add invoice number and email in AuthorizeDotNet connector (#7726)
- [chargebee] consumes required fields to support transaction monitoring (#7774)
- [Facilitapay] Add support for Pix Bank Transfers (#7704)
- [Recurly] add invoice sync support along with transaction monitoring (#7867)
- [stripebilling] consume necessary fields in stripe billing from webhooks for transaction monitoring support (#7722)
- Add coingate, paystack connector specifications (#7996)
- [CYBERSOURCE] add SEK currency for cybersource (#8048)
- [XENDIT] Added Integrity Check for Authorize, Capture, Refund & RSync flows (#8049)
- Stripe revolut pay wallet integration (#8066)
- [Worldpayxml] add card payment (#8076)
- [Barclaycard] Implement Cards - Non 3DS flow (#8068)
- [FISERV] Added Integrity Check support for all Payment & Refund Flows (#8075)
- [STRIPE] Added Connector Tokenization Flow for Cards (#8248)
- Added recurring payments support for split payments in Stripe (#8271)
- [TRUSTPAY] Added Integrity Checks for PSync & RSync flows & Added New Variants in AttemptStatus & IntentStatus (#8096)
- Implement Razorpay UPI Collect (#8009)
- [trustpay] introduce instant bank_transfer, finland and poland (#7925)
Connector Utilities
- Add dummy billing connector auth flow (#7819)
- Create API for cloning connectors between merchants and profiles (#7949)
- [dummy_connector] add upi collect (#8014)
Core Payment Features
Payment Processing
- Add support for updating metadata after payment has been authorized (#7776)
- Add Support for redirection inside Iframe (#7976)
- [Network Tokenization] pre network tokenization (#6873)
- Add all_keys_required in confirm and psync payload (#7998)
- Altered the amount field in DisputePayload to StringMinorUnit (#8131)
- Make installment_payment_enabled,recurring_enabled Optional (#8201)
- Consume card details from billing connectors and first error codes and store them in payment intent table (#8250)
- Accept merchant_connector_details in Payments and Psync flow (#8199)
Revenue Recovery
- Adds Billing Connector Invoice Sync flow in Revenue Recovery (#7799)
- Add psync support for recovery external payments (#7855)
- Add support for multiple retry algorithms in revenue recovery workflow (#7915)
- Add revenue recovery retry algorithm type and data columns to business_profile table (#7772)
Dynamic Routing & Decision Engine
- Add open router integration for success based routing (#7795)
- Integration of elimination routing for core flows (#6816)
- Add open router integration for elimination routing (#7896)
- Decision engine config API integration (#8044)
- Add get api for dynamic routing volume split (#8114)
- Integration with decision engine (#7930)
- Health check for Decision engine (#8243)
- Add open router integration for debit routing (#7907)
- Add support to update config for elimination routing (#7938)
- Add audit trail for routing (#8188)
- Add retry support for debit routing (#8220)
- List for dynamic routing (#8111)
- Migration api for migrating routing rules to decision_engine (#8233)
Payment Methods & Tokenization
- Add logic for setup_future_usage downgrade and add filter based on zero mandate config (#7775)
- Add v2 api for fetching token data (#7629)
- Add external vault connector service (#7917)
- Add
external_vault_details
for payments v2 sdk session call (#8003) - Populate connector_customer during customer creation step in payment methods migrate flow (#8319)
- Adding generic tokenization endpoint (#7905)
- Save payment method on payments confirm (V2) (#8090)
Payments V2 API
- Add support for connector testing (Adyen) (#7874)
- Implement routing in payments v2 (#7709)
- Add outgoing payment webhooks for v2 (#6613)
- Enable client_secret auth for payments_get_intent [v2] (#8119)
- Return payment_experience in PML for payment (v2) (#8255)
- Add merchantId authentication for Payments v2 (#8239)
Refunds V2 API
- Add refund create core flow (#7619)
- Add Refunds Retrieve and Refunds Sync Core flow (#7835)
- Add refunds list flow in v2 apis (#7966)
- Add refund update core flow in v2 apis (#7724)
3DS & Authentication
- Add three_ds_decision_rule_algorithm to the domain and diesel models of business_profile (#8106)
- Add three_ds_decision_rule support in routing apis (#8132)
- Add three_ds decision rule execute api (#8148)
- Add support for 3ds exemption rules in euclid crate (#8013)
Payment Links & UI
- Alternate text for manual captures (#7574)
- Expose configurations for payment links (#7742)
- Add ability to update email config for themes (#8033)
Infrastructure & Deployment
- Add one-click Docker setup script (#7804)
- Add webhook notifiers for installation tracking (#7653)
- Adding infra level components to api-events ([#8214](https://github.com/juspay/hyperswitch/pul...
Hyperswitch v1.114.0
1.114.0 (2025-04-29)
Important
For customers working with Hyperswitch v1.109.0 or older version are recommended to first to Hyperwitch v1.11.0, then upgrade to latest version. Direct upgradation from Hyperswitch v1.109.0 or older version to the latest version can result in failures.
Docker Images
-
v1.114.0
(with AWS SES support):docker pull docker.juspay.io/juspaydotin/hyperswitch-router:v1.114.0
-
v1.114.0-standalone
(without AWS SES support):docker pull docker.juspay.io/juspaydotin/hyperswitch-router:v1.114.0-standalone
Features
- analytics:
- authentication: Create authentications to fallback to ApiKeyAuth if AdminApiAuth fails (#7744)
- coingate:
- connector:
- Add Samsung pay mandate support for Cybersource (#7298)
- Add support for passive churn recovery webhooks (#7109)
- Introduce feature_matrix api to coinbase, iatapay, nexixpay and square (#7339)
- Add recovery support for stripebilling (#7461)
- [Moneris] Implement mandate for Moneris (#7322)
- Add record back connector integration flow (#7416)
- core:
- connectors:
- payment-methods:
- Add support to pass apple pay recurring details to obtain apple pay merchant token (#6770)
Bug Fixes
- connector:
- core:
- payment_methods: Card_network and card_scheme should be consistent (#6849)
- router:
- Card network for co-badged card and update regex (#6801)
Refactors
- authentication: Modify auth for profiles and mca routes to ApiKeyAuthWithMerchantIdFromRoute (#7656)
- connector:
- core:
- Add support for expand attempt list in psync v2 (#7209)
- payments_v2: Create customer at connector end and populate connector customer ID (#7246)
Documentation
- api-reference: Fix the content of the tip (#7387)
Miscellaneous Tasks
- analytics: Opensearch client creation based on config (#7881)
Compatibility
This version of the Hyperswitch App server is compatible with the following versions of the other components:
- Control Center: v1.37.1
- Web Client: v0.121.2
- WooCommerce Plugin: v1.6.1
- Card Vault: v 0.6.5
- Key Manager: v0.1.7
Database Migrations
-- DB Difference between v1.113.0 and v1.114.0
-- stores the flag send by the merchant during payments-create call
ALTER TABLE payment_intent
ADD COLUMN request_extended_authorization boolean;
ALTER TABLE payment_attempt
-- stores the flag sent to the connector
ADD COLUMN request_extended_authorization boolean;
ALTER TABLE payment_attempt
-- Set to true if extended authentication request was successfully processed by the connector
ADD COLUMN extended_authorization_applied boolean;
ALTER TABLE payment_attempt
-- stores the flag sent to the connector
ADD COLUMN capture_before timestamp;
ALTER TABLE business_profile
-- merchant can configure the default value for request_extended_authorization here
ADD COLUMN always_request_extended_authorization boolean;
-- Your SQL goes here
ALTER TABLE gateway_status_map ADD COLUMN IF NOT EXISTS clear_pan_possible BOOLEAN NOT NULL DEFAULT FALSE;
ALTER TABLE payment_attempt
ADD COLUMN charges JSONB
DEFAULT NULL;
-- Your SQL goes here
ALTER TABLE business_profile
ADD COLUMN card_testing_guard_config JSONB
DEFAULT NULL;
ALTER TABLE business_profile
ADD COLUMN card_testing_secret_key BYTEA
DEFAULT NULL;
-- This file contains queries to re-create the `id` column as a `VARCHAR` column instead of `SERIAL` column for tables that already have it.
-- It must be ensured that the deployed version of the application does not include the `id` column in any of its queries.
-- Drop the id column as this will be used later as the primary key with a different type
------------------------ Merchant Account -----------------------
ALTER TABLE merchant_account DROP COLUMN IF EXISTS id;
------------------------ Merchant Connector Account -----------------------
ALTER TABLE merchant_connector_account DROP COLUMN IF EXISTS id;
------------------------ Customers -----------------------
ALTER TABLE customers DROP COLUMN IF EXISTS id;
------------------------ Payment Intent -----------------------
ALTER TABLE payment_intent DROP COLUMN id;
------------------------ Payment Attempt -----------------------
ALTER TABLE payment_attempt DROP COLUMN id;
------------------------ Payment Methods -----------------------
ALTER TABLE payment_methods DROP COLUMN IF EXISTS id;
------------------------ Address -----------------------
ALTER TABLE address DROP COLUMN IF EXISTS id;
------------------------ Dispute -----------------------
ALTER TABLE dispute DROP COLUMN IF EXISTS id;
------------------------ Mandate -----------------------
ALTER TABLE mandate DROP COLUMN IF EXISTS id;
------------------------ Refund -----------------------
ALTER TABLE refund DROP COLUMN IF EXISTS id;
------------------------ BlockList -----------------------
ALTER TABLE blocklist DROP COLUMN IF EXISTS id;
------------------------ Roles -----------------------
ALTER TABLE roles DROP COLUMN IF EXISTS id;
------------------------ Users -----------------------
ALTER TABLE users DROP COLUMN IF EXISTS id;
-- Your SQL goes here
ALTER TABLE merchant_account
ADD COLUMN IF NOT EXISTS id VARCHAR(64);
-- Your SQL goes here
ALTER TABLE merchant_account
ADD COLUMN IF NOT EXISTS product_type VARCHAR(64);
-- Your SQL goes here
ALTER TABLE
process_tracker
ADD
COLUMN IF NOT EXISTS version "ApiVersion" NOT NULL DEFAULT 'v1';
ALTER TABLE events ADD COLUMN IF NOT EXISTS is_overall_delivery_successful BOOLEAN;
-- Your SQL goes here
ALTER TABLE business_profile ADD COLUMN IF NOT EXISTS is_clear_pan_retries_enabled BOOLEAN NOT NULL DEFAULT FALSE;
-- Your SQL goes here
ALTER TABLE organization
ADD COLUMN IF NOT EXISTS version "ApiVersion" NOT NULL DEFAULT 'v1';
ALTER TABLE business_profile
ADD COLUMN IF NOT EXISTS force_3ds_challenge boolean DEFAULT false;
ALTER TABLE payment_attempt
ADD COLUMN IF NOT EXISTS issuer_error_code VARCHAR(64) DEFAULT NULL,
ADD COLUMN IF NOT EXISTS issuer_error_message TEXT DEFAULT NULL;
ALTER TABLE refund
ADD COLUMN IF NOT EXISTS issuer_error_code VARCHAR(64) DEFAULT NULL,
ADD COLUMN IF NOT EXISTS issuer_error_message TEXT DEFAULT NULL;
-- Your SQL goes here
ALTER TABLE business_pro...
Hyperswitch v1.113.0
1.113.0 (2025-03-04)
Docker Images
-
v1.113.0
(with AWS SES support):docker pull docker.juspay.io/juspaydotin/hyperswitch-router:v1.113.0
-
v1.113.0-standalone
(without AWS SES support):docker pull docker.juspay.io/juspaydotin/hyperswitch-router:v1.113.0-standalone
Features
- analytics:
- connectors:
- [Nexixpay] add mandates flow for cards (#6259)
- Added a new CaptureMethod SequentialAutomatic to Support CIT Mandates for Paybox (#6587)
- [DEUTSCHEBANK, FIUU ] Handle 2xx errors given by Connector (#6727)
- [AIRWALLEX] Add referrer data to whitelist hyperswitch (#6806)
- [JPMORGAN] add Payment flows for cards (#6668)
- [Novalnet] Add zero auth mandate (#6631)
- [Deutschebank] Implement Card 3ds (#6844)
- [Xendit] ADD Cards & Mandates Flow (#6966)
- [INESPAY] Integrate Sepa Bank Debit (#6755)
- [Deutschebank] Add Access Token Error struct (#7127)
- [DataTrans] ADD 3DS Flow (#6026)
- [DATATRANS] Add Support for External 3DS (#7226)
- Fiuu,novalnet,worldpay - extend NTI flows (#6946)
- [Adyen] Consume network_transaction_id from webhooks and update connector's network_transaction_id in payment_methods (#6738)
- [Stripe] Add Support for Amazon Pay Redirect and Amazon Pay payment (#7056)
- core:
- Add service details field in authentication table (#6757)
- Payment links - add support for custom background image and layout in details section (#6725)
- Implemented platform merchant account (#6882)
- Add columns unified error code and error message in refund table (#6933)
- Google pay decrypt flow (#6991)
- Add Authorize flow as fallback flow while fetching GSM for refund errors (#7129)
- events: Add audit event for CompleteAuthorize (#6310)
- klarna: Klarna Kustom Checkout Integration (#6839)
- opensearch: Add amount and customer_id as filters and handle name for different indexes (#7073)
- payment_methods: Add support to pass apple pay recurring details to obtain apple pay merchant token (#6770)
- payments:
- router:
- Add relay feature (#6870, #6879, #6918)
- Add endpoint for listing connector features (#6612)
- Add support for relay refund incoming webhooks (#6974)
- Add payment method-specific features to connector feature list (#6963)
- Add accept-language from request headers into browser-info (#7074)
- Add
organization_id
in authentication table and add it in authentication events (#7168) - Add merchant_configuration_id in netcetera metadata and make other merchant configurations optional (#7348)
- routing:
- users:
Bug Fixes
- connectors:
- Add config cleanup on payment connector deletion (#5998)
- Handle 5xx error for Volt Payment Sync (#6846)
- Fix failures in Paypal BankRedirects (Ideal/EPS) (#6864)
- Fix Paybox 3DS failing issue (#7153)
- [BOA] throw unsupported error incase of 3DS cards and limit administrative area length to 20 characters (#7174)
- [Authorizedotnet] fix deserialization error for Paypal while canceling payment (#7141)
- [worldpay] remove threeDS data from Authorize request for NTI flows (#7097)
- Handle unexpected error response from bluesnap connector (#7120)
- [worldpay] send decoded token for ApplePay (#7069)
- [fiuu] zero amount mandate flow for wallets (#7261)
- core:
- Card_network details Missing in Customer Payment Methods List for External 3DS Authentication Payments (#6739)
- Add validation to check if routable connector supports network tokenization in CIT repeat flow (#6749)
- Payments - map billing first and last name to card holder name (#6791)
- Populate off_session based on payments request (#6855)
- Add payment_link_data in PaymentData for Psync (#7137)
- payment_methods: Card_network and card_scheme should be consistent (#6849)
- payments_list: Handle same payment/attempt ids for different merchants (#6917)
- router:
- Consider status of payment method before filtering wallets in list pm (#7004)
- Invalidate surcharge cache during update (#6907)
Refactors
Hyperswitch v1.112.0
1.112.0 (2024-11-25)
Docker Release
v1.112.0 (with AWS SES support)
v1.112.0-standalone (without AWS SES support)
Features
- Connector: Plaid connector configs (#5545)
- analytics:
- Add card_network as a field in payment_attempts clickhouse table (#5807)
- Add card network filter (#6087)
- Add metrics, filters and APIs for Analytics v2 Dashboard - Payments Page (#5870)
- Add
customer_id
as filter for payment intents (#6344) - Implement currency conversion to power multi-currency aggregation (#6418)
- charges: Integrated PaymentSync for stripe connect (#4771)
- connector:
- Add support for Samsung Pay payment method (#5955)
- [WELLSFARGO] Implement Payment Flows (#5463)
- Create Taxjar connector (#5597)
- [Paybox] add paybox connector (#5575)
- [Adyen] add dispute flows for adyen connector (#5514)
- [FISERVEMEA] Integrate cards (#5672)
- [Fiuu] Add Card Flows (#5786)
- [Fiuu] Add DuitNow/FPX PaymentMethod (#5841)
- [Novalnet] add Payment flows for cards (#5726)
- [DEUTSCHEBANK] Integrate SEPA Payments (#5826)
- [Novalnet] add Recurring payment flow for cards (#5921)
- [DEUTSCHEBANK] Implement SEPA recurring payments (#5925)
- [Paybox] Add 3DS Flow (#6088)
- [Nexixpay] add Payment & Refunds flows for cards (#5864)
- [Novalnet] add webhooks for card (#6033)
- Integrate PAZE Wallet (#6030)
- Add 3DS flow for Worldpay (#6374)
- [Novalnet] Integrate wallets Paypal and Googlepay (#6370)
- [Fiuu] Add support for cards recurring payments (#6361)
- [Paybox] Add mandates Flow for Paybox (#6378)
- [Paypal] implement vaulting for paypal wallet and cards while purchasing (#5323)
- [worldpay] add support for mandates (#6479)
- core:
- Add network transaction id support for mit payments (#6245)
- Add support for payment links localization (#5530)
- Add mTLS certificates for each request (#5636)
- Add Support for Payments Dynamic Tax Calculation Based on Shipping Address (#5619)
- Add support for card network tokenization (#5599)
- Add payments post_session_tokens flow (#6202)
- opensearch:
- routing:
- users:
Bug Fixes
- analytics:
- Fix refund status filter on dashboard (#6431)
- connector:
- Fixed status mapping for Plaid (#5525)
- [Bambora Apac] failure on missing capture method and billing address requirement in mandates (#5539)
- Skip 3DS in
network_transaction_id
flow for cybersource (#5781) - [Stripe] fix cashapp webhooks response deserialization failure (#5690)
- [Adyen] Add MYR currency config (#6442)
- Expiration Year Incorrectly Populated as YYYY Format in Paybox Mandates (#6474)
- [fiuu]fix mandates for fiuu (#6487)
- core:
- Fix connector mandate details for setup mandate (#6096)
- Fix setup mandate payments to store connector mandate details (#6446)
- PMD Not Getting Populated for Saved Card Transactions (#6497)
- Fixed deserialize logic in pm_auth core (#5615)
- [Adyen] prevent partial submission of billing address and add required fields for all payment methods (#5660)
- Skip external three_ds flow for recurring payments (#5730)
- Fix billing details path in required field (#5992)
- Persist card_network if present for non co-badged cards (#6212)
- Update nick_name only if card_token.card_holder_name is non empty and populate additional card_details from payment_attempt if not present in the locker (#6308)
- Set the eligible connector in the payment attempt for nti based mit flow (#6347)
- Get apple pay certificates only from metadata during the session call (#6514)
- Add card expiry check in the
network_transaction_id_and_card_details
basedMIT
flow (#6504) - Fix routing routes to deserialise correctly (#5724)
- Fix
status_code
being logged as string instead of number in logs (#5850)
Refactors
- auth: Pass
profile_id
from the auth to core functions (#5520) - business_profile:
- connector:
- core:
- Use hyperswitch_domain_models within the Payments Core instead of api_models (#5511)
- Update shipping_cost and order_tax_amount to net_amount of payment_attempt (#5844)
- Add connector mandate id in
payments_response
based on merchant config (#5999) - Populate shipping_cost in payment response (#6351)
- Interpolate success_based_routing config params with their specific values (#6448)
- Unify locker api function call (#5863)
- Use the saved billing details in the recurring payments (#5631)
- Add domain type for merchant_connector_account id (#5685)
- Profile based routes for payouts (#5794)
- Add
phone
andcountry_code
in dynamic fields ([#5968](https://github.com/juspa...
Hyperswitch v1.111.0
1.111.0 (2024-08-22)
Docker Release
v1.111.0 (with AWS SES support)
v1.111.0-standalone (without AWS SES support)
Features
- auth:
- business_profile: Introduce domain models for business profile v1 and v2 APIs (#5497)
- connector:
- core: Accept business profile in core functions for payments, refund, payout and disputes (#5498)
- opensearch: Updated status filter field name to match index and added time-range based search (#5468)
- payment_link: Add provision for secured payment links (#5357)
- payments: Support sort criteria in payments list (#5389)
- Add env variable for enable key manager service (#5442)
- Rename columns in organization for v2 (#5424)
Bug Fixes
- connector: [Pix] convert data type of pix fields (#5476)
- core: Update pm_status accordingly for the respective attempt status (#5560)
- open_payment_links: Send displaySavedPaymentMethods as false explicitly for open payment links (#5501)
- payment_link: Move redirection fn to global scope for open links (#5494)
- Added created at and modified at keys in PaymentAttemptResponse (#5412)
- [CYBERSOURCE] Update status handling for AuthorizedPendingReview (#5542)
Refactors
- configs: Include env for cybersource in integration_test (#5474)
- connector: Add amount conversion framework to placetopay (#4988)
- id_type: Use macros for defining ID types and implementing common traits (#5471)
- merchant_account_v2: Recreate id for
merchant_account
v2 (#5439) - opensearch: Add Error Handling for Empty Query and Filters in Request (#5432)
- role: Determine level of role entity (#5488)
- router:
- routing: Api v2 for routing create and activate endpoints (#5423)
Compatibility
This version of the Hyperswitch App server is compatible with the following versions of other components:
- Control Center Version: v1.33.0
- Web Client Version: v0.80.0
- WooCommerce Plugin Version: v1.6.1
- Card Vault Version: v0.4.0
- Key Manager: V0.1.3
Database Migrations
-- DB Difference between v1.110.0 and v1.111.0
-- Add a new column for allowed domains and secure link endpoint
ALTER table payment_link ADD COLUMN IF NOT EXISTS secure_link VARCHAR(255);
-- Your SQL goes here
ALTER TABLE organization
ADD COLUMN id VARCHAR(32);
ALTER TABLE organization
ADD COLUMN organization_name TEXT;
-- Your SQL goes here
ALTER TABLE roles ADD COLUMN entity_type VARCHAR(64);
Configuration Changes
Diff of configuration changes between v1.110.0
and v1.111.0
diff --git a/config/deployments/sandbox.toml b/config/deployments/sandbox.toml
index 5fb7bfe0d..730f78291 100644
--- a/config/deployments/sandbox.toml
+++ b/config/deployments/sandbox.toml
@@ -30,7 +30,7 @@ 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"
-bamboraapac.base_url = "https://demo.ippayments.com.au/interface/api/dts.asmx"
+bamboraapac.base_url = "https://demo.ippayments.com.au/interface/api"
bankofamerica.base_url = "https://apitest.merchant-services.bankofamerica.com/"
billwerk.base_url = "https://api.reepay.com/"
billwerk.secondary_base_url = "https://card.reepay.com/"
@@ -70,6 +70,7 @@ 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"
+paybox.base_url = "https://preprod-ppps.paybox.com/PPPS.php"
payeezy.base_url = "https://api-cert.payeezy.com/"
payme.base_url = "https://sandbox.payme.io/"
payone.base_url = "https://payment.preprod.payone.com/"
Full Changelog: v1.110.0...v1.111.0
Hyperswitch v1.110.0
1.110.0 (2024-08-02)
Docker Release
v1.110.0 (with AWS SES support)
v1.110.0-standalone (without AWS SES support)
Features
- connector:
- [BRAINTREE] Implement Card Mandates (#5204)
- [RazorPay] Add new connector and Implement payment flows for UPI payment method (#5200)
- [Bambora APAC] Add payment flows (#5193)
- [DATATRANS] Implement card payments (#5028)
- Plaid connector Integration (#3952)
- [Itau Bank] Add payment and sync flow for Pix (#5342)
- [Itaubank] Add refund and rsync flow (#5420)
- [HELCIM] Move connector to hyperswitch_connectors (#5287)
- FRM Analytics (#4880)
- Customer_details storage in payment_intent (#5007)
- Added integrity framework for Authorize and Sync flow with connector as Stripe (#5109)
- Add merchant order reference id (#5197)
- Billing_details inclusion in Payment Intent (#5090)
- Constraint Graph for Payment Methods List (#5081)
- Add retrieve flow for payouts (#4936)
- Payments core modification for open banking connectors (#3947)
- Add support to register api keys to proxy (#5168)
- Add hashed customer_email and feature_metadata (#5220)
- Forward the tenant configuration as part of the kafka message (#5224)
- Implement tag-based filters in global search (#5151)
- Added search_tags based filter for global search in dashboard (#5341)
- Added recipient connector call for open banking connectors (#3758)
- Add multiple custom css support in business level (#5137)
- Add support to migrate existing customer PMs from processor to hyperswitch (#5306)
- Secure payout links using server side validations and client side headers (#5219)
- Add country, currency filters for payout methods (#5130)
- Added balance check for PM auth bank account (#5054)
- Add support to pass proxy bypass urls from configs (#5322)
- Add refunds manual-update api (#5094)
- Pass fields to indicate if the customer address details to be connector from wallets (#5210)
- Pass the shipping email whenever the billing details are included in the session token response (#5228)
- Add integrity check for refund refund sync and capture flow with stripe as connector (#5187)
- Add an api to migrate the payment method (#5186)
- Add support for passing the domain dynamically in the session call (#5347)
- Add support for https in actix web (#5089)
- Add support for custom outgoing webhook http headers (#5275)
- Create key in encryption service for merchant and user (#4910)
- Encryption service integration to support batch encryption and decryption (#5164)
- Add create retrieve and update api endpoints for organization resource (#5361)
- Create additional columns in organization table (#5380)
- Add env variable for enable key manager service (#5465)
Refactors/Bug Fixes
- Add checks for duplicate
auth_method
in create API (#5161) - Fetch customer id from customer object during MIT (#5218)
- [payouts] failure of payout retrieve when token is expired (#5362)
- Modified_at updated for every state change for Payment Attempts (#5312)
- Set
requires_cvv
to false when eitherconnector_mandate_details
ornetwork_transaction_id
is present during MITs (#5331) - Save the
customer_id
in payments create (#5262) - Add aliases on refund status for backwards compatibility (#5216)
- Mark retry payment as failure if
connector_tokenization
fails (#5114) - Update last used when the customer acceptance is passed in the recurring payment (#5116)
override setup_future_usage
filed to on_session based on merchant config (#5195)- Fail refund with bad request error for duplicate refund_id in refunds create flow (#5282)
- Fixed integrity check failures in case of 3ds flow in sync flow (#5279)
- Store
customer_acceptance
in payment_attempt, use it in confirm flow for delayed authorizations like external 3ds flow (#5308) - Store
network_transaction_id
in stripeauthorize
flow (#5399) - Do not update
perform_session_flow_routing
output if theSessionRoutingChoice
is none (#5336) - Make id option in auth select (#5213)
- Clear cookie and alter parsing for sso (#5147)
- Add offset and limit to key transfer API (#5358)
- [Mifinity] fix redirection after payment completion and handle 5xx error (#5250)
- [Mifinity] add a field language_preference in payment request for mifinity payment method data (#5326)
- [Itaubank] add dynamic fields for pix (#5419)
- [boa/cybs] add billing address to MIT request (#5068)
- Change primary key of refund table (#5367)
- Change primary keys in user, user_roles and roles tables (#5374)
- Change primary keys in payment_methods table (#5393)
- Removal of lifetime from the Constraint Graph framework (#5132)
- Update helper functions for deciding whether or not to consume flows based on current status (#5248)
- Changed payment method token TTL to api contract based config from const value (#5115)
- Remove the locker call in the psync flow (#5348)
- Remove id dependency from merchant connector account, dispute and mandate (#5330)
- Use hashmap deserializer for generic_link options (#5157)
- Adding millisecond to Kafka timestamp (#5202)
Compatibility
This version of the Hyperswitch App server is compatible with the following versions of other components:
- Control Center Version: v1.32.0
- Web Client Version: v0.80.0
- WooCommerce Plugin Version: v1.6.1
- Card Vault Version: v0.4.0
- Key Manager: V0.1.3
Database Migrations
---DB Difference between v1.1...
Hyperswitch v1.109.0
1.109.0 (2024-07-05)
Docker Release
v1.109.0 (with AWS SES support)
v1.109.0-standalone (without AWS SES support)
Features
- connector:
- [Stripe] - Stripe connect integration for payouts (#2041)
- [Ebanx] Add payout flows (#4146)
- [Paypal] Add payout flow for wallet(Paypal and Venmo) (#4406)
- [Cybersource] Add payout flows for Card (#4511)
- [AUTHORIZEDOTNET] Implement zero mandates (#4704)
- [AUTHORIZEDOTNET] Implement non-zero mandates (#4758)
- [Iatapay] add upi qr support (#4728)
- [Cybersource] Add support for external authentication for cybersource (#4714)
- [Klarna] Add support for Capture, Psync, Refunds and Rsync flows (#4799)
- [Adyen] Add payouts integration for AdyenPlatform (#4874)
- [MIFINITY] Implement payment flows and Mifinity payment method (#4592)
- [BOA/CYB] Make state,zip optional for Non US CA Txns (#4915)
- [Multisafepay] Add support for Ideal and Giropay (#4398)
- [GPayments] Implement auth and post auth flows for gpayments (#4746)
- [Iatapay] add payment methods (#4968)
- [Payone] add payone connector (#4553)
- [Paypal] Add session_token flow for Paypal sdk (#4697)
- Add access_token flow for Payout Create and Fulfill flow (#4375)
- Add an api to encrypt and migrate the apple pay certificates from connector metadata to
connector_wallets_details
column in merchant connector account (#4790) - Add profile level config to toggle extended card bin (#4445)
- Add support for connectors having separate version call for pre authentication (#4603)
- Create Payout Webhook Flow (#4696)
- Add support for multitenancy and handle the same in router, producer, consumer, drainer and analytics (#4630)
- Pass
required_billing_contact_fields
field in/session
call based on dynamic fields (#4601) - Pass required shipping details field for wallets session call based on
business_profile
config (#4616) - Enable auto-retries for apple pay (#4721)
- Use Ephemeral auth for pm list and pm delete (#4996)
- Implement Process tracker workflow for Payment method Status update (#4668)
- Add an api to enable
connector_agnostic_mit
feature (#4480) - Add support for googlepay step up flow (#2744)
- Add payments manual-update api (#5045)
- Add frm webhook support (#4662)
- Add an api for toggle KV for all merchants (#4600)
- Realtime user analytics (#5098)
- Create API to Verify TOTP (#4597)
- New routes to accept invite and list merchants (#4591)
- Add support to verify 2FA using recovery code (#4737)
- Implement force set and force change password (#4564)
- Implemented openidconnect (#5124)
- Add support for gauge metrics and include IMC metrics (#4939)
- Add metadata info to events (#4875)
- Add audit events payment confirm (#4763)
- Add audit events payment capture (#4913)
Refactors/Bug Fixes
- Add web client and control center services to docker compose setup (#4197)
- Fix stack overflow for docker images (#4660)
- Fix docker compose syntax (#4782)
- Add
max_amount
validation in payment flows (#4645) - Make the constraint graph framework generic and move it into a separate crate (#3071)
- Add visualization functionality to the constraint graph (#4701)
- Rename crate data_models to hyperswitch_domain_models (#4504)
- Move RouterData to crate hyperswitch_domain_models (#4524)
- Move router data response and request models to hyperswitch domain models crate (#4789)
- Move router data flow types to hyperswitch domain models crate (#4801)
- Extract incoming and outgoing webhooks into separate modules (#4870)
- Move trait ConnectorIntegration to crate hyperswitch_interfaces (#4946)
- Introduce an interface to switch between old and new connector integration implementations on the connectors (#5013)
- Add a new endpoint for Complete Authorize flow (#4686)
- Refactor frm configs (#4581)
- Rename Card struct for payouts to avoid overrides in auto generated open API spec (#4861)
- Store
payment_method_data_billing
for recurring payments (#4513) - Refactor conditional_configs to use Moka Cache instead of Static Cache (#4814)
- [Adyen] send
browser_info
for all the card and googlepay payments (#5173) - [Stripe] Pass optional browser_info to stripe for increased trust (#4374)
- [NMI] Change fields for external auth due to API contract changes (#4531)
- [Klarna] Refactor Authorize call and configs for prod (#4750)
- [Adyen] handle redirection error response (#4862)
- [Stripe] Changed amount to minor Unit for stripe (#4786)
- Make save_payment_method as post_update_tracker trait function (#4307)
- Add support to enable pm_data and pm_id in payments response (#4711)
- Refactor the Knowledge Graph to include configs check, while eligibility analysis (#4687)
- Move openapi to a separate folder (#4859)
- Store
card_network
in locker (#4425) - Enable deletion of default Payment Methods (#4942)
- Changed payment method token TTL to api contract based config from const value (#5209)
- Deprecate Signin, Verify email and Invite v1 APIs (#4465)
- Add password validations (#4555)
Compatibility
This version of the Hyperswitch App server is compatible with the following versions of other components:
- Control Center Version: v1.31.0
- Web Client Version: v0.71.11
- WooCommerce Plugin Version: v1.6.1
- Card Vault Version: v0.4.0
Database Migrations
-- DB Difference BETWEEN v1.108.0 AND v1.109.0
ALTER TABLE payouts ADD COLUMN IF NOT EXISTS confi...
Hyperswitch v1.108.0
1.108.0 (2024-05-03)
Docker Release
v1.108.0 (with KMS)
v1.108.0-standalone (without KMS)
Features
- connector:
- [3dsecure.io] Add threedsecureio three_ds authentication connector (#4004)
- [Checkout] add support for external authentication for checkout connector (#4006)
- [AUTHORIZEDOTNET] Audit Connector (#4035)
- [billwerk] implement payment and refund flows (#4245)
- [Netcetera] Integrate netcetera connector with pre authentication flow (#4293)
- [NMI] External 3DS flow for Cards (#4385)
- [Netcetera] Implement authentication flow for netcetera (#4334)
- [Netcetera] Add webhook support for netcetera (#4382)
- [BOA] implement mandates for cards and wallets (#4232)
- [Ebanx] Add payout flows (#4146)
- [Paypal] Add payout flow for wallet(Paypal and Venmo) (#4406)
- [BOA/Cybersource] add avs_response and cvv validation result in the response (#4376)
- [Cybersource] Add NTID flow for cybersource (#4193)
- Add api_models for external 3ds authentication flow (#3858)
- Add core functions for external authentication (#3969)
- Confirm flow and authorization api changes for external authentication (#4015)
- Add incoming header request logs (#3939)
- Add payments authentication api flow (#3996)
- Add routing support for token-based mit payments (#4012)
- Add local bank transfer payment method (#4294)
- Add external authentication webhooks flow (#4339)
- Add retrieve poll status api (#4358)
- Handle authorization for frictionless flow in external 3ds flow (#4471)
- Customer kv impl (#4267)
- Add cypress test cases (#4271)
- Add audit events scaffolding (#3863)
- Add APIs to list webhook events and webhook delivery attempts (#4131)
- Add events framework for registering events (#4115)
- Add payment cancel events (#4166)
- Dashboard globalsearch apis (#3831)
- Add kv support for mandate (#4275)
- Allow off-session payments using
payment_method_id
(#4132) - Added display_sdk_only option for displaying only sdk without payment details (#4363)
- Add support for saved payment method option for payment link (#4373)
- API to list countries and currencies supported by a country and payment method type (#4126)
- Added kv support for payment_methods table (#4311)
- Implement Single Connector Retry for Payouts (#3908)
- Implement KVRouterStore (#3889)
- Implement list and filter APIs (#3651)
- Support different pm types in PM auth (#3114)
- Add new API get the user and role details of specific user (#3988)
- Implement automatic retries for failed webhook deliveries using scheduler (#3842)
- Allow manually retrying delivery of outgoing webhooks (#4176)
- Store payment check codes and authentication data from processors (#3958)
- Stripe connect integration for payouts (#2041)
- Add support for merchant to pass public key and ttl for encrypting payload (#4456)
- Add an api for retrieving the extended card info from redis (#4484)
Refactors/Bug Fixes
- Use fallback to
connector_name
ifmerchant_connector_id
is not present (#4503) - Use first_name if last_name is not passed (#4360)
- Generate payment_id if not sent (#4125)
- Send valid sdk information in authentication flow netcetera (#4474)
- Fix wallet token deserialization error (#4133)
- Amount received should be zero for
pending
andfailed
status (#4331) - Amount capturable remain same for
processing
status in capture (#4229) - Fix 3DS mandates, for the connector _mandate_details to be stored in the payment_methods table (#4323)
- Handle card duplication in payouts flow (#4013)
- Give higher precedence to connector mandate id over network txn id in mandates (#4073)
- Store network transaction id only when
pg_agnostic
config is enabled in theauthorize_flow
(#4318) - Insert
locker_id
as null in case of payment method not getting stored in locker (#3919) - Update payment method status only if existing status is not active (#4149)
- Fix token fetch logic in complete authorize flow for three ds payments (#4052)
- Handle redirection to return_url from nested iframe in separate 3ds flow (#4164)
- Capture billing country in payments request (#4347)
- Make payment_instrument optional (#4389)
- Remove enabled payment methods for payouts processor (#3913)
- Pass payment method billing to the connector module (#3828)
- Use
billing.first_name
instead ofcard_holder_name
(#4239) - Updated payments response with payment_method_id & payment_method_status (#3883)
- Log the appropriate error message if the card fails to get saved in locker (#4296)
- Make performance optimisation for payment_link (#4092)
- Decouple shimmer css from main payment_link css for better performance (#4286)
- Add a trait to retrieve billing from payment method data (#4095)
- Filter applepay payment method from mca based on customer pm (#3953)
- Enable country currency filter for cards (#4056)
- Add
network_transaction_id
column in thepayment_methods
table (#4005) - Revamp payment methods update endpoint (#4305)
- Store
card_network
in locker (#4425) - Deprecate Signin, Verify email and Invite v1 APIs (#4465)
- Use single purpose token and auth to accept invite (#4498)
- [Checkout] change payment and webhooks API contract (#4023)
Compatibility
This version of the Hyperswitch App server is compatible with the following versions of other components:
- Control Center Version: v1.30.0
- Web Client Version: [v0.35.4](https://gith...
Hyperswitch v1.107.0
1.107.0 (2024-03-12)
Docker Release
v1.107.0 (with KMS)
v1.107.0-standalone (without KMS)
Features
- connector: [Cybersource] Implement 3DS flow for cards (#3290)
- connector: [Volt] Add support for Payments Webhooks (#3155)
- connector: [Volt] Add support for refund webhooks (#3326)
- connector: [BANKOFAMERICA] Implement 3DS flow for cards (#3343)
- connector: [Adyen] Add support for PIX Payment Method (#3236)
- connector: [Payme] Add Void flow to Payme (#3817)
- Add support for PaymentAuthorized, PaymentCaptured webhook events (#3212)
- Add outgoing webhook for manual partial_capture events (#3388)
- Implement hashicorp secrets manager solution (#3297)
- Add a logging middleware to log all api requests (#3437)
- Added sdk layout option payment link (#3207)
- Add capability to store bank details using /payment_methods endpoint (#3113)
- Add Wallet to Payouts (#3502)
- Extend routing capabilities to payout operation (#3531)
- Implement Smart Retries for Payout (#3580)
- Add recon APIs (#3345)
- Payment_method block (#3056)
- Add delete_evidence api for disputes (#3608)
- Add support to delete user (#3374)
- Support multiple invites (#3422)
- Add support for resend invite (#3523)
- Create apis for custom role (#3763)
- Invite user without email (#3328)
- Add transfer org ownership API (#3603)
- Add deep health check (#3210)
- Add support for card extended bin in payment attempt (#3312)
Refactors / Bug Fixes
- Fix the error during surcharge with saved card (#3318)
- Return surcharge in payment method list response if passed in create request (#3363)
- Fix mandate_details to store some value only if mandate_data struct is present (#3525)
- Add column mandate_data for storing the details of a mandate in PaymentAttempt (#3606)
- Validate amount_to_capture in payment update (#3830)
- Add merchant_connector_id in refund (#3303)
- Update amount_capturable based on intent_status and payment flow (#3278)
- Auto retry once for connection closed (#3426)
- Add locker config to enable or disable locker (#3352)
- Restrict requires_customer_action in confirm (#3235)
- Inclusion of locker to store fingerprints (#3630)
- Status mapping for Capture for 429 http code (#3897)
- Change unique constraint to connector label (#3091)
- Segregated payment link in html css js files, sdk over flow issue, surcharge bug, block SPM customer call for payment link (#3410)
- Add Miscellaneous charges in cart for payment links (#3645)
- Handle card duplication (#3146)
- Restricted list payment method Customer to api-key based (#3100)
Compatibility
This version of the Hyperswitch App server is compatible with the following versions of other components:
- Control Center Version: v1.29.9
- Web Client Version: v0.27.2
- WooCommerce Plugin Version: v1.5.1
- Card Vault Version: v0.4.0
Database Migrations
Click to view database migrations
DB Difference between v1.105.1 and v1.107.0 -- Your SQL goes here ALTER TABLE business_profile ADD COLUMN IF NOT EXISTS payment_link_config JSONB DEFAULT NULL; -- Your SQL goes here ALTER TABLE payment_link ADD COLUMN IF NOT EXISTS profile_id VARCHAR(64) DEFAULT NULL; -- Your SQL goes here ALTER TABLE merchant_connector_account ADD UNIQUE (profile_id, connector_label);DROP INDEX IF EXISTS "merchant_connector_account_profile_id_connector_id_index";
-- Your SQL goes here
ALTER TABLE payment_intent ADD COLUMN IF NOT EXISTS session_expiry TIMESTAMP DEFAULT NULL;
-- Your SQL goes hereCREATE TYPE "BlocklistDataKind" AS ENUM (
'payment_method',
'card_bin',
'extended_card_bin'
);CREATE TABLE blocklist_fingerprint (
id SERIAL PRIMARY KEY,
merchant_id VARCHAR(64) NOT NULL,
fingerprint_id VARCHAR(64) NOT NULL,
data_kind "BlocklistDataKind" NOT NULL,
encrypted_fingerprint TEXT NOT NULL,
created_at TIMESTAMP NOT NULL
);CREATE UNIQUE INDEX blocklist_fingerprint_merchant_id_fingerprint_id_index
ON blocklist_fingerprint (merchant_id, fingerprint_id);
-- Your SQL goes hereCREATE TABLE blocklist (
id SERIAL PRIMARY KEY,
merchant_id VARCHAR(64) NOT NULL,
fingerprint_id VARCHAR(64) NOT NULL,
data_kind "BlocklistDataKind" NOT NULL,
metadata JSONB,
created_at TIMESTAMP NOT NULL
);CREATE UNIQUE INDEX blocklist_unique_fingerprint_id_index ON blocklist (merchant_id, fingerprint_id);
CREATE INDEX blocklist_merchant_id_data_kind_created_at_index ON blocklist (merchant_id, data_kind, created_at DESC);
-- Your SQL goes here
ALTER TABLE payment_intent ADD COLUMN IF NOT EXISTS fingerprint_id VARCHAR(64);
ALTER TABLE payment_attempt
ADD COLUMN IF NOT EXISTS net_amount BIGINT;
-- Backfill
UPDATE payment_attempt pa
SET net_amount = pa.amount + COALESCE(pa.surcharge_amount, 0) + COALESCE(pa.tax_amount, 0);
-- Your SQL goes hereCREATE TABLE blocklist_lookup (
id SERIAL PRIMARY KEY,
merchant_id VARCHAR(64) NOT NULL,
fingerprint TEXT NOT NULL
);CREATE UNIQUE INDEX blocklist_lookup_merchant_id_fingerprint_index ON blocklist_lookup (merchant_id, fingerprint);
-- Your SQL goes here
ALTER TABLE business_profile ADD COLUMN IF NOT EXISTS session_expiry BIGINT DEFAULT NULL;
-- Your SQL goes here
ALTER TYPE "EventType" ADD VALUE IF NOT EXISTS 'payment_authorized';
ALTER TYPE "EventType" ADD VALUE IF NOT EXISTS 'payment_captured';
-- Your SQL goes here
ALTER TABLE users ADD COLUMN preferred_merchant_id VARCHAR(64);
-- Your SQL goes here
ALTER TYPE "DashboardMetadata" ADD VALUE IF NOT EXISTS 'integration_completed';
-- Your SQL goes here
ALTER TABLE payout_attempt
ALTER COLUMN connector TYPE JSONB USING jsonb_build_object (
'routed_through', connector, 'algorithm', NULL
);ALTER TABLE payout_attempt ADD COLUMN routing_info JSONB;
UPDATE payout_attempt
SET
routing_info = connector -> 'algorithm'
WHERE
connector ->> 'algorithm' IS NOT NULL;ALTER TABLE payout_attempt
ALTER COLUMN connector TYPE VARCHAR(64) USING connector ->> 'routed_through';ALTER TABLE payout_attempt ALTER COLUMN connector DROP NOT NULL;
CREATE type "TransactionType" as ENUM('payment', 'payout');
ALTER TABLE routing_algorithm
ADD COLUMN algorithm_for "TransactionType" DEFAULT 'payment' NOT NULL;ALTER TABLE routing_algorithm
ALTER COLUMN algorithm_for
DROP DEFAULT;
-- Your SQL goes here
ALTER TYPE "PayoutType" ADD VALUE IF NOT EXISTS 'wallet';
-- Your SQL goes here
ALTER TABLE payouts
ADD COLUMN attempt_count SMALLINT NOT NULL DEFAULT 1;UPDATE payouts
SET attempt_count = payout_id_count.count
FROM (SELECT payout_id, count(payout_id) FROM payout_attempt GROUP BY payout_id) as payout_id_count
WHERE payouts.payout_id = payout_id_count.payout_id;
-- Your SQL goes here
ALTER TABLE payment_attempt
ADD COLUMN IF NOT EXISTS mandate_data JSONB DEFAULT NULL;
-- Your SQL goes here
ALTER TABLE payment_attempt ADD COLUMN IF NOT EXISTS fingerprint_id VARCHAR(64);
-- Your SQL goes here
CREATE TYPE "RoleScope" AS ENUM ('merchant','organization');CREATE TABLE IF NOT EXISTS roles (
id SERIAL PRIMARY KEY,
...