• multiple payment providers online casino

Multi-PSP Architecture for Online Casinos: When to Route, Retry and Wait

Multi-PSP Architecture for Online Casinos: When to Route, Retry and Wait

A practical design for using several payment providers: establish route eligibility, preserve payment identity, resolve unknown outcomes, and account for costs, settlement and withdrawal liquidity.

Multi-PSP Architecture for Online Casinos: When to Route, Retry and Wait

A player submits a deposit. Provider A processes it, but the response never reaches the casino. An automatic fallback sends the same deposit to Provider B. Both may now charge the player. Each provider can behave correctly within its own system while the casino creates the duplicate.

Using several payment service providers, or PSPs, can broaden payment coverage and reduce dependence on one route. It also makes your platform responsible for decisions that no individual PSP can make: which routes are eligible, whether a previous attempt is still live, which event permits a wallet credit, and where the money will settle. This guide is for payments and platform leads designing that control. It focuses on decisions, financial records and operating exceptions, rather than the number of integrations on a diagram.

Decide what the second provider is meant to improve

Begin with a specific problem: an unsupported local method, a market your current contract does not cover, unreliable processing in a particular segment, or a settlement arrangement that does not fit your operation. Record the evidence and the expected benefit of the additional provider. A second connection that receives almost no eligible traffic may add support and reconciliation work without resolving the original constraint.

Check the dependency behind each route. Two PSPs might use the same acquirer, banking partner, network or infrastructure service. Ask which failure the new route actually survives, including failures in your own checkout, routing service, wallet and callback processing. Provider count is not a measure of independent resilience.

Choose the ownership model deliberately. An orchestration product can supply adapters and routing tools, but your team still needs control of policy, payment history, ledger behaviour and operational resolution. Building those capabilities internally increases responsibility for vendor changes and support. The payment-orchestration guide provides related context; the multi-PSP decision is whether a new route earns its additional operating burden.

Filter eligible routes before ranking them

Separate the eligibility filter from the ranking policy. First determine which routes are allowed and usable for this operation. Only then compare cost, observed performance or routing priority. A route with an attractive approval rate is irrelevant if its contract does not support this entity, activity, customer context or payment method.

  • Business and account scope: the operator entity, approved merchant account, product and permitted markets.
  • Payment capability: deposit or withdrawal support, method, currency, amount, authentication requirements and usable payment credentials.
  • Current constraints: provider status, transaction and volume limits, available payout funds and applicable customer restrictions.

Keep transaction currency, settlement currency and any conversion distinct. Do not treat the card's issuing country as proof of the player's residence. Record which inputs the rule uses and what happens when required information is missing. Have the relevant owners confirm contractual, legal and payment-network constraints; routing must not work around an issuer refusal, authentication requirement or prohibited transaction.

Persist the selected provider, merchant account, rule version, relevant inputs and reasons for excluding alternatives. Use a deterministic tie-breaker so a repeated request does not randomly create another route. Rule changes need access control and a recorded approval path. If a limit is enforced internally, reserve the required capacity consistently rather than let several workers all see the same unused quota.

Give each payment one identity and each attempt its own history

Model one logical player payment and separate provider attempts. The payment identifies the customer, entity, direction, amount and currency. Each attempt has its provider, account, merchant reference, idempotency key where supported, request version and observed results. Preserve that mapping across browser refreshes, worker restarts and late notifications. A retry of the same attempt retains its original amount, currency and operation; a changed instruction needs a new controlled attempt.

Adyen's idempotency documentation describes retrying the same request under a defined key scope and validity period; it also distinguishes regional endpoints. This protects the documented provider operation, not an unrelated request to another PSP. Your platform must prevent overlapping attempts for one payment and keep its own durable record. Check the scope and retry contract of every integration you use.

Keep a technical request failure separate from a financial result. A timeout means that you lack an answer. Authorisation, capture, settlement, refund and chargeback are different lifecycle events; “HTTP request accepted” is not a universal definition of a successful deposit. Define the evidence that permits credit under your payment policy, including any explicit provisional-credit risk.

Connect that evidence to the wallet and transaction ledger. Repeated notification of one financial event must not apply its effect twice. An unexpected second real charge is different: preserve the financial evidence, record the appropriate accounting effects and assign resolution. Internal deduplication cannot make the player's second bank charge disappear. Later reversals require traceable new entries, rather than silently rewriting the original history.

Compare costs, limits and settlement rather than headline fees

Evaluate the complete cost for the same segment and period: processing, unsuccessful attempts where charged, authentication, currency conversion, refunds, disputes, fixed charges and review effort. Check what the contract includes. Separate actual fees from the working capital tied up in reserves or delayed settlement; treating both as a simple transaction percentage hides different decisions.

