THE SIGNAL
BY
THE ARCH

Where Web3 founders, talent, and partners meet.

Directory

  • Partners Directory
  • All Categories
  • Compare Partners
  • For Founders
  • Find Your Match
  • Pricing

Get Involved

  • Get Listed
  • Submit an Event
  • Become an Operative
  • Refer a Client
  • Get Your Badge
  • πŸ“… Book a Call

News & Intelligence

  • Web3 News
  • Daily Digests
  • Intelligence Reports
  • Web3 Events
  • RSS Feed
  • Substack Newsletter

Contact

  • support@thesignal.directory
  • @thesignaldirectorybot

Company

  • About
  • How It Works
  • Manifesto
  • Demo

Legal

  • Privacy
  • Terms
  • Cookies

Resources

  • Guides
  • Sales Decks
  • Docs

Β© 2026 THE SIGNAL. All rights reserved.

THE SIGNAL
BY
THE ARCH

Where Web3 founders, talent, and partners meet.

Directory

  • Partners Directory
  • All Categories
  • Compare Partners
  • For Founders
  • Find Your Match
  • Pricing

Get Involved

  • Get Listed
  • Submit an Event
  • Become an Operative
  • Refer a Client
  • Get Your Badge
  • πŸ“… Book a Call

News & Intelligence

  • Web3 News
  • Daily Digests
  • Intelligence Reports
  • Web3 Events
  • RSS Feed
  • Substack Newsletter

Contact

  • support@thesignal.directory
  • @thesignaldirectorybot

Company

  • About
  • How It Works
  • Manifesto
  • Demo

Legal

  • Privacy
  • Terms
  • Cookies

Resources

  • Guides
  • Sales Decks
  • Docs

Β© 2026 THE SIGNAL. All rights reserved.

Home/Intelligence/Crypto Payment Gateway Integration: Stripe, Circle & On-Chain Options

Crypto Payment Gateway Integration: Stripe, Circle & On-Chain Options

Complete integration guide for crypto payment gateways including Stripe's crypto onramp, Circle USDC APIs, Coinbase Commerce, and direct on-chain payment systems. Covers architecture patterns, fee comparison, compliance requirements, and code examples for Web3 businesses.

Samir Touinssi
Written by
Samir Touinssi
From The Arch Consulting
March 20, 2026β€’44 min read
Crypto Payment Gateway Integration: Stripe, Circle & On-Chain Options

Crypto payment gateway integration enables businesses to accept cryptocurrency payments alongside or instead of traditional payment methods. In 2026, the three dominant approaches are Stripe's crypto onramp (fiat-to-crypto conversion embedded in checkout, processing $2.8B+ quarterly in crypto volume), Circle's USDC payment APIs (powering $12T+ in cumulative USDC transactions since launch), and direct on-chain payment contracts (used by 14,000+ merchants via protocols like Request Network and Sablier). Each approach serves different use cases: Stripe excels at fiat-to-crypto bridging for Web2 businesses entering crypto, Circle provides enterprise-grade stablecoin infrastructure for B2B payments and treasury operations, and on-chain solutions offer maximum decentralization and composability for Web3-native businesses.

The global crypto payments market reached $1.3B in payment processor revenue in 2025 (Grand View Research), with projected 18.6% CAGR through 2030. Stablecoins dominate payment volume β€” USDC and USDT together process more daily transfer value ($45B+) than PayPal and Venmo combined. For businesses building on Web3 or serving crypto-native customers, integrating crypto payments is no longer optional β€” it is a competitive requirement.

Related Intelligence

Navigating the Week Ahead: Essential Web3 Market Analysis for Strategic Founders

3/22/2026

Unpacking Web3 Builder Ecosystem Insights Amidst Quiet Activity

3/21/2026

Layer 2 Scaling Solutions Compared: Rollups, Sidechains & Validiums

Layer 2 Scaling Solutions Compared: Rollups, Sidechains & Validiums

3/20/2026

Need Web3 Consulting?

Get expert guidance from The Arch Consulting on blockchain strategy, tokenomics, and Web3 growth.

Learn More
Back to Intelligence

Table of Contents

Payment Gateway Landscape OverviewGateway Comparison MatrixStripe Crypto Onramp IntegrationOverviewArchitecture PatternIntegration StepsStripe Crypto PricingStripe Crypto LimitationsCircle USDC Payment IntegrationOverviewArchitecture PatternIntegration StepsCircle USDC PricingCircle Advantages for B2BCoinbase Commerce IntegrationOverviewIntegrationCoinbase Commerce PricingDirect On-Chain Payment IntegrationOverviewSimple Payment Receiver Contract
Home/Intelligence/Crypto Payment Gateway Integration: Stripe, Circle & On-Chain Options

Crypto Payment Gateway Integration: Stripe, Circle & On-Chain Options

Complete integration guide for crypto payment gateways including Stripe's crypto onramp, Circle USDC APIs, Coinbase Commerce, and direct on-chain payment systems. Covers architecture patterns, fee comparison, compliance requirements, and code examples for Web3 businesses.

Samir Touinssi
Written by
Samir Touinssi
From The Arch Consulting
March 20, 2026β€’44 min read
Crypto Payment Gateway Integration: Stripe, Circle & On-Chain Options

Crypto payment gateway integration enables businesses to accept cryptocurrency payments alongside or instead of traditional payment methods. In 2026, the three dominant approaches are Stripe's crypto onramp (fiat-to-crypto conversion embedded in checkout, processing $2.8B+ quarterly in crypto volume), Circle's USDC payment APIs (powering $12T+ in cumulative USDC transactions since launch), and direct on-chain payment contracts (used by 14,000+ merchants via protocols like Request Network and Sablier). Each approach serves different use cases: Stripe excels at fiat-to-crypto bridging for Web2 businesses entering crypto, Circle provides enterprise-grade stablecoin infrastructure for B2B payments and treasury operations, and on-chain solutions offer maximum decentralization and composability for Web3-native businesses.

The global crypto payments market reached $1.3B in payment processor revenue in 2025 (Grand View Research), with projected 18.6% CAGR through 2030. Stablecoins dominate payment volume β€” USDC and USDT together process more daily transfer value ($45B+) than PayPal and Venmo combined. For businesses building on Web3 or serving crypto-native customers, integrating crypto payments is no longer optional β€” it is a competitive requirement.

Related Intelligence

Navigating the Week Ahead: Essential Web3 Market Analysis for Strategic Founders

3/22/2026

Unpacking Web3 Builder Ecosystem Insights Amidst Quiet Activity

3/21/2026

Layer 2 Scaling Solutions Compared: Rollups, Sidechains & Validiums

Layer 2 Scaling Solutions Compared: Rollups, Sidechains & Validiums

3/20/2026

Need Web3 Consulting?

Get expert guidance from The Arch Consulting on blockchain strategy, tokenomics, and Web3 growth.

Learn More
Back to Intelligence

Table of Contents

Payment Gateway Landscape OverviewGateway Comparison MatrixStripe Crypto Onramp IntegrationOverviewArchitecture PatternIntegration StepsStripe Crypto PricingStripe Crypto LimitationsCircle USDC Payment IntegrationOverviewArchitecture PatternIntegration StepsCircle USDC PricingCircle Advantages for B2BCoinbase Commerce IntegrationOverviewIntegrationCoinbase Commerce PricingDirect On-Chain Payment IntegrationOverviewSimple Payment Receiver Contract

This guide provides implementation-ready architecture patterns, fee comparisons, compliance checklists, and integration code for every major crypto payment approach. Whether you are a Web3 startup adding payments to your dApp or an enterprise accepting USDC for invoices, this is your complete technical reference.

Payment Gateway Landscape Overview

Gateway Comparison Matrix

