No headings found on page
crypto payments for igaming

TL;DR:

  • Nothing is switched off on day one. The old rail stays live and monitored for the full address sunset period, typically 30–90 days, while the new rail takes new sessions.

  • Cut over sessions, not balances. New deposit address issuance moves to the new provider first. Existing addresses remain creditable until they stop receiving traffic.

  • Canary before volume. Route 5% of new deposit sessions, hold for 48–72 hours of clean reconciliation, then step to 25%, 50%, 100%.

  • Reconciliation is the gate, not the report. Each phase advance requires a signed-off ledger comparison across on-chain confirmations, gateway callbacks and platform credits.

  • Rollback is a routing change, not a rebuild. Both rails stay integrated during dual-running, so reverting means flipping the traffic split back to the incumbent. Minutes, not weekends.

  • The cashier abstraction does the heavy lifting. Two providers crediting into one internal player wallet is what makes the migration invisible to players.

You migrate to a white label crypto payment gateway without downtime by dual-running both rails in parallel instead of cutting over in one step. Keep legacy deposit addresses monitored and creditable throughout an agreed sunset period.

Route only new player sessions to the new gateway behind a canary percentage. Reconcile both ledgers to zero variance before you decommission anything.

That's the whole trick. Everything below is the sequencing, the ownership and the parts people forget until 2am on a Saturday.

Why do operators replace an incumbent crypto gateway in the first place?

Almost nobody switches gateways because they got bored. There's a trigger, and it's usually one of seven.

Settlement delays

Deposits credit fine, but your own money sits with the provider for three days, or five, or "next banking day" that keeps meaning Tuesday. Treasury starts holding a bigger float to cover payouts, and that float is dead capital.

One operator we worked with was carrying an extra $600k in hot wallet float purely to absorb a provider's T+3 settlement rhythm.

Manual withdrawal approvals that were never supposed to be manual

The contract said automated payouts under a threshold. In practice the provider's risk engine kicks 30% of withdrawals into a review queue that a human clears during Riga office hours. Your Brazilian players withdraw at 11pm local. Do the arithmetic on the ticket volume.

Uptime that collapses exactly when it matters

A gateway that's 99.95% available across a month can still be unusable for forty minutes during a Champions League semi-final, because monthly uptime averages hide the peak.

If your deposit API throws 502s during the twenty minutes before kick-off, you didn't lose 0.05% of the month. You lost the highest-intent deposit window of the quarter.

Fee drift

You signed at 1.0%. Then a network fee markup appeared. Then an FX spread on stablecoin conversion. Then a monthly platform fee, an address issuance fee, a "premium chain" surcharge. Nobody renegotiated anything. Your effective rate is 1.7% and your CFO found out from a variance report, not from the provider.

Weak stablecoin or Lightning coverage

USDT on TRC-20 is table stakes in LatAm and Asia. If your provider supports ERC-20 only, your players are paying $4 to deposit $60, and half of them abandon.

Lightning is the same story a year later: sub-second settlement, sub-cent fees, and a growing cohort of players who now consider on-chain BTC deposits broken by comparison.

Providers who treat Lightning as a roadmap item are telling you where they'll be in eighteen months.

Support that doesn't answer in your players' hours

A named Telegram contact who replies in nine minutes during CET afternoons and nine hours on a Sunday night is not 24/7 support.

Ask any provider for their median first-response time broken out by three windows: 08:00–18:00 CET, 18:00–02:00 CET (LatAm evening) and 02:00–08:00 CET (Asia daytime). The gap between the best and worst window tells you more than any SLA document.

Roadmap divergence

You want to add three chains and a Lightning cashier this year. They want to add a merchant plugin for e-commerce. Neither of you is wrong, but you're no longer building the same thing.

Type "crypto payment gateway white label" into Google and you'll get a hundred vendors promising the same three things: fast integration, low fees, all the chains. The differentiator that actually shows up in your P&L is boring: does the provider operate cleanly at peak, and will they run in parallel with your incumbent while you prove it?

Is it actually the provider, or is it you? three diagnostic signals

Before you run a procurement cycle, prove the problem lives outside your stack. Three numbers do most of the work, and each one has a defensible benchmark.

Signal

How to measure it

Healthy

