Custom Cryptocurrency Payment Widget Development

We design and develop full-cycle blockchain solutions: from smart contract architecture to launching DeFi protocols, NFT marketplaces and crypto exchanges. Security audits, tokenomics, integration with existing infrastructure.
Showing 1 of 1All 1305 services
Custom Cryptocurrency Payment Widget Development
Medium
~3-5 days
Frequently Asked Questions

Blockchain Development Services

Blockchain Development Stages

Latest works

  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1256
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1208
  • image_logo-advance_0.webp
    B2B Advance company logo design
    667
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    954
  • image_logo-aider_0.webp
    AIDER company logo development
    879
  • image_crm_chasseurs_493_0.webp
    CRM development for Chasseurs
    995

Custom Cryptocurrency Payment Widget Development

We often get requests: "We want to accept crypto on the site, like PayPal, but for USDT." In practice, this means solving several non-trivial tasks simultaneously: generating unique addresses for each payment, detecting incoming transactions, handling different networks and tokens, and correctly dealing with confirmations and reorgs. Ready-made solutions like Coinbase Commerce or NOWPayments charge 0.5–1% fees and have limited customization. A custom widget is justified when turnover exceeds $10,000 per month—savings on fees can reach $100–$500 monthly. Our experience: 10+ years in blockchain development and over 50 deployed payment solutions. We guarantee complete control over transactions and no hidden fees. A basic widget costs from $5,000, saving you up to $500 monthly on fees.

Why a Custom Widget?

Criteria Ready-made gateways (Coinbase Commerce, NOWPayments) Custom widget
Fee 0.5–1% + possible hidden charges — custom widget is 100% cheaper (0% fee) Only gas and infrastructure costs
Customization Only color and logo selection — custom widget offers unlimited UI/UX control Full control: UI/UX, currencies, callbacks
Integration Closed API, limited webhooks — custom widget gives direct DB writes and custom events Custom webhook events, direct DB writes
Security Keys on provider side — custom widget keeps your keys, your infrastructure Your keys, your infrastructure
Supported networks Limited list — custom widget supports any EVM networks, Bitcoin, Tron, Solana Any EVM networks, Bitcoin, Tron, Solana

Architecture

The widget is only the UI part. The real work happens on the backend:

Frontend Widget
    │ create order / show address and QR
    ▼
Backend API
    │ address generation → DB write → polling/webhook
    ▼
Blockchain Monitoring Service
    │ monitors transactions on addresses
    ▼
Payment Processor
    │ confirmation → callback to application

Integration

  1. Place the JavaScript widget script on the page and initialize it with an API key.
  2. Call createPayment({orderId, amount, currency})—the widget generates an address and QR code.
  3. Handle the onPaymentConfirmed(paymentData) callback in your application to update the order status.

Technical Implementation

HD Wallet Address Generation

Each payment needs a unique address—otherwise it's impossible to match an incoming payment to a specific order. The standard approach is BIP-44 HD Wallet (see BIP-44): "BIP-44 defines hierarchical deterministic wallets" (Wikipedia).

import { ethers } from 'ethers';

const masterWallet = ethers.HDNodeWallet.fromMnemonic(
  ethers.Mnemonic.fromPhrase(process.env.PAYMENT_MNEMONIC!)
);

function derivePaymentAddress(orderId: number): string {
  const child = masterWallet.derivePath(`m/44'/60'/0'/0/${orderId}`);
  return child.address;
}

The mnemonic is stored in HSM or Vault; private keys are never materialized on the server. For multi-currency, different coin types are used according to BIP-44 (60 for Ethereum/EVM, 0 for Bitcoin, 195 for Tron). For EVM networks with identical addresses, one address works across all networks—but each network must be monitored separately.

Transaction Monitoring

Two approaches: polling RPC and webhook subscriptions.

Polling is simpler but creates load:

async function pollAddress(address: string, network: string) {
  const provider = getProvider(network);
  const usdtContract = new ethers.Contract(USDT_ADDRESS, ERC20_ABI, provider);
  const filter = usdtContract.filters.Transfer(null, address);
  const latestBlock = await provider.getBlockNumber();
  const events = await usdtContract.queryFilter(filter, latestBlock - 10, latestBlock);
  for (const event of events) {
    await processIncomingPayment({
      txHash: event.transactionHash,
      amount: event.args.value,
      token: 'USDT',
      network,
    });
  }
}

Webhooks—via Alchemy, QuickNode, or Moralis. Subscribe to address events, receive push on each transaction:

const webhook = await alchemy.notify.createWebhook(
  'https://your-api.com/webhook/payment',
  WebhookType.ADDRESS_ACTIVITY,
  { addresses: [paymentAddress] }
);

Private Key Security

The key risk is compromise of the master mnemonic. We apply multi-layer protection:

  • Mnemonic is stored in HashiCorp Vault with on-the-fly encryption and access policies.
  • Never use .env files in production.
  • Private keys for each address are derived via BIP-44 and never materialized in the application.
  • All wallet operations are logged, alerting is set up for suspicious activity.

For particularly sensitive projects, we use a hardware security module (HSM)—for example, AWS CloudHSM or YubiHSM. Multi-signature for withdrawals is also configured: transactions over $10,000 require a second key confirmation.

Confirmations and Double-Spend Protection

Different assets require different numbers of confirmations:

Asset/network Recommended confirmations Time
ETH / ERC-20 (Ethereum) 12–20 blocks ~3–4 min
BNB Chain 15–20 blocks ~1 min
Polygon 100–150 blocks ~4–6 min
TRON TRC-20 20 blocks ~1 min
Bitcoin 3–6 blocks ~30–60 min

Polygon requires more confirmations due to higher reorg probability. Do not mark a payment as final until the required threshold is reached.

For stablecoins: additionally verify that the token contract is official. A user could send a fake token named "USDT". A contract address whitelist is mandatory.

UI/UX and Edge Cases

Widget UI Components

Minimal set for conversion:

┌─────────────────────────────────────┐
│  Pay: 47.50 USDT                    │
│                                     │
│  Network: [Ethereum ▼] [BNB Chain ▼] │
│                                     │
│  [QR code]   0x7f3a...b2c4          │
│              [Copy]                  │
│                                     │
│  ⏱ Awaiting payment: 14:32          │
│  ● Waiting for transaction...       │
└─────────────────────────────────────┘

Critical: session timer (usually 15–30 minutes) after which the address is released and the exchange rate is recalculated. Status updates via WebSocket or SSE—polling every 5 seconds is annoying and creates load.

Fiat-to-crypto conversion: use Chainlink Price Feeds or CoinGecko API with caching. Add a 1–2% buffer to the rate to account for volatility during the waiting period.

Handling Underpayment and Overpayment

Real users often pay an imprecise amount:

  • Underpayment (sent less): either block the order pending a top-up, or accept with a "partial payment" flag—depends on business logic.
  • Overpayment (sent more): credit the user or automatically return the difference.
  • Network fee: for native coins (ETH, BNB) the user must have it in their wallet separately—this UX point must be explained.

What's Included and Project Estimation

  • API documentation for integrating the widget with your site.
  • A test environment in one of the networks (Goerli/Sepolia) for acceptance.
  • Source code with deployment instructions (Docker, CI/CD).
  • Integration with your CRM or ERP via webhook callbacks.
  • Training your team on the admin panel and monitoring.
  • Warranty support for 3 months (included in the price).

Order development of a payment widget for your business—we will evaluate the project in 1-2 days and propose the optimal architecture. Get a consultation: discuss requirements, timeline, and budget. Full control over crypto payments without intermediaries.

Blockchain Infrastructure Deployment: Nodes, RPC, Indexing