FeatureStripe CryptoCircle (USDC)Coinbase CommerceRequest NetworkDirect On-Chain
Integration time2-4 hours1-3 days1-2 hours2-5 days1-4 weeks
Supported chainsEthereum, Solana, Base, PolygonEthereum, Solana, Avalanche, Base, Polygon, Arbitrum, Noble, StellarEthereum, Polygon, BaseEthereum, Polygon, Gnosis, NearAny EVM + custom
CurrenciesBTC, ETH, SOL, USDC + 50 tokensUSDC, EURCBTC, ETH, LTC, DOGE, USDC, DAIAny ERC-20Any token
Fiat offrampBuilt-inVia partners / Circle MintBuilt-in (USD)Via integrationsNot included
KYC requiredFor business (Stripe account)For business (Circle account)For business (Coinbase account)No (protocol-level)No
Processing fees1.5%0-0.1% (API) + gas1%0.1-0.5%Gas only
SettlementT+2 (fiat) / instant (crypto)InstantT+2 (fiat) / instant (crypto)InstantInstant
Recurring paymentsYes (Stripe Billing)Yes (programmable wallets)NoYes (Sablier streams)Custom smart contract
InvoicingYesYesYesYes (core feature)No
Chargeback riskNone (crypto is final)NoneNoneNoneNone

Stripe Crypto Onramp Integration

Overview

Stripe's crypto onramp allows users to purchase cryptocurrency using their credit card, debit card, or bank transfer β€” directly within your application's checkout flow. The crypto is delivered to the user's wallet, and you receive a referral fee or can structure the flow so payment settles to your own crypto wallet.

Stripe also supports crypto payouts (paying out in USDC to recipients) and crypto-to-fiat settlement (receiving crypto and settling in USD to your bank account).

Architecture Pattern

User β†’ Your Frontend β†’ Stripe Onramp Session API β†’ Stripe Hosted Widget
                                                          ↓
                                               User pays with card
                                                          ↓
                                               Stripe converts fiat β†’ crypto
                                                          ↓
                                               Crypto delivered to wallet
                                                          ↓
                                               Webhook: onramp.session.completed

Integration Steps

Step 1: Create an Onramp Session (Server-side)

// POST /api/create-onramp-session
import Stripe from 'stripe';

const stripe = new Stripe(process.env.STRIPE_SECRET_KEY);

export async function POST(request) {
  const { walletAddress, amount, destinationCurrency } = await request.json();

  const session = await stripe.crypto.onrampSessions.create({
    wallet_addresses: {
      ethereum: walletAddress, // or solana, polygon, base
    },
    destination_amount: amount,
    destination_currency: destinationCurrency || 'usdc',
    lock_wallet_address: true,
  });

  return Response.json({ clientSecret: session.client_secret });
}

Step 2: Mount the Onramp Widget (Client-side)

import { loadStripeOnramp } from '@stripe/crypto';

const stripeOnramp = await loadStripeOnramp(process.env.NEXT_PUBLIC_STRIPE_KEY);

const session = stripeOnramp.createSession({
  clientSecret: clientSecret, // from Step 1
  appearance: {
    theme: 'dark', // or 'light'
  },
});

session.mount('#onramp-container');

session.addEventListener('onramp_session_updated', (event) => {
  if (event.payload.status === 'fulfillment_complete') {
    // Crypto delivered to user's wallet
    handlePaymentSuccess(event.payload);
  }
});

Step 3: Handle Webhooks

// POST /api/webhooks/stripe-onramp
export async function POST(request) {
  const event = stripe.webhooks.constructEvent(
    await request.text(),
    request.headers.get('stripe-signature'),
    process.env.STRIPE_ONRAMP_WEBHOOK_SECRET
  );

  switch (event.type) {
    case 'crypto.onramp_session.completed':
      const session = event.data.object;
      // session.wallet_address β€” where crypto was delivered
      // session.destination_amount β€” amount delivered
      // session.destination_currency β€” currency delivered
      // session.source_amount β€” fiat amount charged
      await updateOrderStatus(session.id, 'paid');
      break;
    case 'crypto.onramp_session.failed':
      await handleFailedPayment(event.data.object);
      break;
  }

  return Response.json({ received: true });
}

Stripe Crypto Pricing

ComponentFee
Onramp transaction (card)1.5% + network fee
Onramp transaction (bank/ACH)0.5% + network fee
Crypto payouts (USDC)$0.25 flat per payout
Platform/marketplace cutConfigurable (you set the margin)
Monthly minimumNone
Setup feeNone

Stripe Crypto Limitations

  • β€’Geographic availability: Currently available in 27 countries (US, EU, UK, select APAC). Not available in most of Africa, Middle East, or South America.
  • β€’Token support: Limited to ~50 tokens. No support for long-tail altcoins or new launches.
  • β€’Onramp only (primarily): Stripe focuses on fiat-to-crypto. For crypto-to-crypto or pure on-chain payments, use other solutions.
  • β€’KYC requirements: End users face Stripe's standard identity verification for purchases over $500 in most jurisdictions.

Circle USDC Payment Integration

Overview

Circle is the issuer of USDC (the second-largest stablecoin, $52B+ market cap in Q1 2026). Their payment infrastructure provides three tiers:

  1. β€’Circle Payments API: Accept and send USDC programmatically (free for API calls, gas-only costs)
  2. β€’Circle Mint: Convert between USDC and fiat at 1:1 with no fee (for institutional accounts, $100K+ minimum)
  3. β€’Programmable Wallets: Create and manage wallets for users without requiring them to manage private keys

Architecture Pattern

Business API Server β†’ Circle Payments API β†’ Circle Infrastructure
                                                    ↓
                                           USDC minted or transferred
                                                    ↓
                                           Destination wallet receives USDC
                                                    ↓
                                           Webhook: payment.completed
                                                    ↓
                                           Optional: Circle Mint β†’ Bank (fiat)

Integration Steps

Step 1: Accept USDC Payments

// Generate a payment address for a customer
import { CircleAPI } from '@circle-fin/circle-sdk';

const circle = new CircleAPI({
  apiKey: process.env.CIRCLE_API_KEY,
  environment: 'production', // or 'sandbox'
});

// Create a payment intent
const paymentIntent = await circle.createPaymentIntent({
  amount: { amount: '100.00', currency: 'USD' },
  settlementCurrency: 'USD',
  paymentMethods: [
    { type: 'blockchain', chain: 'ETH' },
    { type: 'blockchain', chain: 'SOL' },
    { type: 'blockchain', chain: 'MATIC' },
  ],
});

// Returns deposit addresses for each chain
// Customer sends USDC to the deposit address
// Circle detects the payment and fires webhook

Step 2: Programmable Wallets (Custodial)

// Create a wallet for a user (they never see private keys)
const walletSet = await circle.createWalletSet({
  name: 'user-wallets',
});

const wallet = await circle.createWallet({
  walletSetId: walletSet.id,
  blockchains: ['ETH', 'SOL', 'MATIC'],
});

// Send USDC from the wallet
const transfer = await circle.createTransfer({
  source: { type: 'wallet', id: wallet.id },
  destination: {
    type: 'blockchain',
    address: recipientAddress,
    chain: 'ETH',
  },
  amount: { amount: '500.00', currency: 'USD' },
});

Step 3: Convert USDC to Fiat (Circle Mint)

// For institutional accounts ($100K+ monthly volume)
const redemption = await circle.createRedemption({
  amount: { amount: '50000.00', currency: 'USD' },
  destination: {
    type: 'wire',
    id: bankAccountId,
  },
});
// Funds arrive in 1-2 business days

Circle USDC Pricing

ComponentFee
API callsFree
USDC β†’ fiat (Circle Mint)Free (1:1 redemption)
Blockchain gas feesVaries by chain ($0.001-$5)
Programmable WalletsFree up to 10,000 wallets, then custom
Wire transfer (fiat redemption)$0-25 depending on bank
Minimum for Circle Mint$100,000

Circle Advantages for B2B

Circle's infrastructure is particularly strong for B2B use cases:

  • β€’Cross-border payments: Send USDC globally in minutes instead of 3-5 day wire transfers. 85% cost reduction vs SWIFT for sub-$100K transfers.
  • β€’Treasury management: Hold operating capital in USDC, earning competitive yields through Circle Yield (currently 4.2% APY on USDC).
  • β€’Invoicing: Circle's payment links integrate with standard invoicing workflows. Partners on The Signal's marketplace can receive USDC payments directly.
  • β€’Multi-chain flexibility: Accept USDC on whichever chain your customers prefer β€” Ethereum, Solana, Base, Polygon, Arbitrum, Avalanche, or Noble (Cosmos).

