Hyperswitch customization

Hyperswitch customization covers new connectors, routing logic, Control Center and SDK changes built so the deployment can still take upstream releases. This page explains the scope, cost drivers, risks and what your team needs to provide.

On this page

What Hyperswitch customization involves

Customization on Hyperswitch means changing code or service dependencies that ship with the platform. In practice that covers new or modified connectors in the Rust core app server, routing logic, changes to the Control Center merchant dashboard, changes to the client SDKs for web, Android, iOS, React Native and Flutter, and configuration that relies on a service such as Superposition. Configuration that needs no code is different in kind: connecting any of the more than 100 supported processors, choosing a routing strategy, or enabling wallets such as Apple Pay and Google Pay through existing settings. Before scoping work, confirm that the need cannot be met that way.

Three triggers usually start this work. The first is a processor that is not yet among the supported connectors, which means a new connector module in the core. The second is a merchant workflow the dashboard does not cover, which points to Control Center changes. The third is a need to change how payment flows reach the checkout SDKs, which lands in client code. Each trigger touches a different codebase and possibly a different team, so write down which layers a change crosses and who owns each one. A change that spans core, dashboard and SDK code costs more to test and to carry forward than a change confined to one layer.

For most teams the short answer is this. Engineers with Rust and payments experience can often build small connector changes in-house, provided they can test against sandbox processor accounts and read the core code closely. Larger or multi-surface changes usually benefit from a partner who can also keep the fork close to upstream. Hyperswitch ships roughly monthly minor releases, each with a compatibility matrix for Control Center and web client versions, so every local change becomes a merge cost that recurs. Confirm the Superposition service requirement and the release you are targeting before you start.

What the work includes

Each package below carries its own configuration and dependency work, and the written scope sets which packages apply to your deployment before work starts.

Connector build or change

Adding a processor connector or changing an existing one in the Rust core app server, including request and response mapping, webhook handling and error code translation. Check how the connector handles credentials and secrets, and list any new settings or environment variables it needs. Confirm each change against the processor's sandbox before it reaches live traffic.

Routing logic changes

Adjusting routing within the six documented strategies: rule-based, volume-based, auth-rate, multi-objective, least cost for debit networks, and default fallback. Work covers rule definitions, processor eligibility and fallback order, along with the configuration each rule depends on. Check how a change behaves when no rule applies and when a processor is ineligible.

Control Center changes

Custom changes to the Control Center merchant dashboard, which is licensed under Apache 2.0, such as added views, connector setup screens or refund and dispute workflows that match your operating model. Each change touches the frontend build, its API calls to the core app server and role permissions inside Hyperswitch. Check the compatibility matrix for the Control Center version you run.

Client SDK changes

Modifications to the client SDKs for web, Android, iOS, React Native and Flutter, such as checkout fields, payment method display or error handling. Each platform has its own build, release and dependency chain, so the work is scoped and tested per platform. Check that SDK versions match the core server and Control Center versions in each release's compatibility matrix.

Upstream tracking setup

Keeping customized code close to upstream through a fork or patch layer, with a test suite that runs against each new release before upgrade. Release reviews also check new required dependencies, such as the Superposition service that v1.124.0 made mandatory before upgrading. Ask how many changes sit in patches versus forked files, since that ratio drives the effort of each monthly upgrade.

Deliverables handed over

Working code in your repository, tests covering custom connectors, routing and SDK behavior, and updated runbooks for operations and upgrades. You also receive a written change register listing every divergence from upstream and the reason for each one. Ask for this register in the quote, since it is the main input for estimating future upgrade effort.

What drives cost and duration

This table lists the factors that change the effort and timeline of a Hyperswitch customization, why each one matters, and how to keep it under control, with the divergence surface and test coverage marked as the main sources of recurring upgrade cost.