Subgraph fell at 3:47 AM. By morning users saw outdated balances, transactions "hung" in the UI, support received 47 tickets in an hour. Cause: the handler in the subgraph failed on a transaction with a non-standard event log — and the entire index stopped. We have encountered such situations dozens of times. Our experience shows: blockchain infrastructure does not forgive gaps in observability. Guaranteeing uptime without multi-layered monitoring and fault-tolerant architecture is impossible. Over 8 years working with Ethereum, Polygon, and Solana, we have developed an approach that allows predictable deployment of infrastructure of any scale — from a single node to a multichain grid with dozens of subgraphs.

RPC Layer Architecture

Every dApp interaction with the blockchain goes through RPC — the JSON-RPC API provided by a node. Three options:

Managed providers — Alchemy, QuickNode, Infura, Ankr. Minimal operational costs, SLA, built-in monitoring. Limits: rate limits (Alchemy Free: 300 RU/sec), vendor lock, potential downtime during provider incidents. For most projects — the right choice at the start.

Self-owned nodes — full control, no rate limits, no third-party dependence. Cost: archive Ethereum node requires 2.5–3TB SSD, a strong server, and DevOps support. Sync from scratch on Ethereum via Geth/Nethermind — 3–7 days. Justified under high load or latency requirements.

Hybrid — self-owned node as primary, managed provider as fallback. Standard for protocols with high TVL. Proper load balancing can reduce costs by 20–30% compared to pure managed setup. Under high monthly request volume, hybrid saves significantly.

Provider Strength Limitation
Alchemy Supernode, Enhanced APIs, webhooks Expensive on high-volume
QuickNode Low latency, multi-chain More expensive than Alchemy on basic plan
Infura Historical reliability Rate limits on free, one major incident halted half of DeFi
Ankr Cheap, 40+ chains Less stable

How to Set Up an RPC Layer Without a Single Point of Failure?

At least two providers, DNS round-robin with health check every 5 seconds, automatic fallback when latency >500 ms. In practice, this gives 99.99% availability during any provider failure. For protocols with high TVL, we recommend a custom HA-proxy (nginx or Envoy) in front of two managed providers.

Why Is a Hybrid RPC Scheme More Cost-Effective Than Pure Managed?

At high request volumes, managed providers can be very expensive; a hybrid using a self-owned node as primary and a managed fallback cuts costs significantly without losing SLA.

Ethereum Node Clients