Coinbase Commerce Integration

Overview

Coinbase Commerce is the simplest crypto payment gateway for businesses that want plug-and-play integration. It supports BTC, ETH, LTC, DOGE, USDC, and DAI with a flat 1% processing fee and automatic conversion to USD.

Integration

// Create a charge
const charge = await fetch('https://api.commerce.coinbase.com/charges', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-CC-Api-Key': process.env.COINBASE_COMMERCE_KEY,
    'X-CC-Version': '2018-03-22',
  },
  body: JSON.stringify({
    name: 'Service Payment',
    description: 'Web3 consulting β€” 10 hours',
    pricing_type: 'fixed_price',
    local_price: { amount: '5000.00', currency: 'USD' },
    metadata: { orderId: 'ORD-12345' },
    redirect_url: 'https://yoursite.com/success',
    cancel_url: 'https://yoursite.com/cancel',
  }),
});

const { data } = await charge.json();
// data.hosted_url β€” redirect customer to this Coinbase-hosted page
// data.addresses β€” BTC, ETH, LTC, USDC addresses for direct payment

Coinbase Commerce Pricing

ComponentFee
Processing fee1%
Settlement (USD)Free (bank transfer)
Settlement (crypto)Free (keep in Coinbase account)
ChargebacksNone
Monthly feeNone
Supported countries100+ (accept from anywhere)

Direct On-Chain Payment Integration

Overview

For Web3-native businesses, direct on-chain payments eliminate intermediaries entirely. Customers send tokens directly to your smart contract or wallet address, with payment verification handled by blockchain indexing.

Simple Payment Receiver Contract

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/ReentrancyGuard.sol";

contract PaymentReceiver is Ownable, ReentrancyGuard {
    IERC20 public immutable paymentToken; // e.g., USDC

    event PaymentReceived(
        address indexed payer,
        uint256 amount,
        bytes32 indexed orderId
    );

    mapping(bytes32 => bool) public orderPaid;

    constructor(address _paymentToken) Ownable(msg.sender) {
        paymentToken = IERC20(_paymentToken);
    }

    function pay(bytes32 orderId, uint256 amount) external nonReentrant {
        require(!orderPaid[orderId], "Order already paid");
        require(amount > 0, "Amount must be positive");

        orderPaid[orderId] = true;

        bool success = paymentToken.transferFrom(
            msg.sender,
            address(this),
            amount
        );
        require(success, "Transfer failed");

        emit PaymentReceived(msg.sender, amount, orderId);
    }

    function withdraw(address to, uint256 amount)
        external
        onlyOwner
        nonReentrant
    {
        paymentToken.transfer(to, amount);
    }
}

Payment Verification (Backend)

// Listen for PaymentReceived events
import { createPublicClient, http, parseAbi } from 'viem';
import { base } from 'viem/chains';

const client = createPublicClient({
  chain: base,
  transport: http(process.env.RPC_URL),
});

const paymentAbi = parseAbi([
  'event PaymentReceived(address indexed payer, uint256 amount, bytes32 indexed orderId)',
]);

// Watch for new payments
const unwatch = client.watchContractEvent({
  address: PAYMENT_CONTRACT_ADDRESS,
  abi: paymentAbi,
  eventName: 'PaymentReceived',
  onLogs: async (logs) => {
    for (const log of logs) {
      const { payer, amount, orderId } = log.args;
      // Verify amount matches order
      // Update order status in database
      // Send confirmation to customer
      await processPayment({
        orderId,
        payer,
        amount: Number(amount) / 1e6, // USDC has 6 decimals
        txHash: log.transactionHash,
        blockNumber: log.blockNumber,
      });
    }
  },
});

On-Chain Payment Costs

ChainUSDC Transfer Gas CostConfirmation TimeNotes
Ethereum L1$2-812 seconds (1 block)Expensive for small payments
Base$0.001-0.012 secondsRecommended for most use cases
Arbitrum$0.002-0.02250ms (soft)Fast soft confirmations
Optimism$0.001-0.012 secondsOP Stack, strong ecosystem
Polygon PoS$0.001-0.0052 secondsLowest cost, slightly lower security
Solana$0.0001-0.001400msFastest, cheapest
Avalanche C-Chain$0.01-0.051 secondFast finality

Request Network: Decentralized Invoicing

Overview

Request Network is the leading decentralized payment protocol purpose-built for invoicing and B2B payments. It provides a decentralized ledger for payment requests (stored on IPFS/Arweave) with on-chain settlement.

Key Features

  • β€’Structured invoices: ISO 20022-compatible invoice data stored off-chain with on-chain payment tracking
  • β€’Multi-currency: Accept any ERC-20 token, with automatic conversion pricing
  • β€’Payment streaming: Integration with Sablier for streaming payments (ideal for freelancer payroll via our marketplace)
  • β€’Accounting integration: Export to Xero, QuickBooks, and other accounting tools
  • β€’Privacy: Invoice details are encrypted; only parties can decrypt

Integration

import { RequestNetwork, Types } from '@requestnetwork/request-client.js';
import { EthereumPrivateKeySignatureProvider } from '@requestnetwork/epk-signature';

const signatureProvider = new EthereumPrivateKeySignatureProvider({
  method: Types.Signature.METHOD.ECDSA,
  privateKey: process.env.PRIVATE_KEY,
});

const requestClient = new RequestNetwork({
  nodeConnectionConfig: {
    baseURL: 'https://gnosis.gateway.request.network/',
  },
  signatureProvider,
});

// Create a payment request (invoice)
const request = await requestClient.createRequest({
  requestInfo: {
    currency: {
      type: Types.RequestLogic.CURRENCY.ERC20,
      value: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC
      network: 'mainnet',
    },
    expectedAmount: '5000000000', // $5,000 in USDC (6 decimals)
    payee: {
      type: Types.Identity.TYPE.ETHEREUM_ADDRESS,
      value: payeeAddress,
    },
    payer: {
      type: Types.Identity.TYPE.ETHEREUM_ADDRESS,
      value: payerAddress,
    },
  },
  paymentNetwork: {
    id: Types.Extension.PAYMENT_NETWORK_ID.ERC20_FEE_PROXY_CONTRACT,
    parameters: {
      paymentAddress: payeeAddress,
      feeAddress: '0x0000...',
      feeAmount: '0',
    },
  },
  contentData: {
    reason: 'Web3 development β€” March 2026',
    dueDate: '2026-04-20',
    invoiceNumber: 'INV-2026-042',
  },
});

Request Network Pricing

ComponentFee
Protocol fee0.1% (capped at $50 per request)
Storage (IPFS/Arweave)$0.01-0.10 per request
Gas feesVaries by chain
Request Finance appFree basic / $49/mo pro / $199/mo enterprise

Compliance & Regulatory Considerations

KYC/AML Requirements by Jurisdiction

JurisdictionThresholdRequirements
USAll transactions (MSB registration)FinCEN MSB registration, BSA compliance, SAR filing
EU (MiCA)All CASP activitiesCASP license, travel rule compliance above 1,000 EUR
UKAll crypto businessesFCA registration, AML/CTF compliance
SingaporeAll DPT servicesMAS license, travel rule compliance
Dubai (VARA)All VASP activitiesVARA license, ongoing monitoring
SwitzerlandCHF 1,000+FINMA guidance, SRO membership for intermediaries

Travel Rule Compliance

The FATF Travel Rule requires virtual asset service providers (VASPs) to share originator and beneficiary information for transfers above certain thresholds ($3,000 in the US, 1,000 EUR in the EU under MiCA). Solutions for compliance:

  • β€’Notabene: Travel rule compliance for 60+ jurisdictions. Leading VASP-to-VASP messaging.
  • β€’Chainalysis Reactor: Transaction monitoring and compliance screening.
  • β€’TRM Labs: Blockchain analytics for compliance teams.
  • β€’Sygna Bridge: Travel rule solution for Asian markets.

