Simplex integration: where card acceptance breaks
A card payment on an exchange is a chain of four links: the payment page, the fiat gateway, confirmation from the issuing bank, and crediting crypto to the balance.
What usually breaks is not the entry point but the junction: the bank has debited the funds, the gateway has not returned a final status, and the transaction hangs between "paid" and "not paid." The customer sees the debit, the balance is missing, and goes to support or straight to the bank.
Then the chargeback mechanics kick in. The customer has the right to dispute the payment, and if the exchange does not provide evidence on time, the amount is returned forcibly—together with the crypto that has already gone to the wallet.
A stuck payment turns into a double loss: the asset is issued, and the money is returned. Some cases are handled manually: correspondence, exports, reconciliation of transaction hashes—with a flow of hundreds of operations, this means hours of support work every day.
Integration of Simplex and similar fiat gateways removes half the problem at the level of status-change notifications and protection against duplicate crediting—but only if the rules for refunding the customer, timeouts, and the manual review procedure are defined in advance.
Otherwise, repeated requests create duplicates, and disputed transactions pile up in a queue with no owner.
The cost of a mistake is not one refund but trust: a customer who waited two days for crediting and received a refusal will not pay by card a second time. Let's look at how this is covered in the integration—step by step.
What connecting a fiat gateway to an exchange changes
The fiat gateway sits between the customer and their balance on the exchange, and the fate of the payment is decided on this segment.
Connecting an external provider—in our case, Simplex—turns card and transfer acceptance into a managed flow: the exchange learns about a change in transaction status at the moment of the event, not when the customer has already written to support.
Crediting speed and payment conversion
The provider sends notifications about every status transition, the exchange processes them and credits funds automatically—the path from payment confirmation to balance is reduced from hours to minutes.
This directly affects payment acceptance conversion: the customer sees intermediate states ("processing," "confirmed") instead of an empty waiting screen and does not leave to look for another deposit method.
The second factor is the set of payment methods for the customer's region and currency. When the available methods do not match what the person actually has on hand, the refusal happens before data entry and appears in reporting not as a refusal but as a failed attempt.
Reducing refund/chargeback share and support load
A payment refund/chargeback almost always comes down to evidence: who performed the operation, when, and on what basis.
The integration stores an identifier, status, time, and customer link for each transaction—this set is enough to dispute a claim rather than close it at your own expense.
As a result, the refund/chargeback rate falls and support load decreases: typical "where is the money" questions are closed by a status in the user account rather than by correspondence.
Transaction reconciliation also stops being manual—it is done by matching provider exports with the internal ledger, and discrepancies surface immediately rather than as a cumulative total.
Payment gateway connection modes: what to choose
The connection mode determines where the user completes identity verification and enters payment data—this affects launch timelines and the share of abandoned payments.
With Simplex integration, three schemes are available: redirect to the provider's page, an embedded payment window inside the exchange, and direct API connection.
Redirect to the provider's page
The user goes to the provider's host, and the exchange receives the final status via webhook and returns it to the agreed address. Payment data and offer acceptance remain on the provider's side, so this is the fastest option in terms of timelines.
The price is a broken session, and the return address must be verified by signature; otherwise, the payment status can be forged.
Embedded payment window inside the exchange
The window opens over the interface, and the user does not leave the exchange until the end of the scenario. The list of available countries and checks come from the provider before the start, so an unavailable region is filtered out immediately.
The domain must be coordinated and window events processed, but retention at the payment step is higher.
| Option | When it fits | Limitations |
|---|---|---|
| Redirect to the provider's page | Fast launch and minimal changes on the exchange side are needed | Broken session, return strictly via signed address, some transitions are lost |
| Embedded payment window inside the exchange | It is important to retain the user and immediately filter out unavailable regions | Domain coordination, window event processing, some countries are closed on the provider side |
| Direct connection | Your own payment interface and analytics for each step | Idempotency, repeated requests, and intermediate statuses need to be handled |
Simplex integration into the exchange environment: work stages
The work is structured so as not to break the existing card acceptance: first we record the actual state of exchange with the provider, then we assemble the payment flow diagram, and only after that do we change the code and status processing rules.
Audit of the current card acceptance environment
- We map the payment flows: who initiates the purchase, where the user limit is stored, how the external transaction identifier is matched with the internal order and balance.
- We analyze incomplete purchases—stuck, timed out, and provider-declined. This is most often where crediting discrepancies are found, so the scenarios are described before development begins.
- We configure status notifications: acceptance confirmation, transaction state change, final result, repeated delivery, and delayed events. We make handlers idempotent—a repeated status must not credit the asset twice.
Verification of refund scenarios
- We go through refunds for all initiators: the user, support, and a payment system claim. For each case, we determine who initiates the refund, how the asset is debited, and what the customer sees in transaction history.
- We reconcile calculations: credits, provider fees, and refunds must fully match reports; discrepancies are closed before handover to operation.
- We hand the environment over to operation: metrics for successful purchase share, timeout cancellations, and refunds, a discrepancy review procedure, support instructions, and test scenarios for post-update checks.
Handover package: diagrams, access keys, and procedures
Simplex integration does not end with a working request to the provider: after launch, the client has a set of documents that the on-call shift or a new engineer can use to bring up the flow without messaging us. Below is the composition of the handover package.
Flow diagrams and role separation
- Connection diagram: calls from request creation to fund crediting, retry points, behavior when the provider is unavailable.
- Environment map: test and production environments, separate key sets, differences in limits and verification logic.
- Access role matrix: who sees payment data, who changes limits and keys, who works only with read access to the journal.
- Key rotation procedure: frequency, responsible parties, changing secrets without stopping the flow.
Procedures for support and finance
- Support instructions: how to review stuck and declined payments, what to check in the first minutes, when to escalate to an engineer.
- Disputed payment procedure: response timelines, evidence base—transaction identifier, statuses, provider notifications—and the procedure for communication with the bank.
- Transaction journal: field composition, retention period, export of a sample for a specific case.
- Acceptance checklist: scenarios that we run together with the client's team before handover.
The set remains with the client alongside the configuration: the flow is brought up from documents, not from the memory of an engineer who has left.
Case study: how the refund/chargeback flow was removed at an exchange
The exchange accepted cards directly through an acquiring bank, and every disputed payment turned into manual review.
The refund/chargeback rate held at about 4% of card transactions, more than half under the scenario "funds debited, crypto not credited"; the first line spent up to 40 minutes on such a request.
What it was like before implementation
Responsibility for risk was blurred: the exchange accepted the claim itself, requested evidence itself, and corresponded with the bank itself.
There was no unified status journal—the operator assembled the history from billing logs, acquirer statements, and email, so the response often exceeded the window allotted by the payment system, and the dispute was closed not in the exchange's favor. On peak days, more than 200 tickets accumulated.
What it became after
We integrated Simplex as a card acceptance layer with its own anti-fraud and status transmission via webhooks.
The operation received a machine-readable identifier: the operator sees the refusal reason without exporting logs, and webhook signature verification prevents status forgery.
The share of disputed payments decreased to 0.6–0.9%—cardholder verification is moved to the payment stage, not the review stage.
The time to review a disputed payment decreased from 40 minutes to 5–7, and support requests about non-crediting dropped by roughly four times.
The successful transaction share grew from 94 to 98.5%: retries happen automatically, and card acceptance stability no longer depends on the on-call shift's workload.
How does direct connection differ from redirect?
The two card acceptance methods differ in where the card number is entered and whose side retains responsibility for that data.
With redirect, the customer goes to the payment service page and returns with the result; with direct connection, the form lives inside the exchange interface, and requests go through the API. This determines the scope of changes, provider requirements, and crediting speed.
| Option | When it fits | Limitations |
|---|---|---|
| Redirect to the provider's page | Fast launch of card acceptance, minimal own data protection requirements | The user leaves the exchange interface, branding is limited, status arrives with delay |
| Direct API connection | Full control of the purchase scenario, your own statuses and retries | More changes, your own processing and logging environment, stricter provider checks |
The difference in responsibility for customer data is fundamental. With redirect, card data does not pass through your infrastructure—only a signed transaction status is returned, and there is nothing to store.
Direct connection via Simplex also tokenizes the card, but the logs, processing environment, and checks become yours.
In scope of work, redirect means request signing, allowed return addresses, and a webhook status handler—usually a few days of backend work.
Direct connection requires a widget, a separate scenario for each refusal, card re-authentication, and status reconciliation with the provider—this is already a full-fledged payment module.
Crediting speed depends on the number of transitions and the moment when the exchange learns the final status. With redirect, the user goes to a third-party domain, some people are lost at this step, and the coins wait for confirmation. With direct connection, the status arrives in the same interface, and crediting happens earlier.
Common technical questions about card acceptance on an exchange
The questions that most often come up when coordinating card acceptance are almost all about operation, not about data exchange itself. Below are five typical concerns with substantive answers: they determine how reconciliation, access, and limits will be set up after launch.
We already have another provider working—will everything have to be redone?
No. Payment acceptance is moved outside the exchange interface: a withdrawal request comes from an internal service, and changes affect only the integration layer.
Running a second channel in parallel on part of the traffic allows you to compare conversion and the share of disputed payments without stopping the current one.
Who is responsible for disputed payments and refunds?
Responsibility is delineated by the agreement with the payment partner: it accepts the claim and handles it as a card transaction. Our part is to provide the evidence base: the request status history, proof of card ownership, and account data. If the base is assembled correctly, the share of lost disputes falls by a multiple.
How is reconciliation with the provider checked?
Reconciliation runs as a scheduled job: our transaction journal is matched against the partner's report by payment identifier, and discrepancies go into a separate queue.
Each status has an unambiguous transition, and repeated notification delivery does not create duplicates—this closes the class of errors where a request hangs in an intermediate state.
How do you restrict access to keys and payment data?
Secrets are stored in a secure vault and never get into code or logs; request signatures are generated on the service side. Access is divided by roles and environments, requests are restricted by a list of trusted addresses, and key rotation happens without stopping acceptance.
What limits and risks should be included?
Limits are set for the amount and frequency of transactions per card and account, separately for higher-risk regions. Cardholder verification and manual review rules for large withdrawals are additionally enabled.
Connection in the test environment takes several days; production mode opens after running refusal and refund scenarios.
Let's discuss your payment acceptance scheme on the exchange
To make the conversation concrete, on the first call we review your current payment acceptance scheme: how payment arrives, at what stage Simplex is connected, who handles refunds and disputed transactions. This is enough to see bottlenecks and understand what to address first.
- What we review on the call: the payment route from choosing a payment method to crediting to the balance, roles in disputed situations, current limits and restrictions.
- Estimate and work plan: after the call, we send the list of stages, connection order, checkpoints, and responsibility areas.
- Pilot on one direction: we launch one currency or one channel, check the successful transaction share and refund handling on real traffic.
- Documentation handover: payment flow diagrams, settings description, chargeback action procedure, and support instructions.
- Post-launch support: we monitor metrics and review incidents until the scheme reaches a stable mode.
- Access and security: we discuss what permissions are needed during work and how they are closed afterward.
Describe the task in a convenient format—we will come back with an estimate and work plan and propose the order of steps. Then we will agree on the scope and start with the pilot.