Investigate

Provider problem

Failed deposit rate

Deposit sessions where an address or invoice was issued but no credit posted within 24h, as % of all issued sessions

Under 1.0%

1.0–2.5%

Above 2.5%, or a spike correlating with provider incidents rather than player behaviour

Median time-to-credit

Timestamp of first confirmation to timestamp of player balance update, per asset and network

USDT TRC-20 under 60s; Lightning under 5s; BTC 1-conf under 3 min post-confirmation; ERC-20 under 90s

2–5× those figures

Consistently above 5×, or a long tail where p95 is 20× the median

Withdrawal queue length

Count of withdrawals in "approved, awaiting broadcast" plus median age of the queue

90% broadcast within 10 min; manual-touch rate under 10%

Queue age above 30 min at peak

Queue drains only during the provider's office hours, or manual-touch rate above 25%

Now the diagnosis. Segment every one of those metrics three ways: by asset and network, by hour of day in UTC, and by whether the failure occurred before or after your platform received a callback.

That last split is the one that settles arguments. If the deposit failed and no callback ever arrived, it's the provider or the chain. If the callback arrived and your ledger didn't credit, it's you, and switching gateways will fix nothing. Pull thirty days of failed deposits and put them in two buckets. If more than 70% land in "no callback received", stop blaming your backend team.

One more signal worth tracking: the ratio of support tickets to failed deposits. Healthy is roughly 1:3, because most players retry silently. If you're seeing 1:1, your failures are visible enough that players are noticing before your monitoring does, and that's a reputation problem in progress.

Why do operators postpone this for a year, and what does waiting a quarter actually cost?

Every Head of Payments knows the reasons for delay, because they're all reasonable.

Q4 is sacred. The World Cup is coming. There's a new market launch. The incumbent contract auto-renews in March so we'll do it in February. The engineering team is fully committed to the sportsbook migration. And underneath all of them, the real one: nobody wants to be the name attached to a lost-deposit incident.

Fine. Now price the delay.

Take a mid-sized operator: 40,000 crypto deposit attempts a month, €120 average deposit, €4.8m monthly crypto volume.

  • Failed deposits. At a 1.8% failure rate, that's 720 failed deposits a month, roughly €86k of deposits that don't land on the first attempt. Retry behaviour recovers most of the value, but not the player: measure your own cohort and you'll typically find 20–30% of affected players don't deposit again within 30 days. Call it 180 players a month at a €400 quarterly net contribution. That's €72k of contribution walking out per month, €216k a quarter.

  • Support load. 720 failed deposits generate around 400 tickets. At 14 minutes average handling and a €22 fully-loaded hourly cost, that's €2,050 a month. Small money, but it's your senior agents, because crypto tickets escalate.

  • Fee drift. 0.4 percentage points of unmanaged drift on €4.8m is €19,200 a month. €57,600 a quarter, invoiced, paid, no negotiation.

  • Treasury drag. An extra €500k of float held to cover slow settlement, at a 9% cost of capital, is €11,250 a quarter.

  • Peak-event losses. One forty-minute outage during a marquee fixture, at a peak rate of 6× baseline deposit volume, is roughly €26k of deposits displaced and an unmeasurable amount of "I'll use the other book" behaviour.

Add it up and one postponed quarter costs somewhere between €300k and €350k in this profile. The migration itself, run properly, costs about 0.9 FTE for six weeks plus provider onboarding time.

The delay isn't cautious. It's expensive.

And the cost is asymmetric in the other direction too: the longer you stay, the bigger the address register you eventually have to migrate, and the longer the sunset tail. Migrating 40,000 active addresses is a different project from migrating 400,000.

Why does migrating a crypto cashier feel riskier than it actually is?

The fear is specific and reasonable. A deposit lands on an address nobody is watching, the player doesn't get credited, support escalates, and the Head of Payments owns it. That single scenario is the objection behind most delayed provider decisions.

But the risk sits almost entirely in one design choice: whether you treat the migration as a switch or as an overlap. A switch has a single failure point at a single moment. An overlap has no moment at all.

A white label crypto payment gateway sits between your platform and the chains, issuing deposit addresses, watching for confirmations and firing credit callbacks into your wallet ledger.