For businesses processing significant volume, consult legal and compliance providers specializing in crypto regulations.

Tax Reporting

Crypto payment processors typically provide:

  • β€’Transaction reports (CSV/API export for accounting)
  • β€’1099 forms (US) for merchant payouts exceeding $600
  • β€’VAT-compliant invoicing (EU) β€” Request Network supports EU invoice requirements
  • β€’Integration with crypto tax tools (Koinly, CoinTracker, TaxBit)

Choosing the Right Integration

Decision Matrix

Choose Stripe Crypto if:

  • β€’You are a Web2 business adding crypto payment options
  • β€’Your customers primarily want to pay with credit cards and receive crypto
  • β€’You need fiat settlement (receive USD in your bank account)
  • β€’You want minimal integration effort (2-4 hours)
  • β€’You already use Stripe for payments

Choose Circle USDC if:

  • β€’You are a B2B business processing high-value payments ($10K+)
  • β€’Cross-border payments are a primary use case
  • β€’You want to hold treasury in stablecoins
  • β€’You need programmable wallets for your users
  • β€’Enterprise SLA and support are required

Choose Coinbase Commerce if:

  • β€’You want the simplest possible integration
  • β€’Multi-cryptocurrency support (BTC, ETH, LTC, etc.) is important
  • β€’Your volume is moderate (<$1M/month)
  • β€’You want Coinbase brand recognition at checkout

Choose Direct On-Chain if:

  • β€’You are a Web3-native application (dApp)
  • β€’Maximum decentralization is a priority
  • β€’You want zero intermediary fees (gas only)
  • β€’Your users already have wallets (MetaMask, Rainbow, etc.)
  • β€’You need custom payment logic (streaming, milestones, escrow)

Choose Request Network if:

  • β€’B2B invoicing is your primary use case
  • β€’You need structured invoice data for accounting
  • β€’Payment streaming for freelancers and contractors is needed
  • β€’You want decentralized infrastructure (no vendor lock-in)
  • β€’Multi-chain payment flexibility is important

Cost Comparison: $10,000 Monthly Payment Volume

ProviderFeesSettlementTotal Cost
Stripe Crypto (card)$150 (1.5%)$0 (fiat)$150/mo
Stripe Crypto (ACH)$50 (0.5%)$0 (fiat)$50/mo
Circle USDC$0 (API) + ~$5 gas$0 (Circle Mint)~$5/mo
Coinbase Commerce$100 (1%)$0 (fiat)$100/mo
Request Network$10 (0.1%) + ~$2 gasN/A~$12/mo
Direct On-Chain (Base)~$1 gasN/A~$1/mo

Cost Comparison: $100,000 Monthly Payment Volume

ProviderFeesSettlementTotal Cost
Stripe Crypto (card)$1,500$0$1,500/mo
Circle USDC$0 + ~$50 gas$0~$50/mo
Coinbase Commerce$1,000$0$1,000/mo
Request Network$100 + ~$20 gasN/A~$120/mo
Direct On-Chain (Base)~$10 gasN/A~$10/mo

At $100K monthly volume, Circle and direct on-chain approaches save over $1,000/month compared to Stripe or Coinbase Commerce. The tradeoff is implementation complexity and the need to manage your own fiat offramp.

Advanced Patterns

Subscription / Recurring Payments

Crypto lacks the "pull payment" model of credit cards (where the merchant initiates the charge). Recurring crypto payments require one of these patterns:

  1. β€’

    Token Approval + Scheduled Pull: Customer approves a spending allowance via ERC-20 approve(). Your contract calls transferFrom() on a schedule (keeper network like Chainlink Automation or Gelato).

  2. β€’

    Payment Streaming (Sablier/Superfluid): Customer locks funds in a streaming contract that continuously releases tokens per-second to the merchant. Ideal for subscriptions, SaaS, and freelancer payments.

  3. β€’

    Account Abstraction (ERC-4337): Session keys allow pre-authorized recurring transactions without per-payment approval. Smart account wallets (Safe, Kernel, Biconomy) support this pattern.

  4. β€’

    Stripe Billing + Crypto: Use Stripe's standard subscription billing with their crypto onramp as the payment method. Most mature but least decentralized.

Multi-Chain Payment Aggregation

To accept payments on multiple chains with a single integration:

// Unified payment detection across chains
const chains = [
  { name: 'base', rpc: process.env.BASE_RPC, contract: BASE_PAYMENT_CONTRACT },
  { name: 'arbitrum', rpc: process.env.ARB_RPC, contract: ARB_PAYMENT_CONTRACT },
  { name: 'polygon', rpc: process.env.POLYGON_RPC, contract: POLYGON_PAYMENT_CONTRACT },
];

// Deploy identical PaymentReceiver on each chain
// Watch all chains simultaneously
for (const chain of chains) {
  const client = createPublicClient({
    transport: http(chain.rpc),
  });

  client.watchContractEvent({
    address: chain.contract,
    abi: paymentAbi,
    eventName: 'PaymentReceived',
    onLogs: (logs) => processPayment(chain.name, logs),
  });
}

Cross-chain payment aggregation services like Li.Fi and Socket can also route payments from any chain to your preferred settlement chain. For cross-chain bridge architecture, see our dedicated guide.

Escrow and Milestone Payments

For marketplace and freelance platforms, escrow contracts hold funds until work is delivered:

contract EscrowPayment {
    enum Status { Created, Funded, Delivered, Released, Disputed }

    struct Escrow {
        address buyer;
        address seller;
        uint256 amount;
        Status status;
    }

    mapping(bytes32 => Escrow) public escrows;

    function fund(bytes32 escrowId, address seller, uint256 amount) external {
        // Buyer deposits USDC into escrow
        paymentToken.transferFrom(msg.sender, address(this), amount);
        escrows[escrowId] = Escrow(msg.sender, seller, amount, Status.Funded);
    }

    function release(bytes32 escrowId) external {
        Escrow storage e = escrows[escrowId];
        require(msg.sender == e.buyer, "Only buyer can release");
        require(e.status == Status.Funded, "Invalid status");
        e.status = Status.Released;
        paymentToken.transfer(e.seller, e.amount);
    }
}

This pattern is used by The Signal's marketplace for deal management, ensuring funds are held securely until milestones are completed and approved. Get your escrow contracts audited before deploying to production.

Frequently Asked Questions

What is the cheapest way to accept crypto payments?

Direct on-chain payment to a wallet or smart contract on an L2 like Base or Arbitrum costs only gas fees ($0.001-$0.02 per transaction). This is 100-1,000x cheaper than Stripe or Coinbase Commerce. The tradeoff is that you need to build your own payment detection, manage your own wallets, and handle fiat conversion separately.

Can I accept crypto payments without KYC?

If you accept payments directly on-chain (peer-to-peer), no intermediary KYC is required. However, if you operate as a business in regulated jurisdictions (US, EU, UK, Singapore), you may still have AML obligations regardless of the payment method. Using a licensed processor like Stripe or Circle handles compliance for you. Consult with legal specialists for jurisdiction-specific guidance.

How do I convert crypto payments to fiat?

Three approaches: (1) Use a gateway with built-in conversion (Stripe, Coinbase Commerce) β€” automatic, 1-1.5% fee; (2) Use Circle Mint to redeem USDC 1:1 for USD β€” free but requires $100K+ institutional account; (3) Use an exchange (Coinbase, Kraken) to sell received crypto β€” 0.1-0.5% fee but more manual. For treasury management, holding USDC and converting only as needed for expenses is increasingly common.

What is USDC and why is it preferred for crypto payments?

USDC is a dollar-backed stablecoin issued by Circle, maintaining a 1:1 peg with the US dollar. It is preferred for payments because: (1) no price volatility (unlike BTC/ETH), (2) available on 15+ blockchains, (3) backed by cash and short-term US Treasuries (independently attested monthly), (4) regulated under US state money transmission laws, (5) $52B+ market cap ensuring deep liquidity. USDC processes $45B+ in daily transfer volume.

How do recurring crypto payments work?

