Custom Multi-Crypto Payment Gateway Setup

Solving Multi-Cryptocurrency Payment Challenges When a business decides to accept cryptocurrencies, they often imagine a simple "Pay with BTC" button. Reality is more complex: the system must handle Bitcoin's UTXO model, EVM's account-based model with ERC-20 tokens, and Solana's SPL standard — al

Blockchain Development Services

Frequently Asked Questions

Latest works

  • image_website-b2b-advance_0.webp
    B2B ADVANCE company website development
    1450
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1308
  • image_websites_belfingroup_462_0.webp
    Website development for BELFINGROUP
    1003
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1269
  • image_logo-advance_0.webp
    B2B Advance company logo design
    717
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    1008

Solving Multi-Cryptocurrency Payment Challenges

When a business decides to accept cryptocurrencies, they often imagine a simple "Pay with BTC" button. Reality is more complex: the system must handle Bitcoin's UTXO model, EVM's account-based model with ERC-20 tokens, and Solana's SPL standard — all without losing funds. An architectural mistake can lead to lost transactions or compliance issues. Based on over 50 projects, we have developed a universal scheme covering 90% of needs. We solve the problem of multi-cryptocurrency payments by supporting Bitcoin payments, Ethereum payments, USDT TRC20 (and ERC-20), Solana USDC, and other tokens. Our custom crypto payment gateway gives full control over fees, confirmation times, and security. In a recent case, we integrated 7 networks in 10 business days with end-to-end real-time payment visibility. We use Foundry for smart contract compilation and viem for EVM network monitoring. Each integration includes confirmation settings: Bitcoin minimum 3, EVM 12 blocks, Solana finalized slot. This reduced erroneous credits to zero. Our architecture prioritizes crypto payment security through private key encryption and automatic sweeps. The typical custom integration investment is recouped within 3–6 months for businesses processing over $50,000 monthly; an average project costs between $10,000 and $30,000 depending on network count.

How Much Does a Custom Integration Cost?

Architectural Options by Transaction Volume

The choice boils down to three options. Custom integration pays back 1.5–2 times faster than a ready-made provider with monthly volumes above $50,000 — commission savings can be significant. For example, at $100,000/month, saving 0.5% means $500/month.

Criteria Ready Provider Custom Integration Hybrid Approach
Time to launch 1–2 days 2–4 weeks 1–2 weeks
Transaction fee 0.5–1% 0% (only network gas) 0% for EVM, ~0.5% for BTC
UX control Limited Full High
Vendor lock-in Yes No Partial
Payback at volume >$50k/month Not payback 3–6 months 6–12 months

With monthly volumes above $50,000, custom integration pays back in 3–6 months, saving from $1,500 in commissions compared to ready providers.

Generating Addresses for All Networks from One Seed (HD Wallet BIP44)

As per BIP-44 (BIP44), the hierarchy is: m / purpose' / coin_type' / account' / change / address_index. For each new payment, a new address is generated by incrementing address_index. One master seed — addresses for all networks. Hierarchical deterministic derivation ensures that each address is derived from the same seed using elliptic curve cryptography, maintaining security and portability.

from hdwallet import HDWallet def derive_address(master_seed: str, coin_type: int, index: int) -> str: wallet = HDWallet() wallet.from_mnemonic(master_seed) # BTC: coin_type=0, ETH: coin_type=60, SOL: coin_type=501 wallet.from_path(f"m/44'/{coin_type}'/0'/0/{index}") return wallet.p2pkh_address() # for BTC # wallet.address() for ETH 
Address generation example

For Bitcoin use coin_type=0, for Ethereum coin_type=60, for Solana coin_type=501. Store address_index in the database and monotonically increase it. Never reuse addresses.

Important: address_index must monotonically increase and be stored in DB. Never reuse addresses — that violates privacy and complicates reconciliation.

Integration by Network

EVM Networks (Ethereum, Polygon, BSC, Arbitrum, Base)

One codebase abstracts multiple RPC endpoints leveraging chain-specific providers and transport layers. Monitor Transfer events of ERC-20 + native ETH/MATIC transfers using an asynchronous event-driven architecture.

import { createPublicClient, http, parseAbi } from 'viem'; import { mainnet, polygon, arbitrum } from 'viem/chains'; const chains = [ { chain: mainnet, rpc: process.env.ETH_RPC, tokens: ETH_TOKENS }, { chain: polygon, rpc: process.env.POLY_RPC, tokens: POLY_TOKENS }, { chain: arbitrum, rpc: process.env.ARB_RPC, tokens: ARB_TOKENS }, ]; // Unified handler for all EVM networks async function watchEVMPayment(client, tokenAddress, recipientAddress, orderId) { return client.watchContractEvent({ address: tokenAddress, abi: ERC20_ABI, eventName: 'Transfer', args: { to: recipientAddress }, onLogs: (logs) => handlePayment(logs, orderId), }); } 

Bitcoin: Recommended Fulcrum Node