Because that layer is address-based rather than session-based, two gateways can watch two sets of addresses at the same time without conflict. Bitcoin doesn't care how many services are subscribed to an address. That property is what makes zero-downtime migration structurally possible, not merely optimistic.

The remaining work is sequencing and ownership. That's what this runbook covers.

The cashier abstraction: the one thing that makes dual-running invisible

Before any phase, check whether your platform can hold two payment providers behind one player-facing balance.

It should look like this. The player has a single internal wallet in your PAM. Both gateways post credits into that same wallet through the same internal endpoint. Provider identity is a metadata field on the transaction record (provider: incumbent or provider: new), not a separate balance, not a separate ledger, not a separate cashier tab.

If a player deposits through the new rail on Tuesday and the legacy rail on Thursday, they see one balance and one transaction history. They never learn a migration happened.

Get this wrong and everything downstream breaks. I've seen an operator try to dual-run with two provider-specific sub-wallets, and the bonus engine started double-counting deposits for wagering requirements. Players cleared bonuses they hadn't earned, and unwinding it took longer than the migration.

What the abstraction needs:

  • One internal credit endpoint with idempotency keys, provider-agnostic.

  • A normalised internal deposit event, so downstream consumers (bonus engine, risk, VIP alerts) never see provider-specific payload shapes.

  • A routing service that decides which provider issues the next address or invoice, evaluated server-side per session.

  • A single source of truth for withdrawal state, so a payout can only be claimed by one rail.

If you don't have this today, build it first. It's typically five to ten days of backend work, and it converts the migration from a leap into a config change. Operators who skip it end up doing a maintenance-window switch and calling it inevitable. It isn't.

Phase 0: what do you need in place before phase 1 begins?

Don't start technical work until these artefacts exist and have named owners. Missing any of them is the most common reason a migration slips from four weeks to four months.

1. a transaction inventory

Pull 90 days of crypto deposit and withdrawal volume broken down by asset, network, average confirmation time, deposit size distribution, and failure/manual-credit rate. You need the baseline to prove the new rail performs at parity or better. Add hour-of-day and day-of-week curves so you know what "peak" means numerically before you load-test against it. Owner: Payments Operations Manager.

2. an address register export, plus everything else that's open

Every active deposit address currently issued to a player, with the player ID it maps to, its issuing provider, its derivation path or index where applicable, and its last-seen deposit date.

The register is necessary but not sufficient. Also extract:

  • Open invoices. Every unpaid Lightning invoice and every unexpired on-chain payment request, with amount, expiry timestamp and player ID. These are the transactions most likely to fall between rails.

  • Pending withdrawals. Everything in requested, approved, awaiting-broadcast or broadcast-unconfirmed state, with amounts, destinations and internal payout IDs.

  • Unconfirmed inbound. Anything the incumbent has seen in the mempool but not yet credited.

  • Historical transaction export. Full transaction-level history for the retention period your licence requires, in a format your data warehouse can actually parse. Not a PDF.

Validate the register before you trust it. Take a random sample of 50 addresses, check on-chain history, and confirm each one maps to the player your platform thinks it does. Re-pull the register immediately before Phase 6 begins, because it will have grown. Owner: incumbent provider plus in-house engineering.

3. An inventory of deposit address model types

This determines your migration mechanics more than any other single factor, and it's the item most teams skip. Find out which model your incumbent uses, per asset.

Model

What it means

Migration mechanics

Sunset tail

Static per player

One permanent address per player per asset, issued at first deposit and never rotated

Longest-lived risk. Players save these addresses in exchange whitelists and wallet address books. Every one must stay creditable through the sunset and be recoverable after it. Requires the fullest register export and the longest monitoring window

60–90 days minimum, with a permanent manual recovery path

HD-derived from an xpub

Addresses derived on a path from an extended public key, often one per deposit

If you hold the xpub, import it into the new provider as watch-only and keep crediting legacy addresses without the incumbent's cooperation. That's the cleanest outcome available. If the provider holds the xpub, you're dependent on their monitoring, which makes the contract check critical. Watch the gap limit: if the incumbent issued addresses at index 4,000 and your new watcher scans 20 ahead, you'll miss deposits

30–60 days, shorter if you hold the xpub