Crypto lacks credit card-style "pull payments." Recurring payments use one of four approaches: (1) ERC-20 token approval with scheduled contract calls via keeper networks, (2) payment streaming via Sablier or Superfluid (continuous per-second token flow), (3) smart account session keys via ERC-4337 account abstraction, (4) Stripe Billing with crypto onramp as payment method. Payment streaming is the most elegant crypto-native solution.

Is it safe to accept Bitcoin payments for my business?

Yes, but with caveats. Bitcoin payments are irreversible (no chargebacks), which is advantageous for merchants. However, Bitcoin's price volatility means the value of received payments can fluctuate 5-15% daily. To mitigate this, use a processor like Coinbase Commerce that instantly converts BTC to USD, or accept stablecoins (USDC) instead. Bitcoin's 10-minute block time also means slower payment confirmation compared to L2 stablecoins.

What blockchain should I accept payments on?

For most businesses in 2026, Base (Coinbase's L2) offers the best combination of low fees ($0.001-$0.01), fast confirmation (2 seconds), strong ecosystem, and Coinbase wallet integration. Solana is best for consumer-facing applications requiring sub-second finality. Ethereum L1 is suitable only for high-value payments ($1,000+) where security guarantees justify higher gas costs. Accept payments on 2-3 chains maximum to avoid operational complexity.

How do I handle refunds for crypto payments?

Unlike credit cards, crypto payments cannot be reversed by the processor. Refunds must be initiated by the merchant, sending tokens back to the customer's wallet address. Implement refund logic in your application: (1) capture the customer's wallet address at payment time, (2) store payment transaction hashes for audit trail, (3) process refunds as a new outgoing transaction via your wallet/contract. Factor gas costs into your refund policy β€” on L2s this is negligible ($0.01) but on Ethereum L1 it can be $5-15.

Conclusion

Crypto payment gateway integration in 2026 spans a spectrum from fully managed (Stripe) to fully decentralized (direct on-chain). The right choice depends on your customer base (crypto-native vs mainstream), payment volume (determines fee sensitivity), regulatory obligations (KYC/AML requirements), and technical resources (build vs buy).

For most businesses entering crypto payments, start with Stripe Crypto or Coinbase Commerce for speed to market. As volume grows past $50K/month, evaluate Circle USDC for B2B payments and direct on-chain integration for cost savings. For Web3-native applications, build on-chain payment contracts from the start, deploying on L2s like Base or Arbitrum for minimal fees.

The elimination of chargebacks alone β€” which cost US merchants $40B annually in 2025 β€” makes crypto payments economically compelling. Combined with instant settlement, global reach, and programmatic composability, crypto payments are transitioning from a niche option to a mainstream necessity.

Browse The Signal's directory to find payment integration specialists, compliance consultants, and development teams who can implement the right payment stack for your business.

Payment Verification (Backend)
On-Chain Payment Costs
Request Network: Decentralized Invoicing
Overview
Key Features
Integration
Request Network Pricing
Compliance & Regulatory Considerations
KYC/AML Requirements by Jurisdiction
Travel Rule Compliance
Tax Reporting
Choosing the Right Integration
Decision Matrix
Cost Comparison: $10,000 Monthly Payment Volume
Cost Comparison: $100,000 Monthly Payment Volume
Advanced Patterns
Subscription / Recurring Payments
Multi-Chain Payment Aggregation
Escrow and Milestone Payments
Frequently Asked Questions
What is the cheapest way to accept crypto payments?
Can I accept crypto payments without KYC?
How do I convert crypto payments to fiat?
What is USDC and why is it preferred for crypto payments?
How do recurring crypto payments work?
Is it safe to accept Bitcoin payments for my business?
What blockchain should I accept payments on?
How do I handle refunds for crypto payments?
Conclusion

Share Article

XLI

This guide provides implementation-ready architecture patterns, fee comparisons, compliance checklists, and integration code for every major crypto payment approach. Whether you are a Web3 startup adding payments to your dApp or an enterprise accepting USDC for invoices, this is your complete technical reference.

Payment Gateway Landscape Overview

Gateway Comparison Matrix

FeatureStripe CryptoCircle (USDC)Coinbase CommerceRequest NetworkDirect On-Chain
Integration time2-4 hours1-3 days1-2 hours2-5 days1-4 weeks
Supported chainsEthereum, Solana, Base, PolygonEthereum, Solana, Avalanche, Base, Polygon, Arbitrum, Noble, StellarEthereum, Polygon, BaseEthereum, Polygon, Gnosis, NearAny EVM + custom
CurrenciesBTC, ETH, SOL, USDC + 50 tokensUSDC, EURCBTC, ETH, LTC, DOGE, USDC, DAIAny ERC-20Any token
Fiat offrampBuilt-inVia partners / Circle MintBuilt-in (USD)Via integrationsNot included
KYC requiredFor business (Stripe account)For business (Circle account)For business (Coinbase account)No (protocol-level)No
Processing fees1.5%0-0.1% (API) + gas1%0.1-0.5%Gas only
SettlementT+2 (fiat) / instant (crypto)InstantT+2 (fiat) / instant (crypto)InstantInstant
Recurring paymentsYes (Stripe Billing)Yes (programmable wallets)NoYes (Sablier streams)Custom smart contract
InvoicingYesYesYesYes (core feature)No
Chargeback riskNone (crypto is final)NoneNoneNoneNone

Stripe Crypto Onramp Integration

Overview

Stripe's crypto onramp allows users to purchase cryptocurrency using their credit card, debit card, or bank transfer β€” directly within your application's checkout flow. The crypto is delivered to the user's wallet, and you receive a referral fee or can structure the flow so payment settles to your own crypto wallet.

Stripe also supports crypto payouts (paying out in USDC to recipients) and crypto-to-fiat settlement (receiving crypto and settling in USD to your bank account).

Architecture Pattern

User β†’ Your Frontend β†’ Stripe Onramp Session API β†’ Stripe Hosted Widget
                                                          ↓
                                               User pays with card
                                                          ↓
                                               Stripe converts fiat β†’ crypto
                                                          ↓
                                               Crypto delivered to wallet
                                                          ↓
                                               Webhook: onramp.session.completed

Integration Steps

Step 1: Create an Onramp Session (Server-side)

// POST /api/create-onramp-session
import Stripe from 'stripe';

const stripe = new Stripe(process.env.STRIPE_SECRET_KEY);

export async function POST(request) {
  const { walletAddress, amount, destinationCurrency } = await request.json();

  const session = await stripe.crypto.onrampSessions.create({
    wallet_addresses: {
      ethereum: walletAddress, // or solana, polygon, base
    },
    destination_amount: amount,
    destination_currency: destinationCurrency || 'usdc',
    lock_wallet_address: true,
  });

  return Response.json({ clientSecret: session.client_secret });
}

Step 2: Mount the Onramp Widget (Client-side)

import { loadStripeOnramp } from '@stripe/crypto';

const stripeOnramp = await loadStripeOnramp(process.env.NEXT_PUBLIC_STRIPE_KEY);

const session = stripeOnramp.createSession({
  clientSecret: clientSecret, // from Step 1
  appearance: {
    theme: 'dark', // or 'light'
  },
});

session.mount('#onramp-container');

session.addEventListener('onramp_session_updated', (event) => {
  if (event.payload.status === 'fulfillment_complete') {
    // Crypto delivered to user's wallet
    handlePaymentSuccess(event.payload);
  }
});

Step 3: Handle Webhooks

// POST /api/webhooks/stripe-onramp
export async function POST(request) {
  const event = stripe.webhooks.constructEvent(
    await request.text(),
    request.headers.get('stripe-signature'),
    process.env.STRIPE_ONRAMP_WEBHOOK_SECRET
  );

  switch (event.type) {
    case 'crypto.onramp_session.completed':
      const session = event.data.object;
      // session.wallet_address β€” where crypto was delivered
      // session.destination_amount β€” amount delivered
      // session.destination_currency β€” currency delivered
      // session.source_amount β€” fiat amount charged
      await updateOrderStatus(session.id, 'paid');
      break;
    case 'crypto.onramp_session.failed':
      await handleFailedPayment(event.data.object);
      break;
  }

  return Response.json({ received: true });
}

Stripe Crypto Pricing

ComponentFee
Onramp transaction (card)1.5% + network fee
Onramp transaction (bank/ACH)0.5% + network fee
Crypto payouts (USDC)$0.25 flat per payout
Platform/marketplace cutConfigurable (you set the margin)
Monthly minimumNone
Setup feeNone

Stripe Crypto Limitations

  • β€’Geographic availability: Currently available in 27 countries (US, EU, UK, select APAC). Not available in most of Africa, Middle East, or South America.
  • β€’Token support: Limited to ~50 tokens. No support for long-tail altcoins or new launches.
  • β€’Onramp only (primarily): Stripe focuses on fiat-to-crypto. For crypto-to-crypto or pure on-chain payments, use other solutions.
  • β€’KYC requirements: End users face Stripe's standard identity verification for purchases over $500 in most jurisdictions.

Circle USDC Payment Integration

Overview

Circle is the issuer of USDC (the second-largest stablecoin, $52B+ market cap in Q1 2026). Their payment infrastructure provides three tiers:

  1. β€’Circle Payments API: Accept and send USDC programmatically (free for API calls, gas-only costs)
  2. β€’Circle Mint: Convert between USDC and fiat at 1:1 with no fee (for institutional accounts, $100K+ minimum)
  3. β€’Programmable Wallets: Create and manage wallets for users without requiring them to manage private keys

Architecture Pattern

Business API Server β†’ Circle Payments API β†’ Circle Infrastructure
                                                    ↓
                                           USDC minted or transferred
                                                    ↓
                                           Destination wallet receives USDC
                                                    ↓
                                           Webhook: payment.completed
                                                    ↓
                                           Optional: Circle Mint β†’ Bank (fiat)

Integration Steps

Step 1: Accept USDC Payments

// Generate a payment address for a customer
import { CircleAPI } from '@circle-fin/circle-sdk';

const circle = new CircleAPI({
  apiKey: process.env.CIRCLE_API_KEY,
  environment: 'production', // or 'sandbox'
});

// Create a payment intent
const paymentIntent = await circle.createPaymentIntent({
  amount: { amount: '100.00', currency: 'USD' },
  settlementCurrency: 'USD',
  paymentMethods: [
    { type: 'blockchain', chain: 'ETH' },
    { type: 'blockchain', chain: 'SOL' },
    { type: 'blockchain', chain: 'MATIC' },
  ],
});

// Returns deposit addresses for each chain
// Customer sends USDC to the deposit address
// Circle detects the payment and fires webhook

Step 2: Programmable Wallets (Custodial)

// Create a wallet for a user (they never see private keys)
const walletSet = await circle.createWalletSet({
  name: 'user-wallets',
});

const wallet = await circle.createWallet({
  walletSetId: walletSet.id,
  blockchains: ['ETH', 'SOL', 'MATIC'],
});

// Send USDC from the wallet
const transfer = await circle.createTransfer({
  source: { type: 'wallet', id: wallet.id },
  destination: {
    type: 'blockchain',
    address: recipientAddress,
    chain: 'ETH',
  },
  amount: { amount: '500.00', currency: 'USD' },
});

Step 3: Convert USDC to Fiat (Circle Mint)

// For institutional accounts ($100K+ monthly volume)
const redemption = await circle.createRedemption({
  amount: { amount: '50000.00', currency: 'USD' },
  destination: {
    type: 'wire',
    id: bankAccountId,
  },
});
// Funds arrive in 1-2 business days

Circle USDC Pricing

ComponentFee
API callsFree
USDC β†’ fiat (Circle Mint)Free (1:1 redemption)
Blockchain gas feesVaries by chain ($0.001-$5)
Programmable WalletsFree up to 10,000 wallets, then custom
Wire transfer (fiat redemption)$0-25 depending on bank
Minimum for Circle Mint$100,000

Circle Advantages for B2B

Circle's infrastructure is particularly strong for B2B use cases:

  • β€’Cross-border payments: Send USDC globally in minutes instead of 3-5 day wire transfers. 85% cost reduction vs SWIFT for sub-$100K transfers.
  • β€’Treasury management: Hold operating capital in USDC, earning competitive yields through Circle Yield (currently 4.2% APY on USDC).
  • β€’Invoicing: Circle's payment links integrate with standard invoicing workflows. Partners on The Signal's marketplace can receive USDC payments directly.
  • β€’Multi-chain flexibility: Accept USDC on whichever chain your customers prefer β€” Ethereum, Solana, Base, Polygon, Arbitrum, Avalanche, or Noble (Cosmos).

Coinbase Commerce Integration

Overview

Coinbase Commerce is the simplest crypto payment gateway for businesses that want plug-and-play integration. It supports BTC, ETH, LTC, DOGE, USDC, and DAI with a flat 1% processing fee and automatic conversion to USD.

Integration

// Create a charge
const charge = await fetch('https://api.commerce.coinbase.com/charges', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-CC-Api-Key': process.env.COINBASE_COMMERCE_KEY,
    'X-CC-Version': '2018-03-22',
  },
  body: JSON.stringify({
    name: 'Service Payment',
    description: 'Web3 consulting β€” 10 hours',
    pricing_type: 'fixed_price',
    local_price: { amount: '5000.00', currency: 'USD' },
    metadata: { orderId: 'ORD-12345' },
    redirect_url: 'https://yoursite.com/success',
    cancel_url: 'https://yoursite.com/cancel',
  }),
});