Execution clients: Geth (most used), Nethermind (C#, fast sync), Besu (Java, enterprise), Erigon (fastest sync, efficient archive mode ~2TB instead of 3TB).

Consensus clients (post-Merge): Lighthouse (Rust), Prysm (Go), Teku (Java), Nimbus (Nim). Each node after The Merge requires a pair of execution + consensus clients.

For DevOps: eth-docker — Docker Compose configurations for all client combinations. Setting up monitoring via Grafana + Prometheus is mandatory; a standard dashboard is available in each client's repository.

The Graph: Event Indexing

The Graph Protocol — decentralized indexing. A subgraph describes which events from which contracts to index and how to transform them into a GraphQL schema.

Subgraph structure:

  • subgraph.yaml — manifest: contract addresses, startBlock, events to handle
  • schema.graphql — GraphQL schema of entities
  • src/mapping.ts — AssemblyScript event handlers
dataSources:
  - kind: ethereum
    name: UniswapV3Pool
    network: mainnet
    source:
      address: "0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640"
      abi: UniswapV3Pool
      startBlock: 12370624
    mapping:
      eventHandlers:
        - event: Swap(indexed address,indexed address,int256,int256,uint160,uint128,int24)
          handler: handleSwap

AssemblyScript handlers — not TypeScript. No nullable types, no closures, no many standard APIs. An error in the handler stops the subgraph indexing on that transaction. Important: add try-catch for operations that can fail (e.g., store.get() for an entity that may not exist).

How to Avoid Subgraph Indexing Stops?

Graph Node logs are monitored in real-time; on hasIndexingErrors = true an alert fires and an automatic node restart (via systemd or Kubernetes). Typical downtime on error — 150–300 seconds to recover. Additionally, for production we set up a watchdog that restarts Graph Node if subgraph lag exceeds 50 blocks.

Choosing Between Hosted Service and Decentralized Network

Graph Hosted Service (free, centralized) is deprecated in favor of Subgraph Studio + Graph Network. For production: deploy on Graph Network with GRT curation signal — the subgraph gets indexers proportional to curation.

Alternatives to The Graph: Ponder (TypeScript, self-hosted, easier to debug), Envio (ultra-fast indexer, supports EVM + non-EVM), Subsquid (TypeScript, own network), Moralis Streams (managed, webhook-based). Our experience shows: for high-load projects with unique logic, Ponder or Envio are more effective — they give full control over the process and do not require GRT tokenomics.

Webhooks and Real-Time Notifications

Alchemy Webhooks and QuickNode Streams allow receiving events in real-time via HTTP webhook or WebSocket. For monitoring addresses, new transactions, mints — this is faster than polling RPC.

Tenderly — platform for monitoring and alerts. You can set up an alert for a specific contract event, balance change, function call with certain parameters. Transaction simulation via Tenderly API is invaluable for debugging.

Monitoring and Observability

Minimum monitoring stack for a protocol:

On-chain: OpenZeppelin Defender Sentinel — watches contract events, triggers webhook or Autotask when conditions are met. Forta Network — community-maintained bots detect anomalies (large withdrawals, flash loans, governance attacks).

Infrastructure: Grafana + Prometheus for nodes, Datadog or Grafana Cloud for managed metrics. Alerts on: node is 10+ blocks behind, RPC latency >500ms, subgraph lag >100 blocks.

Uptime: Better Uptime or PagerDuty on RPC endpoint and subgraph health endpoint (The Graph provides _meta { hasIndexingErrors, block { number } }).

Why Is Monitoring Without Tenderly Insufficient?

Tenderly provides transaction simulation and detailed traces — critical for debugging subgraph and smart contract errors. Forta focuses on network anomalies, not your infrastructure. The combination of Tenderly plus a custom Grafana dashboard covers 90% of incident scenarios.

Multichain Infrastructure

A protocol on 5 chains = 5 separate RPC endpoints, 5 subgraphs, 5 monitoring configs. Manageable but requires deployment automation.

For subgraph multi-network deployment: graph deploy --network mainnet, graph deploy --network arbitrum-one etc. with a unified codebase and network-specific addresses in separate config files.

Chainlink CCIP and LayerZero for cross-chain messaging require monitoring of both chains and transactions on intermediate relayers. A reorg on the source chain after a confirmed mint on the target chain is a classic bridge problem. Solution: wait for finality (on Ethereum ~15 minutes after Merge for economic finality) before confirming on the target chain.

Infrastructure Setup Process

  1. Audit current stack — determine chains, request volume, latency and availability requirements.
  2. Architecture design — select providers, load balancing, redundancy.
  3. Subgraph development — manifest → schema → handlers → testing on local Graph Node → deploy to testnet → mainnet.
  4. Monitoring configuration — Tenderly alerts, Grafana dashboard, PagerDuty integration.
  5. Documentation and runbook — what to do when: subgraph falls behind, RPC downtime, node desync.
  6. Handover to operations — team training, access transfer, first month support.

What's Included

  • Deployment of managed or self-hosted Ethereum, Polygon, BNB Chain nodes
  • RPC layer setup with primary/fallback and load balancing
  • Subgraph development and deployment for your protocol
  • Monitoring connection (Tenderly, Grafana, alerts)
  • Runbook and operations documentation
  • Team training (up to 4 hours online)
  • 30-day support after delivery

Timeline

Task Duration
RPC and basic monitoring setup 1–2 weeks
Subgraph for one protocol 2–4 weeks
Self-hosted node with monitoring 2–3 weeks
Full infrastructure (multi-chain, monitoring, runbooks) 6–10 weeks

All projects are managed in a GitHub/GitLab repository with CI/CD; configuration code stays with you. Order infrastructure deployment — we'll show how to cut costs by 20–30% without losing reliability. Get a consultation — we'll demonstrate how we deployed infrastructure for a protocol with large TVL on Ethereum and Arbitrum. Contact us.