Use two distinct measures: how often an eligible customer journey reaches the defined successful deposit event, and what it costs to achieve those outcomes. Define the denominator. An attempt-level approval rate can look worse when one player produces several retries, even though the journey eventually completes. Excluding unknown or abandoned payments can make the result look better without improving the experience.

For an illustrative calculation only, suppose 100 comparable deposit journeys produce 80 completed deposits and €24 of allocated operating costs for the period. The cost per completed deposit is €24 divided by 80, or €0.30. This is not a market benchmark. Document the included costs, treatment of later disputes and allocation assumptions before using the measure to compare routes.

Reconcile the financial outcome separately. Adyen's settlement-details report is an example of transaction-level settlement and cost evidence. Obtain the equivalent records from each PSP. Where a report presents total commission and its component breakdown as alternatives, count one or the other, not both. Connect provider references to internal postings, reconcile gross amounts, fees, currency conversion and net settlement, and explain differences for an agreed cut-off. A deposit confirmation does not establish that cash has reached the operator's bank account.

Measure provider health where the failure happens

Measure health by the affected operation, method, account, currency and region. A healthy status endpoint says little about one failing bank-transfer route. Separate transport errors, unknown outcomes, delayed callbacks, authentication abandonment and issuer refusals. A change in traffic mix can alter approval rates without a provider fault; compare like-for-like segments and keep sample size visible.

When a route becomes unreliable, stop admitting new eligible work to it under a defined policy. Preserve attempts already sent and continue processing their updates. An open circuit is a routing control for new requests, not a cancellation instruction for existing payments. Re-enable cautiously with bounded traffic and observed recovery, rather than route all volume back after one successful probe.

Use the observability guide to connect signals to operating action. An alert should identify the affected segment, unresolved-payment age and references needed to investigate. Assign an owner who can disable a route, inspect the original attempt and resolve discrepancies. Do not turn a technical outage into an unexplained customer rejection.

Protect capacity at both the routing service and the recovery workers. If retries or status queries consume all available processing, new transactions and old unresolved cases compete for the same bottleneck. Set bounded retry policies, queue limits and escalation based on the provider contract and measured workload. More PSP connections do not fix an overloaded internal recovery path.

Switch deposits only when the first attempt is resolved

Consider the deposit from the opening example. The platform has already sent a request to Provider A and lost the response. Record the attempt as having an unknown outcome and show a truthful processing status. Do not send the same logical payment to Provider B merely because the local timer expired.

  1. Find the original attempt: use the merchant reference, supported status query, authenticated notification or reconciliation record.
  2. Continue safely with A where supported: use the documented same-request retry and key contract; do not invent a fresh reference to escape the uncertainty.
  3. Evaluate the resolved outcome: success continues through the agreed wallet-credit path; a final unsuccessful outcome may permit another attempt only under the routing and retry policy.
  4. Retain unresolved work: if the result cannot be established, keep an accountable exception rather than assume the payment never happened.

Before a switch, establish that the first attempt is no longer capable of executing under the provider's documented lifecycle. A cancellation request being accepted is not necessarily cancellation completed. Nor does a generic error or decline label prove that every method permits a new attempt; inspect the specific result and applicable retry constraints. A not-found response is sufficient only if the provider contract makes it authoritative for that attempt and time window. Reapply eligibility and current customer controls before any new attempt.

Authenticate and retain incoming events before applying financial effects. Adyen's webhook guidance describes securing, storing and acknowledging messages, and handling duplicates. Use the event identity and lifecycle rules of your actual provider; do not discard a capture or refund because an earlier authorisation for that payment was already seen. Resolve conflicting evidence instead of choosing whichever message arrived last.

If two actual charges are discovered, stop further routing, link both attempts and assign an auditable resolution, including refund handling where appropriate. Measure this as a financial incident. A superficially improved approval rate does not compensate for duplicate customer charges.

Route withdrawals around funds and payment finality

Design withdrawal routing separately from deposits. Check the approved destination, method support, currency, limits, customer permissions and the funds available on the chosen route. Deposit traffic may settle into a different account or currency from the one that funds payouts. A technically available provider with no usable payout balance is not a working withdrawal route.

Reserve the player's funds consistently before an external payout is sent, and link the reservation to the logical withdrawal and provider attempt. A timeout must not both release the reservation and launch a replacement payout. Reconcile the first attempt and its financial effects before releasing funds or choosing another route under policy. Keep player-fund accounting separate from treasury transfers between provider accounts.