const { data } = await charge.json();
// data.hosted_url β€” redirect customer to this Coinbase-hosted page
// data.addresses β€” BTC, ETH, LTC, USDC addresses for direct payment

Coinbase Commerce Pricing

ComponentFee
Processing fee1%
Settlement (USD)Free (bank transfer)
Settlement (crypto)Free (keep in Coinbase account)
ChargebacksNone
Monthly feeNone
Supported countries100+ (accept from anywhere)

Direct On-Chain Payment Integration

Overview

For Web3-native businesses, direct on-chain payments eliminate intermediaries entirely. Customers send tokens directly to your smart contract or wallet address, with payment verification handled by blockchain indexing.

Simple Payment Receiver Contract

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/ReentrancyGuard.sol";

contract PaymentReceiver is Ownable, ReentrancyGuard {
    IERC20 public immutable paymentToken; // e.g., USDC

    event PaymentReceived(
        address indexed payer,
        uint256 amount,
        bytes32 indexed orderId
    );

    mapping(bytes32 => bool) public orderPaid;

    constructor(address _paymentToken) Ownable(msg.sender) {
        paymentToken = IERC20(_paymentToken);
    }

    function pay(bytes32 orderId, uint256 amount) external nonReentrant {
        require(!orderPaid[orderId], "Order already paid");
        require(amount > 0, "Amount must be positive");

        orderPaid[orderId] = true;

        bool success = paymentToken.transferFrom(
            msg.sender,
            address(this),
            amount
        );
        require(success, "Transfer failed");

        emit PaymentReceived(msg.sender, amount, orderId);
    }

    function withdraw(address to, uint256 amount)
        external
        onlyOwner
        nonReentrant
    {
        paymentToken.transfer(to, amount);
    }
}

Payment Verification (Backend)

// Listen for PaymentReceived events
import { createPublicClient, http, parseAbi } from 'viem';
import { base } from 'viem/chains';

const client = createPublicClient({
  chain: base,
  transport: http(process.env.RPC_URL),
});

const paymentAbi = parseAbi([
  'event PaymentReceived(address indexed payer, uint256 amount, bytes32 indexed orderId)',
]);

// Watch for new payments
const unwatch = client.watchContractEvent({
  address: PAYMENT_CONTRACT_ADDRESS,
  abi: paymentAbi,
  eventName: 'PaymentReceived',
  onLogs: async (logs) => {
    for (const log of logs) {
      const { payer, amount, orderId } = log.args;
      // Verify amount matches order
      // Update order status in database
      // Send confirmation to customer
      await processPayment({
        orderId,
        payer,
        amount: Number(amount) / 1e6, // USDC has 6 decimals
        txHash: log.transactionHash,
        blockNumber: log.blockNumber,
      });
    }
  },
});