Invoice-based

Per-session payment requests with an expiry: Lightning BOLT11, or a checkout-scoped on-chain address valid for 30 minutes

Shortest tail by design. Nothing to save, nothing to reuse. Your risk compresses into the cutover window itself: invoices open at the moment you flip routing, and invoices paid after expiry

Hours to days, but requires precise in-flight handling

Most operators find they run a mix: static addresses for BTC and ETH from a 2021 integration, HD-derived for later chains, invoice-based for Lightning. Document it per asset. Your sunset plan is only as short as your longest-lived address model.

4. Integration surface mapping

Every system that touches a crypto payment event is a migration item. List them, name an owner for each, and record what breaks if the payload shape changes.

  • Cashier UI. Deposit and withdrawal flows, network selector, QR rendering, minimum and maximum amounts, fee display, confirmation-progress indicator, error copy. Native apps included, and note which app versions you cannot force-update.

  • PAM / wallet API. Credit and debit endpoints, idempotency keys, transaction categorisation, currency conversion at credit time, bonus eligibility flags.

  • Webhook consumers. This is where migrations quietly break. The bonus engine listening for deposit.confirmed. The risk engine scoring deposit velocity. The VIP alerting service that pings a host when a tier-4 player deposits over €5,000. The email and push notification service. The affiliate postback. Enumerate every subscriber, not just the ones engineering remembers.

  • BI and finance exports. Warehouse ingestion jobs, daily settlement files, GL mapping, revenue-share calculations, monthly fee reconciliation. Somebody's Python job parses the incumbent's CSV by column position. Find it now.

  • AML and transaction monitoring feeds. Address screening results, risk scores, sanctions hits, exposure categories from Chainalysis or Elliptic, ongoing monitoring alerts, and the format your case management system expects. If the new provider returns risk data in a different taxonomy, your MLRO needs to map it before Phase 3, not after.

5. The incumbent contract check

Read the contract before you tell the incumbent anything. Specifically:

  • Notice period and auto-renewal. 30, 60 or 90 days, and the exact renewal date. Missing a renewal window by four days can cost you a full extra term.

  • Data export rights. Are you contractually entitled to the full address register, transaction history and invoice data, in a machine-readable format, at no charge? If it isn't written down, expect a fee and a delay.

  • Key custody. Who holds the private keys or seed for deposit addresses? If the provider does, you cannot sweep legacy addresses yourself after sunset, and every late deposit becomes a support request routed through a company you no longer pay.

  • Can you export wallet keys, or only balances? This is the question that decides whether your sunset is clean or permanent. Exportable xpubs mean you can watch legacy addresses forever without the incumbent. Balances-only means you are dependent on their goodwill and their uptime for as long as any legacy address might receive a deposit. Get a written answer.

  • Cooperation during termination. Is there any obligation to support parallel running? Some contracts prohibit it, which you'd rather know in week one.

  • Post-termination sweep. Who sweeps residual funds from legacy addresses, on what timeline, at what fee?

6. A written migration scope document, with owners on both sides

Not a Jira epic. A document, four to eight pages, signed by both parties.

It contains: the phase plan and dates; the assets and networks in scope, and any explicitly out of scope; the named owner for each workstream on your side and theirs (with a name, not a team, and a deputy); the reconciliation field mapping; the definitions of success and rollback per phase; the escalation path with phone numbers; and the address sunset commitment including the hard cut-off date.

The reason this matters is unglamorous. Six weeks in, someone will say "I thought your team owned the webhook consumer mapping." The document is how you avoid losing four days to that conversation.

7. A reconciliation ledger definition

Agree in writing what fields you compare and what counts as a match: on-chain txid, network, asset, amount, confirmation count, gateway event ID, platform credit ID, timestamp. Ambiguity here creates arguments during cutover that you don't have time for. Full construction detail is in Phase 7. Owner: Finance plus Payments.

8. Written rollback authority

One named individual who can trigger rollback without a committee call, plus a deputy for out-of-hours. Owner: Head of Payments.

9. Compliance sign-off on the new rail

Your MLRO or compliance lead confirms that the new provider's screening, sanctions and transaction-monitoring outputs feed your existing case management in a form your licence conditions accept. This is a gate, not a parallel workstream. You cannot canary real deposits before it clears.