Define which status means submitted, reserved, sent and confirmed for each payout method. Adyen's payout-webhook documentation illustrates why this matters: a booked transfer is not final, and later failures or returns are represented separately. This is a product-specific example, not a universal casino payout schema or a statement that a particular operator is eligible for that service.

For a confirmed return, reconcile the returned funds and apply the appropriate ledger adjustment through a documented procedure. Do not erase the first payout or automatically reopen its full balance on an unverified message. Any replacement attempt needs its own history, destination checks and approval. Operations must distinguish a technical delay, insufficient route liquidity and an actual restriction, then communicate the permitted next step.

Roll out a route you can explain, reconcile and roll back

Start with one defined entity, market, method, currency and direction. Prove the selected route, its exception path, financial records and operating resolution before expanding. The payments and KYC integration service connects that work to the wider platform. A successful payment demo is one test case; it does not establish safe fallback or withdrawal readiness.

Verify that payment credentials can be used on the proposed route. Do not assume that a PSP token is portable or collect raw card data simply to make switching easier. The PCI SSC's outsourcing FAQ explains that outsourced payment processing does not remove the merchant's responsibility for protecting account data. Confirm the applicable responsibilities and validation with the relevant compliance-accepting entity; this article does not determine your PCI scope.

Use isolated tests and approved test data for duplicate requests, ambiguous outcomes, delayed events, capacity limits, payout-fund shortages and reconciliation. Exercise the real support roles and their denied actions. Restrict the initial rollout, retain an immediate route-disable control and monitor both conversion and financial correctness.

Rollback should restore routing software or rules without erasing accepted attempts, financial postings or restrictions. Old in-flight payments must still receive their outcomes after the rollback. Keep adapters and reconciliation available when removing a provider, and agree export and support access for that period. Expand when the team can explain every route choice and resolve the remaining exceptions, rather than when another logo appears in the checkout.

  • Ineligible route: submit a payment outside the configured entity, method or currency scope; it is excluded before ranking and the reason is recorded.
  • Repeated player request: refresh or retry the same logical deposit; retain the original identity and do not create overlapping provider attempts.
  • Lost response after processing: let A process the deposit but suppress its response; B receives no replacement attempt while A's outcome remains unknown.
  • Resolved unsuccessful attempt: confirm the original lifecycle state and retry permission; any permitted switch records a distinct attempt linked to the same payment.
  • Repeated and distinct events: replay one notification, then deliver a later capture or reversal; duplicate effects are prevented and legitimate new effects are retained.
  • Route or quota exhaustion: remove capacity or payout funds; concurrent workers cannot spend the same reserved capacity and already-sent work remains traceable.
  • Payout with an unknown result: delay the external outcome; the player reservation is not automatically released and a second payout is not launched.
  • Settlement and rollback: reconcile a sampled payment through provider reports and ledger entries, then roll back routing rules without losing its in-flight history.
Do two PSPs automatically make payments more resilient?

No. Identify the failure each route survives and any shared dependencies. Both can still depend on the same bank or on your routing and ledger services. Resilience also needs usable fallback capability, funds, compatible payment credentials and an operating process for unresolved payments.

Can we fail over automatically after a timeout?

Only when the original outcome and lifecycle justify a new attempt under the applicable policy. If the first provider may still execute, keep the payment unresolved and use supported reconciliation or same-request recovery. A local timeout is not evidence that no funds moved.

Does using the same idempotency key at both PSPs prevent duplicate charges?

Do not rely on that. Verify each provider's key scope and validity; independent systems do not become one shared payment record because the text of a key matches. Your platform needs a stable payment identity, controlled provider attempts and reconciliation of any conflicting financial outcomes.

Should the cheapest route always be selected?

Rank only eligible routes and compare the full operating outcome. Consider completion, fees on unsuccessful work, currency conversion, disputes, settlement timing and liquidity. Define the segment and denominator so a low headline fee or an attempt-level approval rate does not conceal the real cost.

Can withdrawals reuse the deposit-routing policy?

They can share infrastructure, but need separate eligibility and financial rules. A payout depends on destination support, current restrictions, route funds and the payout lifecycle. Preserve the player reservation while the external result is unknown, and require an accountable decision before replacement.

Define a multi-provider payment design around real constraints

Share your entities, markets, payment methods, settlement currencies and current failure cases. We can map eligible routes, payment identities, provider attempts and reconciliation, then define the first integration scope and the scenarios that must pass before traffic expands.

We use cookies to ensure the security and proper functioning of our website. With your consent, we also use non-essential cookies for analytics and advertising purposes. You can accept or reject the use of non-essential cookies. You can change your preferences at any time. Learn more in our Cookie Policy.