On-Chain Payment Costs

ChainUSDC Transfer Gas CostConfirmation TimeNotes
Ethereum L1$2-812 seconds (1 block)Expensive for small payments
Base$0.001-0.012 secondsRecommended for most use cases
Arbitrum$0.002-0.02250ms (soft)Fast soft confirmations
Optimism$0.001-0.012 secondsOP Stack, strong ecosystem
Polygon PoS$0.001-0.0052 secondsLowest cost, slightly lower security
Solana$0.0001-0.001400msFastest, cheapest
Avalanche C-Chain$0.01-0.051 secondFast finality

Request Network: Decentralized Invoicing

Overview

Request Network is the leading decentralized payment protocol purpose-built for invoicing and B2B payments. It provides a decentralized ledger for payment requests (stored on IPFS/Arweave) with on-chain settlement.

Key Features

  • β€’Structured invoices: ISO 20022-compatible invoice data stored off-chain with on-chain payment tracking
  • β€’Multi-currency: Accept any ERC-20 token, with automatic conversion pricing
  • β€’Payment streaming: Integration with Sablier for streaming payments (ideal for freelancer payroll via our marketplace)
  • β€’Accounting integration: Export to Xero, QuickBooks, and other accounting tools
  • β€’Privacy: Invoice details are encrypted; only parties can decrypt

Integration

import { RequestNetwork, Types } from '@requestnetwork/request-client.js';
import { EthereumPrivateKeySignatureProvider } from '@requestnetwork/epk-signature';

const signatureProvider = new EthereumPrivateKeySignatureProvider({
  method: Types.Signature.METHOD.ECDSA,
  privateKey: process.env.PRIVATE_KEY,
});

const requestClient = new RequestNetwork({
  nodeConnectionConfig: {
    baseURL: 'https://gnosis.gateway.request.network/',
  },
  signatureProvider,
});

// Create a payment request (invoice)
const request = await requestClient.createRequest({
  requestInfo: {
    currency: {
      type: Types.RequestLogic.CURRENCY.ERC20,
      value: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC
      network: 'mainnet',
    },
    expectedAmount: '5000000000', // $5,000 in USDC (6 decimals)
    payee: {
      type: Types.Identity.TYPE.ETHEREUM_ADDRESS,
      value: payeeAddress,
    },
    payer: {
      type: Types.Identity.TYPE.ETHEREUM_ADDRESS,
      value: payerAddress,
    },
  },
  paymentNetwork: {
    id: Types.Extension.PAYMENT_NETWORK_ID.ERC20_FEE_PROXY_CONTRACT,
    parameters: {
      paymentAddress: payeeAddress,
      feeAddress: '0x0000...',
      feeAmount: '0',
    },
  },
  contentData: {
    reason: 'Web3 development β€” March 2026',
    dueDate: '2026-04-20',
    invoiceNumber: 'INV-2026-042',
  },
});

Request Network Pricing

ComponentFee
Protocol fee0.1% (capped at $50 per request)
Storage (IPFS/Arweave)$0.01-0.10 per request
Gas feesVaries by chain
Request Finance appFree basic / $49/mo pro / $199/mo enterprise

Compliance & Regulatory Considerations

KYC/AML Requirements by Jurisdiction

JurisdictionThresholdRequirements
USAll transactions (MSB registration)FinCEN MSB registration, BSA compliance, SAR filing
EU (MiCA)All CASP activitiesCASP license, travel rule compliance above 1,000 EUR
UKAll crypto businessesFCA registration, AML/CTF compliance
SingaporeAll DPT servicesMAS license, travel rule compliance
Dubai (VARA)All VASP activitiesVARA license, ongoing monitoring
SwitzerlandCHF 1,000+FINMA guidance, SRO membership for intermediaries

Travel Rule Compliance

The FATF Travel Rule requires virtual asset service providers (VASPs) to share originator and beneficiary information for transfers above certain thresholds ($3,000 in the US, 1,000 EUR in the EU under MiCA). Solutions for compliance:

  • β€’Notabene: Travel rule compliance for 60+ jurisdictions. Leading VASP-to-VASP messaging.
  • β€’Chainalysis Reactor: Transaction monitoring and compliance screening.
  • β€’TRM Labs: Blockchain analytics for compliance teams.
  • β€’Sygna Bridge: Travel rule solution for Asian markets.

For businesses processing significant volume, consult legal and compliance providers specializing in crypto regulations.

Tax Reporting

Crypto payment processors typically provide:

  • β€’Transaction reports (CSV/API export for accounting)
  • β€’1099 forms (US) for merchant payouts exceeding $600
  • β€’VAT-compliant invoicing (EU) β€” Request Network supports EU invoice requirements
  • β€’Integration with crypto tax tools (Koinly, CoinTracker, TaxBit)

Choosing the Right Integration

Decision Matrix

Choose Stripe Crypto if:

  • β€’You are a Web2 business adding crypto payment options
  • β€’Your customers primarily want to pay with credit cards and receive crypto
  • β€’You need fiat settlement (receive USD in your bank account)
  • β€’You want minimal integration effort (2-4 hours)
  • β€’You already use Stripe for payments

Choose Circle USDC if:

  • β€’You are a B2B business processing high-value payments ($10K+)
  • β€’Cross-border payments are a primary use case
  • β€’You want to hold treasury in stablecoins
  • β€’You need programmable wallets for your users
  • β€’Enterprise SLA and support are required

Choose Coinbase Commerce if:

  • β€’You want the simplest possible integration
  • β€’Multi-cryptocurrency support (BTC, ETH, LTC, etc.) is important
  • β€’Your volume is moderate (<$1M/month)
  • β€’You want Coinbase brand recognition at checkout

Choose Direct On-Chain if:

  • β€’You are a Web3-native application (dApp)
  • β€’Maximum decentralization is a priority
  • β€’You want zero intermediary fees (gas only)
  • β€’Your users already have wallets (MetaMask, Rainbow, etc.)
  • β€’You need custom payment logic (streaming, milestones, escrow)

Choose Request Network if:

  • β€’B2B invoicing is your primary use case
  • β€’You need structured invoice data for accounting
  • β€’Payment streaming for freelancers and contractors is needed
  • β€’You want decentralized infrastructure (no vendor lock-in)
  • β€’Multi-chain payment flexibility is important

Cost Comparison: $10,000 Monthly Payment Volume

ProviderFeesSettlementTotal Cost
Stripe Crypto (card)$150 (1.5%)$0 (fiat)$150/mo
Stripe Crypto (ACH)$50 (0.5%)$0 (fiat)$50/mo
Circle USDC$0 (API) + ~$5 gas$0 (Circle Mint)~$5/mo
Coinbase Commerce$100 (1%)$0 (fiat)$100/mo
Request Network$10 (0.1%) + ~$2 gasN/A~$12/mo
Direct On-Chain (Base)~$1 gasN/A~$1/mo

Cost Comparison: $100,000 Monthly Payment Volume

ProviderFeesSettlementTotal Cost
Stripe Crypto (card)$1,500$0$1,500/mo
Circle USDC$0 + ~$50 gas$0~$50/mo
Coinbase Commerce$1,000$0$1,000/mo
Request Network$100 + ~$20 gasN/A~$120/mo
Direct On-Chain (Base)~$10 gasN/A~$10/mo

At $100K monthly volume, Circle and direct on-chain approaches save over $1,000/month compared to Stripe or Coinbase Commerce. The tradeoff is implementation complexity and the need to manage your own fiat offramp.

Advanced Patterns

Subscription / Recurring Payments