DriverWhy it mattersHow to keep it down
Number of connectors and API documentation completenessEach new connector is custom code that must map a processor's request, response, webhook and error model. Incomplete processor API documentation adds discovery work and rework during testing.Limit the first release to processors with a confirmed business need. Ask each processor for complete sandbox access and current API references before estimating.
Reach into the core app server versus Control Center or SDKsChanges inside the Rust core app server touch routing, retries and vaulting, and every such change becomes a merge task at each upgrade. Changes in the Control Center or SDKs add front-end and client release cycles.Put new behavior in configuration or separate services where possible. Keep core edits small, documented and listed as a divergence register item.
Number of payment methods and walletsEach payment method carries its own flows, currencies, refund rules and wallet-specific steps such as Apple Pay or Google Pay onboarding. Coverage multiplies test cases across processors.Scope the first release to the methods that carry most volume. Add others as separate, dated change requests.
Interaction of routing logic with existing rulesNew routing rules can change which processor handles existing traffic, including fallback behavior when no rule applies or a processor is ineligible. Overlapping rules are hard to reason about and test.Document current rule order before changes. Test new rules against recorded traffic patterns and keep a tested rollback to the prior rule set.
Number of environments that must be testedEach self-hosted environment, such as development, staging, pre-production and production, needs its own configuration, secrets and test runs. Superposition or other required services must exist in every environment.Keep environment definitions in code so changes are applied the same way everywhere. Confirm the number of environments in the written scope.
Work touching vault or PCI-related code pathsChanges near card data, the card vault or encryption keys expand the PCI DSS assessment scope and require stronger evidence, review and sign-off from both the internal team and the assessor.Keep card data handling out of custom code where a supported vault option exists. Isolate and review any change that reaches these paths before it is planned.
Upstream releases inside the project windowHyperswitch ships roughly monthly minor releases, and each one can change APIs, database migrations or compatibility requirements. The more releases fall inside the project window, the more merges and regression runs the team must absorb.Confirm the release cadence and compatibility matrix for each release in the window. Plan merge and regression time for each release rather than treating upgrades as one event at the end.
Divergence surface and test coverage (recurring cost)Every change to a core file adds merge work at each upgrade. A large divergence surface with thin automated tests makes each upgrade slower and riskier, and this cost recurs for the life of the deployment.Track the list of modified upstream files from day one. Build automated regression tests for every custom connector and routing rule, and ask for the divergence count and test coverage figures in any quote.

Project phases and outputs

The sequence keeps every change traceable to a recorded decision, tested outside production and repeatable through upstream merges.

  1. Assess the current deployment and divergence

    DeployOpen reviews your current Hyperswitch deployment, the release it runs, and the Control Center and SDK versions in use. The team lists every connector, file and configuration you plan to touch and records how far each one already diverges from upstream. The output is a divergence assessment that you approve before design starts.

  2. Design extension points and the change register

    The team maps each requested change to an extension point, preferring configuration wherever Hyperswitch supports it. Each remaining code change gets a change register entry with its owner, reason, affected files and expected upstream conflict risk. The output is a signed-off design and change register that defines what the customization covers.

  3. Build connectors, routing and dashboard changes behind tests

    Engineers build the approved changes, which may include connectors, routing logic, Control Center or SDK modifications. Each change ships with automated tests and lives in version control, and routing changes run against sample payment scenarios before any shared environment receives them. The output is a tested change set that maps one-to-one to the register entries.

  4. Verify in a non-production environment

    The customized build is deployed to a non-production environment that matches your Kubernetes and database setup. Testing checks the Control Center and web client versions against the compatibility matrix published with the chosen Hyperswitch release, along with connector, routing and SSO paths. The output is a test report listing each mismatch, its fix and the approval to promote.

  5. Hand over the deployment and runbooks

    DeployOpen transfers the customized deployment to your platform and security teams with runbooks for deploying, rolling back and reading the change register. Your engineers run a supervised deployment to confirm the handover works without the implementation team present. The output is a handover pack with runbooks, the change register and access records.

  6. Rehearse an upstream merge against a newer release

    The team merges a newer upstream release into a copy of the customized code, starting with v1.128.0 as the first rehearsal target, and logs every conflict. Each conflict is resolved against the change register, then the build is retested in the non-production environment. The output is a merge log and a repeatable upgrade procedure that shows whether monthly upgrades remain practical for your change set.

What your team keeps and what a partner takes on

This table compares which Hyperswitch customization work your payments and engineering teams should keep in-house and which work a partner can usually carry, with the skills each side needs.

Work areaUsually kept in-houseUsually outsourcedSkills required
Processor and routing decisionsChoosing which processors to add, setting the routing policy (rule-based, volume-based, auth-rate, least cost or fallback order) and signing off the business impactModeling routing options, drafting rule sets and running test scenarios against the agreed policyPayments product ownership, acquirer and processor commercial knowledge, risk and finance input
Connector behavior and error mappingApproving which processor responses map to which declines, retries and customer messagesWriting and testing connector logic, request and response transforms and error mapping tablesPayment engineering, processor API documentation, familiarity with card network decline codes
Rust core app server changesDefining required behavior, acceptance criteria and risk review for any change to routing, retries or vaultingImplementing changes in the Rust core app server, unit and integration tests and code reviewRust engineering, async and database work, familiarity with the Router and Scheduler services
Control Center React changesDeciding which merchant screens and operator workflows change and who may use themBuilding React changes in the Control Center, keeping them aligned with upstream components and testing themReact and TypeScript, Control Center code structure, role and permission model in Hyperswitch
SDK work per platformSetting checkout requirements, supported payment methods and sign-off on the customer experienceChanging web, Android, iOS, React Native or Flutter SDK code and testing each platform buildNative and cross-platform mobile and web development, payment sheet behavior, release management per platform
Test automation and merge managementApproving test coverage, go-live criteria and which upstream changes are accepted into the deploymentBuilding regression suites, maintaining test environments and managing rebases onto each upstream releaseCI/CD, test automation frameworks, Git branching strategy, release engineering
Change register ownershipOwning the register of every customization, its business reason, owner and retirement conditionRecording technical detail, diffs against upstream and the impact of each change on upgradesTechnical writing, configuration management, change control and audit evidence practices
Business rules and sign-offOwning the business rules, approving changes and accepting the risk, even when the partner writes the codeProposing implementation options and documenting how each rule is enforced in codePayments operations, compliance review, decision authority recorded in writing