For Bitcoin payments, we recommend Fulcrum. Bitcoin UTXO model — no "balance", only unspent outputs. An address is considered paid when UTXOs with the required amount arrive. Integration options: Electrum Protocol (ElectrumX/Fulcrum) — blockchain.scripthash.subscribe for address change subscription; BlockCypher/Mempool.space API — without own infrastructure; Bitcoin Core + ZMQ — full node with ZeroMQ notifications. For production we recommend Fulcrum (fast SPV-compatible node) + own Bitcoin Core in pruned mode. Bitcoin confirmations: 1 confirmation (~10 minutes) for small amounts, 3+ as standard, 6 for large payments.

TRON (USDT TRC20)

TRON is a special case due to USDT TRC20 popularity in CIS and Asia. API via TronGrid (HTTP) or own node. Addresses in Base58Check format (start with T).

import tronpy client = tronpy.Tron(network='mainnet') def check_trc20_payment(address: str, contract: str, min_amount: int) -> list: txns = client.get_token_trc20_transfers( contract_address=contract, to_address=address, min_timestamp=int((time.time() - 3600) * 1000) ) return [tx for tx in txns if tx['value'] >= min_amount] 

Solana: USDC and SPL Tokens

According to Solana documentation (Solana Token Documentation), each token has its own Associated Token Account (ATA) for each wallet. The receiving address for USDC is not the wallet itself, but its ATA for USDC.

import { getAssociatedTokenAddress } from '@solana/spl-token'; const usdcMint = new PublicKey('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'); const paymentATA = await getAssociatedTokenAddress(usdcMint, paymentKeypair.publicKey); 

Solana finality: using commitment level finalized — ~32 slots (~13 seconds).

How Do We Ensure Payment Finality?

Regardless of network, payments progress through states: pending_payment -> mempool_detected -> confirmed (N conf) -> settled. Our PostgreSQL schema tracks these states.

CREATE TABLE payment_orders ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), order_id VARCHAR(100) UNIQUE NOT NULL, currency VARCHAR(20) NOT NULL, network VARCHAR(20) NOT NULL, payment_address VARCHAR(200) NOT NULL, expected_amount NUMERIC(30, 8) NOT NULL, received_amount NUMERIC(30, 8) DEFAULT 0, tx_hash VARCHAR(200), confirmations INTEGER DEFAULT 0, required_confirmations INTEGER NOT NULL, status VARCHAR(30) DEFAULT 'pending', expires_at TIMESTAMPTZ NOT NULL, created_at TIMESTAMPTZ DEFAULT NOW(), INDEX idx_payment_address (payment_address), INDEX idx_status_expires (status, expires_at) ); 

Recommended confirmation counts:

Network Recommended Confirmations Block Time
Bitcoin 3-6 ~10 minutes
Ethereum 12 ~12 seconds
Solana (finalized) 1 ~13 seconds
Tron 19 ~3 seconds

Rates and Tolerance: Protecting Against Volatility

The user sees "Pay 0.001523 BTC" — the rate is fixed for 15–30 minutes. During that time, the rate may fluctuate by 1–2%. We need tolerance: 0.1% for stablecoins, 1% for BTC, 1.5% for ETH. For a $10,000 transaction, a 1% tolerance covers $100. Rates with minimal delay: CoinGecko API (free, 60s cache) or Binance WebSocket (real-time, for high-frequency).

Security: What We Guarantee

  • Private keys never on the web server. HD wallet seed in HSM or at least in encrypted storage (AWS KMS, HashiCorp Vault).
  • Sweep transactions — automatic transfer of received funds to cold wallet on schedule or threshold. For example, sweep when balance exceeds $50,000.
  • Double-spend protection — for BTC and ETH, do not confirm payment based on first unconfirmed. Set required_confirmations appropriately for the amount.
  • Address validation — address passes checksum validation (EIP-55 for ETH, Base58Check for BTC) before saving. Address error = loss of funds.

With a transaction value of $100, Ethereum network fee is ~$2, but with a custom gateway you control gas and can reduce it to $0.50. For 1000 transactions per month, savings amount to $1,500. Our multi-signature and threshold signature schemes can further enhance security for enterprise deployments.

Deliverables

  • Architecture documentation and transaction flow diagrams.
  • Source code for each network integration (EVM, Bitcoin, Tron, Solana).
  • Infrastructure scripts for deploying RPC nodes or configuring providers.
  • Operational and recovery instructions.
  • Training for your team on using the system.
  • First month of support after launch.

All deliverables are provided as source code with documentation.

Implementation Process

  1. Analysis (1–2 days): determine required currencies, volumes, geography (TRON popular in CIS/Asia), confirmation requirements.
  2. Infrastructure (2–4 days): configure RPC providers or own nodes, integrate HD wallet, design DB schema.
  3. Monitoring (3–4 days): develop workers for each network, confirmation logic, webhook notifications.
  4. Testing (1–2 days): testnet for EVM and Solana, Bitcoin testnet, edge cases (underpayment, overpayment, expired order, reorg).

Total 1–2 weeks depending on the number of networks. Contact us for an accurate timeline estimate for your project.

Our multi-network payment solution covers all major blockchains with a unified API.