StableOps

Introduction

StableOps is a stablecoin payment event platform built for developers.

StableOps turns on-chain stablecoin transfers into the same primitives you already know from card processors: an order, a webhook, a deterministic state machine. You bring the addresses; we handle the chain scanning, confirmation tracking, reorg checks, idempotency, retries and signed webhook delivery.

What you get

  • Payment Orders — request an exact amount on one or more chains and get a single deposit address back. See Concepts → Payment Orders.
  • Confirmation tracking — every order moves through created → detected → confirmed → finalized, with reorg checks against the receipt block hash. See Concepts → Confirmations.
  • Signed webhooks — every delivery carries X-Product-Signature, retries on failure, and supports replay from the dashboard. See Concepts → Webhooks.
  • BYO addresses — import your own treasury or custody addresses; we never touch private keys. See Concepts → BYO Addresses.
  • Agent toolkit — a scoped MCP server that wraps the SDK with policy, rate limits, and a human approval queue. See Agents → MCP Server.

Supported chains and assets

StableOps scans USDC / USDT transfers on the chains below and matches them by their official contract address — any (chain, asset) combination outside these tables is rejected when you create a payment order. Every mainnet has a matching testnet for the Playground and integration testing. Copy a contract address with the button, or open it on a block explorer with the ↗ icon.

Mainnet

AssetChainContract address
USDCEthereum0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
USDTEthereum0xdac17f958d2ee523a2206206994597c13d831ec7
USDCBase0x833589fcd6edb6e08f4c7c32d4f71b54bda02913
USDCArbitrum0xaf88d065e77c8cc2239327c5edb3a432268e5831
USDCPolygon0x3c499c542cef5e3811e1192ce70d8cc03d5c3359
USDTTRONTR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t
USDCSolanaEPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
USDTSolanaEs9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB

Testnet

AssetChainContract address
USDCEthereum Sepolia0x1c7d4b196cb0c7b01d743fbc6116a902379c7238
USDCBase Sepolia0x036cbd53842c5426634e7929541ec2318f3dcf7e
USDCArbitrum Sepolia0x75faf114eafb1bdbe2f0316df893fd58ce46aa4d
USDCPolygon Amoy0x41e94eb019c0762f9bfcf9fb1e58725bfb0e7582
USDCSolana Devnet4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU
USDTTRON NileTXYZopYRdj2D9XRtbG411XZZ3kM5VkAeBf

How a payment moves through StableOps

┌──────────┐   create     ┌──────────┐   transfer    ┌──────────┐
│ Your app │ ───────────▶ │ StableOps│ ◀──────────── │  Chain   │
└──────────┘              └─────┬────┘               └──────────┘

                                │  signed webhook (detected / confirmed / finalized)

                          ┌──────────┐
                          │ Your app │
                          └──────────┘
  1. You call paymentOrders.create with an amount, settlement asset, and the chain/asset pairs you accept.
  2. StableOps allocates a deposit address from the pool you imported (or from the shared pool we manage) and returns paymentInstructions.
  3. The chain scanner watches that address; the first matching transfer promotes the order to detected and dispatches payment.detected.
  4. As block confirmations accumulate, the order advances through confirmed and finalized. Reorgs that invalidate the receipt revert the order.
  5. Your endpoint receives a signed webhook at every state change. Verify the signature, update your ledger, and return 200.

Where to go next

On this page