What goes wrong and how to prevent it

Hyperswitch customizations tend to fail slowly, through drift from upstream and untested assumptions, not in a single visible break. The cards below name the failure modes we see most often and the controls that keep a customized deployment upgradable.

Fork too costly to merge

A heavily modified fork can drift so far from the upstream repository that each minor release becomes a manual merge project. Keep a change register that lists every local modification, its purpose and its size, and rehearse upstream merges automatically on a branch each time a new release lands. If a rehearsal takes longer than the change is worth, the change needs redesigning before it grows.

Edits made to core files

Changing core Rust router code or shared modules directly makes every upstream merge touch logic your team owns, and makes review harder for the next engineer. Where Hyperswitch offers an extension point, such as a connector module added alongside existing ones, build the change there. Flag any edit to a core file in the change register with a reason and a reviewer.

Connectors tested only against sandboxes

A connector that passes processor sandbox tests can still fail on real traffic, for example on partial captures, declines with unusual codes, 3-D Secure challenges, webhook retries or timeouts. Test the connector against recorded real-world response cases, including error and edge paths, before enabling it for live routing. Confirm with the processor which edge cases its sandbox does not reproduce.

Missing new required dependencies

Some releases add a dependency the deployment must run before upgrading. The v1.124.0 release notes state that Superposition became a required configuration dependency, and that a Superposition service must be running before the upgrade. Read the release notes for every version between your current and target release, and add new required services to the upgrade plan and the infrastructure backlog before the upgrade window.

Control Center breaks on matrix changes

Each Hyperswitch release publishes a compatibility matrix for Control Center and web client versions. A custom dashboard build can stop working when the core API moves and the matrix changes. Pin Control Center and client versions to the matrix entry for the release you run, and test dashboard customizations against the next matrix entry in staging before upgrading production.

SDK changes differ by platform

Client SDK changes for web, Android, iOS, React Native and Flutter are separate code bases, and a change that works on one platform can silently fail on another. Keep a per-platform test matrix for each SDK customization, run the same payment journeys on every platform in the release pipeline, and record which platforms a change has been verified on in the change register.

Undocumented divergences from upstream

When the engineer who made a customization leaves, nobody may be able to explain why a routing tweak, patch or config override exists. Require every divergence from upstream to have a named owner, a written reason, a test that proves it still matters and a removal condition. Review the register at each upstream release and retire entries that the upstream product now covers.

How the work differs by starting point

Your team runs an unmodified self-hosted Hyperswitch deployment and needs a few connectors added. This is the narrowest scope. Most of the work sits in connector configuration and testing, and the upgrade path stays close to the standard one.

  • Scope: Connector setup and routing configuration for a small number of processors, with test transactions in a sandbox before live traffic.
  • Effort drivers: Each processor's API behavior, credential handling, webhook design, and the number of payment methods and currencies each connector must cover.
  • Upgrade path: Changes kept in configuration are the easiest to carry across monthly minor releases, so this tab usually has the lightest ongoing cost.
  • Confirm first: Whether each processor is already in the supported set or must be built, and which payment methods and currencies are required.

What your team needs to provide

Hyperswitch customization cannot start until your team provides access, inventory and decisions that the build depends on. The most important of these is an exact record of the deployed Hyperswitch version and Control Center version, because connector, routing and dashboard changes must be tested against the compatibility matrix published with each release. Without that inventory, the first weeks of work go to discovery rather than changes.

Your team should supply read and write access to the Hyperswitch repository and deployment pipelines, along with a current Helm values set for each environment. For every connector in scope, provide processor API credentials and sandbox accounts, and confirm which processor features are enabled, such as 3-D Secure or network tokens. Sample request and response payloads are needed for tests, but they must be scrubbed of cardholder data and merchant secrets before they leave your environment.

Routing decisions need named owners. Confirm who approves changes to rule-based routing, volume splits, auth-rate thresholds and default fallback order, and what evidence they need before a change goes live. Name owners in payments, security and platform engineering, since each will review different parts of the change.