Crypto lacks the "pull payment" model of credit cards (where the merchant initiates the charge). Recurring crypto payments require one of these patterns:

  1. β€’

    Token Approval + Scheduled Pull: Customer approves a spending allowance via ERC-20 approve(). Your contract calls transferFrom() on a schedule (keeper network like Chainlink Automation or Gelato).

  2. β€’

    Payment Streaming (Sablier/Superfluid): Customer locks funds in a streaming contract that continuously releases tokens per-second to the merchant. Ideal for subscriptions, SaaS, and freelancer payments.

  3. β€’

    Account Abstraction (ERC-4337): Session keys allow pre-authorized recurring transactions without per-payment approval. Smart account wallets (Safe, Kernel, Biconomy) support this pattern.

  4. β€’

    Stripe Billing + Crypto: Use Stripe's standard subscription billing with their crypto onramp as the payment method. Most mature but least decentralized.

Multi-Chain Payment Aggregation

To accept payments on multiple chains with a single integration:

// Unified payment detection across chains
const chains = [
  { name: 'base', rpc: process.env.BASE_RPC, contract: BASE_PAYMENT_CONTRACT },
  { name: 'arbitrum', rpc: process.env.ARB_RPC, contract: ARB_PAYMENT_CONTRACT },
  { name: 'polygon', rpc: process.env.POLYGON_RPC, contract: POLYGON_PAYMENT_CONTRACT },
];

// Deploy identical PaymentReceiver on each chain
// Watch all chains simultaneously
for (const chain of chains) {
  const client = createPublicClient({
    transport: http(chain.rpc),
  });

  client.watchContractEvent({
    address: chain.contract,
    abi: paymentAbi,
    eventName: 'PaymentReceived',
    onLogs: (logs) => processPayment(chain.name, logs),
  });
}

Cross-chain payment aggregation services like Li.Fi and Socket can also route payments from any chain to your preferred settlement chain. For cross-chain bridge architecture, see our dedicated guide.

Escrow and Milestone Payments

For marketplace and freelance platforms, escrow contracts hold funds until work is delivered:

contract EscrowPayment {
    enum Status { Created, Funded, Delivered, Released, Disputed }

    struct Escrow {
        address buyer;
        address seller;
        uint256 amount;
        Status status;
    }

    mapping(bytes32 => Escrow) public escrows;

    function fund(bytes32 escrowId, address seller, uint256 amount) external {
        // Buyer deposits USDC into escrow
        paymentToken.transferFrom(msg.sender, address(this), amount);
        escrows[escrowId] = Escrow(msg.sender, seller, amount, Status.Funded);
    }

    function release(bytes32 escrowId) external {
        Escrow storage e = escrows[escrowId];
        require(msg.sender == e.buyer, "Only buyer can release");
        require(e.status == Status.Funded, "Invalid status");
        e.status = Status.Released;
        paymentToken.transfer(e.seller, e.amount);
    }
}

This pattern is used by The Signal's marketplace for deal management, ensuring funds are held securely until milestones are completed and approved. Get your escrow contracts audited before deploying to production.

Frequently Asked Questions

What is the cheapest way to accept crypto payments?

Direct on-chain payment to a wallet or smart contract on an L2 like Base or Arbitrum costs only gas fees ($0.001-$0.02 per transaction). This is 100-1,000x cheaper than Stripe or Coinbase Commerce. The tradeoff is that you need to build your own payment detection, manage your own wallets, and handle fiat conversion separately.

Can I accept crypto payments without KYC?

If you accept payments directly on-chain (peer-to-peer), no intermediary KYC is required. However, if you operate as a business in regulated jurisdictions (US, EU, UK, Singapore), you may still have AML obligations regardless of the payment method. Using a licensed processor like Stripe or Circle handles compliance for you. Consult with legal specialists for jurisdiction-specific guidance.

How do I convert crypto payments to fiat?

Three approaches: (1) Use a gateway with built-in conversion (Stripe, Coinbase Commerce) β€” automatic, 1-1.5% fee; (2) Use Circle Mint to redeem USDC 1:1 for USD β€” free but requires $100K+ institutional account; (3) Use an exchange (Coinbase, Kraken) to sell received crypto β€” 0.1-0.5% fee but more manual. For treasury management, holding USDC and converting only as needed for expenses is increasingly common.

What is USDC and why is it preferred for crypto payments?

USDC is a dollar-backed stablecoin issued by Circle, maintaining a 1:1 peg with the US dollar. It is preferred for payments because: (1) no price volatility (unlike BTC/ETH), (2) available on 15+ blockchains, (3) backed by cash and short-term US Treasuries (independently attested monthly), (4) regulated under US state money transmission laws, (5) $52B+ market cap ensuring deep liquidity. USDC processes $45B+ in daily transfer volume.

How do recurring crypto payments work?

Crypto lacks credit card-style "pull payments." Recurring payments use one of four approaches: (1) ERC-20 token approval with scheduled contract calls via keeper networks, (2) payment streaming via Sablier or Superfluid (continuous per-second token flow), (3) smart account session keys via ERC-4337 account abstraction, (4) Stripe Billing with crypto onramp as payment method. Payment streaming is the most elegant crypto-native solution.

Is it safe to accept Bitcoin payments for my business?

Yes, but with caveats. Bitcoin payments are irreversible (no chargebacks), which is advantageous for merchants. However, Bitcoin's price volatility means the value of received payments can fluctuate 5-15% daily. To mitigate this, use a processor like Coinbase Commerce that instantly converts BTC to USD, or accept stablecoins (USDC) instead. Bitcoin's 10-minute block time also means slower payment confirmation compared to L2 stablecoins.

What blockchain should I accept payments on?

For most businesses in 2026, Base (Coinbase's L2) offers the best combination of low fees ($0.001-$0.01), fast confirmation (2 seconds), strong ecosystem, and Coinbase wallet integration. Solana is best for consumer-facing applications requiring sub-second finality. Ethereum L1 is suitable only for high-value payments ($1,000+) where security guarantees justify higher gas costs. Accept payments on 2-3 chains maximum to avoid operational complexity.

How do I handle refunds for crypto payments?

Unlike credit cards, crypto payments cannot be reversed by the processor. Refunds must be initiated by the merchant, sending tokens back to the customer's wallet address. Implement refund logic in your application: (1) capture the customer's wallet address at payment time, (2) store payment transaction hashes for audit trail, (3) process refunds as a new outgoing transaction via your wallet/contract. Factor gas costs into your refund policy β€” on L2s this is negligible ($0.01) but on Ethereum L1 it can be $5-15.

Conclusion

Crypto payment gateway integration in 2026 spans a spectrum from fully managed (Stripe) to fully decentralized (direct on-chain). The right choice depends on your customer base (crypto-native vs mainstream), payment volume (determines fee sensitivity), regulatory obligations (KYC/AML requirements), and technical resources (build vs buy).

For most businesses entering crypto payments, start with Stripe Crypto or Coinbase Commerce for speed to market. As volume grows past $50K/month, evaluate Circle USDC for B2B payments and direct on-chain integration for cost savings. For Web3-native applications, build on-chain payment contracts from the start, deploying on L2s like Base or Arbitrum for minimal fees.

The elimination of chargebacks alone β€” which cost US merchants $40B annually in 2025 β€” makes crypto payments economically compelling. Combined with instant settlement, global reach, and programmatic composability, crypto payments are transitioning from a niche option to a mainstream necessity.

Browse The Signal's directory to find payment integration specialists, compliance consultants, and development teams who can implement the right payment stack for your business.

Payment Verification (Backend)
On-Chain Payment Costs
Request Network: Decentralized Invoicing
Overview
Key Features
Integration
Request Network Pricing
Compliance & Regulatory Considerations
KYC/AML Requirements by Jurisdiction
Travel Rule Compliance
Tax Reporting
Choosing the Right Integration
Decision Matrix
Cost Comparison: $10,000 Monthly Payment Volume
Cost Comparison: $100,000 Monthly Payment Volume
Advanced Patterns
Subscription / Recurring Payments
Multi-Chain Payment Aggregation
Escrow and Milestone Payments
Frequently Asked Questions
What is the cheapest way to accept crypto payments?
Can I accept crypto payments without KYC?
How do I convert crypto payments to fiat?
What is USDC and why is it preferred for crypto payments?
How do recurring crypto payments work?
Is it safe to accept Bitcoin payments for my business?
What blockchain should I accept payments on?
How do I handle refunds for crypto payments?
Conclusion

Share Article

XLI