Phase-by-phase: What does a zero-downtime migration actually look like?

Phase

Duration

Owner

Success criteria

Rollback trigger

0. Pre-work & scope

5–10 business days

Head of Payments

All nine Phase 0 artefacts complete and signed; scope document countersigned by provider; contract notice position understood

N/A — no live traffic

1. Integration & sandbox

5–10 business days

New provider tech lead + your backend engineer

All deposit, withdrawal, callback and webhook flows pass in sandbox; idempotency verified under replay; full edge-case matrix green; load test at 3× peak passed

N/A — no live traffic

2. Shadow mode

5–7 days

Payments Ops Manager

New gateway watches a mirrored address set and logs would-be credits; 100% match to live incumbent events

Any unexplained variance >0

3. Canary (5%)

48–72 hours

Payments Ops Manager

Zero uncredited deposits; callback latency within baseline; support ticket rate flat

1 uncredited deposit, or callback p95 >2× baseline

4. Stepped ramp (25% → 50% → 100%)

7–14 days

Head of Payments

Clean daily reconciliation at each step before advancing

Reconciliation variance unresolved >4 hours

5. Withdrawal cutover

3–5 days

Head of Payments + Treasury

Payout success rate and time-to-broadcast at or better than baseline; hot wallet float behaving; legacy payout queue drained to zero

Failed payout batch, or float shortfall

6. Address sunset & dual-running

30–90 days

Payments Ops Manager

Legacy address deposit volume decays to near-zero; all late deposits credited within SLA

Legacy inbound volume plateaus instead of decaying

7. Reconciliation close & decommission

5–10 days

Finance + Head of Payments

Signed zero-variance statement across the full window; legacy keys and access retired; manual recovery process published

N/A — do not decommission with open variance

Phase 1: how do you scope integration and sandbox validation?

This phase is engineering-only and carries no live risk, which makes it the right place to be pedantic.

Your backend engineer and the provider's technical lead map every flow: deposit address issuance, confirmation callbacks, credit posting, withdrawal request, approval, broadcast, and the failure paths for each.

The critical test is idempotency. Replay the same confirmation callback five times and confirm your ledger credits once. Most double-credit incidents in white label crypto payment gateway migration trace back to an untested replay path, not to a missed deposit.

Validate the reporting and export layer here too. Your CFO will ask for a fee and volume reconciliation in month one, and your compliance lead will ask for transaction-level exports. Both need to exist before you carry volume, not after.

The pre-go-live test matrix

Happy path takes twenty minutes to test. The matrix below is what separates a clean migration from a month of incident reviews. Run every row in sandbox, then run the starred rows again on mainnet with small real amounts before Phase 3.

#

Scenario

Expected behaviour

Sign-off

1

Exact-amount deposit, single confirmation

Credit posted once, correct asset and amount, within SLA

Engineering

2

Underpayment: invoice for 100 USDT, 80 arrives

Partial credit per policy, or hold with a defined operator action. Never silent drop, never full credit

Payments Ops

3

Overpayment: invoice for 1



Frequently Asked Questions

Why do operators replace an incumbent crypto gateway in the first place?

Why do operators postpone this for a year, and what does waiting a quarter actually cost?

Why does migrating a crypto cashier feel riskier than it actually is?

Phase 0: what do you need in place before phase 1 begins?

Phase-by-phase: what does a zero-downtime migration actually look like?

Power your payments & payouts with LightningPay

Accept Bitcoin and stablecoins, enable instant withdrawals, and deliver better player experiences with infrastructure built for iGaming.

Trusted & Certified

SOC2 Type 2

PCI-DSS

ISO 27001

KYC/AML

Power your payments & payouts with LightningPay

Accept Bitcoin and stablecoins, enable instant withdrawals, and deliver better player experiences with infrastructure built for iGaming.

Trusted & Certified

SOC2 Type 2

PCI-DSS

ISO 27001

KYC/AML

Power your payments & payouts with LightningPay

Accept Bitcoin and stablecoins, enable instant withdrawals, and deliver better player experiences with infrastructure built for iGaming.

Trusted & Certified

SOC2 Type 2

PCI-DSS

ISO 27001

KYC/AML