Provide a test environment that mirrors production configuration, including the vault model, Superposition if your version requires it, PostgreSQL and Redis settings, and network paths to each processor sandbox. Then decide, in writing, whether card data may ever appear in a test environment. Most teams should answer no and use vault test tokens instead. The PCI DSS scope of the deployment depends on the vault model you choose, so confirm that boundary with your assessor, not inside the customization work.

Common questions about Hyperswitch customization

Can we add a payment connector to Hyperswitch without forking the core?

It depends on what the connector needs from the core, so confirm the extension points against the repository for your target version before design starts. Hyperswitch connects to more than 100 processors, so an existing connector is the cheapest starting point. A new connector that needs changes to shared routing, vault or data models means carrying code that upstream does not own. Each core edit should go into the change register with its reason, the files touched and the test that covers it, so the upgrade team knows exactly what to re-apply.

How do customizations affect monthly Hyperswitch upgrades?

Every core change you carry is code the upgrade must merge, so upgrade effort grows with the size and spread of your changes. Hyperswitch ships roughly monthly minor releases, and each release lists a compatibility matrix for Control Center and web client versions. The main drivers are how many of your patches touch files upstream also changed, whether a release adds a required dependency, and whether the change register is current. For example, v1.124.0 made Superposition a required configuration dependency that must run before you upgrade.

Do Control Center and SDK changes need the same skills as core work?

They need overlapping skills, but the front-end and mobile work is a different specialty from the Rust core. Control Center is an open source dashboard under Apache 2.0, and the client SDKs cover web, Android, iOS, React Native and Flutter, so each change needs front-end or mobile experience plus an understanding of the API it calls. Core changes to the Rust app server need Rust and payments-flow knowledge. Ask for the skill mix in the quote, and require the change register to record Control Center and SDK versions next to the core version, since the compatibility matrix links them.

How much does the number of connectors change the effort?

Connector count mostly drives testing and reconciliation work, and the connector code is only part of it. Each connector adds authorization, capture, refund and dispute mappings, credential handling, webhook verification and routing entries across the six routing strategies. The main drivers are how many processors you need at launch, how similar their APIs are, whether any of them requires core edits, and how many routing rules need testing. Ask the quote to show build effort per connector separately from recurring upgrade testing per connector.

What must our team do during a project, and can we build it ourselves?

Your team supplies decisions, access and people who can test real payment flows, including named owners for the vault model, the processors in scope and routing priorities. Engineers need access to the environments, the PostgreSQL and Redis setup and a Kubernetes cluster for the Helm deployment. Yes, you can build it yourselves if you have Rust, Kubernetes and payments experience, since Hyperswitch is Apache 2.0 licensed. The harder ongoing work is keeping the change register and compatibility matrix current each month. Ask for a build-only quote and a build-plus-retainer quote so you can compare the internal time each one requires.

What happens when Hyperswitch changes an API that our customization depends on?

The failure usually shows up first in your staging upgrade test, before it reaches production. The team then reads the release notes and the compatibility matrix, adapts the affected connector or wrapper, and records the change in the register with the tests that now pass. Some fixes can be proposed back upstream, but do not plan your schedule around how long an upstream merge takes. Ask how breaking changes are triaged and priced in any retainer, and whether the upgrade test suite covers routing and vault paths.

How DeployOpen delivers Hyperswitch customization

DeployOpen plans, builds, tests, documents and supports customizations to a self-hosted Hyperswitch deployment inside infrastructure you control. The work is organized so that each change is written down, verified and kept as close to upstream as the requirement allows.

How we scope

  • Each engagement starts with a written scope listing the connectors, routing logic, Control Center or SDK changes covered
  • We map every planned change against the upstream modules it touches to show how far it moves away from upstream
  • The scope names the vault model in use, since it determines which components and systems a change can affect
  • Engagements are fixed-scope, with scope, deliverables and timelines agreed in writing before work begins

How we build

  • Changes are developed as isolated modifications so they can be reapplied cleanly when upstream releases arrive
  • Connector and routing changes are tested in a non-production environment before any live payment traffic is involved
  • Control Center and SDK modifications are checked against the compatibility matrix for the target Hyperswitch version
  • Dependencies such as Superposition are confirmed as running before any build targets a version that requires them

How we hand over

  • You receive the source changes, build artifacts and deployment configuration needed to reproduce the customized release
  • Test evidence for connectors, routing rules and dashboard changes is delivered with the code
  • Runbooks describe how to rebase customizations onto a new monthly release and how to roll back a failed upgrade
  • Documentation records every deviation from upstream so your team and future reviewers can see what was changed and why

How we support

  • Ongoing support, upgrades and continuous testing are available as a retainer after handover
  • Support can cover rebasing customizations onto each monthly minor release and reviewing its compatibility matrix
  • Confirm with DeployOpen in your quote exactly which upgrade and testing tasks a retainer includes
  • Support scope for changes to the card vault or PCI-relevant systems should be agreed separately with your assessor in mind

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.