Supported destinations
The merchant’sxchain_destination_chain setting selects where the bridged USDC lands. Per-destination, AlgoVoi picks the best-available bridge protocol:
| Destination | Asset | Default protocol | Settlement time | Status |
|---|---|---|---|---|
| Algorand | USDCa (ASA 31566704) | Allbridge Core (CCTP doesn’t support Algorand) | ~5s direct / ~2-4 min bridged | ✅ Live |
| Solana | USDC (mint EPjFWdd5…) | Circle CCTP V2 Fast Transfer | ~50s end-to-end | ✅ Live |
| Stellar | USDC (canonical Circle issuer GA5ZSEJ…) | Allbridge Core → classic Stellar USDC via Soroban swap pool (CCTP V2 added when Circle ships mainnet) | ~60-120s | ✅ Live |
Bridge protocols
xChain v2 routes attempts through one of two bridge protocols, picked per-destination at attempt-creation time:| Circle CCTP V2 | Allbridge Core | |
|---|---|---|
| Asset model | Burn-and-mint native USDC (no wrapped variants) | Pool-based bridge |
| Slippage | Zero | ~0.3% combined source+destination pool fee |
| Source-side native fee | $0 (CCTP charges no native fee on depositForBurn) | ~0.0001-0.0003 ETH messenger fee |
| Latency (Solana destination) | ~30-60s Fast Transfer | ~90-120s |
| Counterparty | Circle (USDC issuer) directly attests every transfer | Allbridge’s validator network |
| Currently used for | Solana destination | Algorand destination, Stellar destination, fallback for any chain CCTP doesn’t cover |
How it works
Solana destination (Circle CCTP V2 — default)
Algorand destination (Allbridge Core)
Stellar destination (live via Allbridge; CCTP V2 coming)
Stellar supports both protocols:- Allbridge Core (live mainnet today) — uses Allbridge’s swap-and-bridge route, which invokes a Soroban swap pool that auto-converts Soroban-wrapped USDC into classic Stellar USDC at Circle’s canonical issuer (
GA5ZSEJ…) and credits the merchant’s Stellar address directly. Any Stellar wallet supports this asset — no Soroban-aware wallet required. - Circle CCTP V2 (testnet today, mainnet pending Circle) — will deliver native classic USDC via Circle’s
mint_and_forwardSoroban contract once Circle ships mainnet contracts.
GA5ZSEJ…) directly to the merchant’s G… address — any Stellar wallet works. CCTP V2 will be added once Circle ships Stellar mainnet contracts publicly. AlgoVoi’s xChain framework is protocol-agnostic per attempt (bridge_protocol on the attempts table), so adding the second protocol is a contract-address + verifier swap — the orchestration layer stays unchanged.
Supported bridge sources
The customer can bridge from any of these EVM chains:| Source chain | EVM chain ID | Token bridged | Algorand dest | Solana dest (CCTP) | Stellar dest (Allbridge) |
|---|---|---|---|---|---|
| Ethereum | 1 | USDC | ✅ | ✅ | ✅ |
| Base | 8453 | USDC | ✅ | ✅ | ✅ |
| Arbitrum | 42161 | USDC | ✅ | ✅ | ✅ |
| Optimism | 10 | USDC | ✅ | ✅ | ✅ |
| Polygon | 137 | USDC | ✅ | ✅ | ✅ |
| BNB Chain | 56 | USDC | ✅ | — (CCTP doesn’t deploy on BNB destination) | ✅ |
| Avalanche | 43114 | USDC | ✅ | ✅ | ✅ |
XCHAIN_BRIDGE_SLIPPAGE_BPS, default 50) absorbs the deduction so the verifier accepts the delivery.
For Algorand destinations Allbridge applies a ~0.3% combined source+destination pool fee, also absorbed by the slippage tolerance.
Transfer times
| Path | Typical end-to-end |
|---|---|
| Algorand direct (USDCa already in LogicSig address) | ~5 seconds |
| Algorand bridge path (Allbridge) | ~2-4 minutes |
| Solana via Circle CCTP V2 Fast Transfer | ~50-90 seconds |
| Solana via Allbridge (legacy fallback) | ~90-120 seconds |
| Stellar via Allbridge | ~60-120 seconds |
| Stellar via CCTP V2 (when Circle ships mainnet) | ~50-90 seconds |
eth_getTransactionReceipt and surfaces a “Try bridge again” button. No funds move; no spinning indefinitely.
First-time setup
Algorand: opt-in sponsoring
If the customer’s Algorand LogicSig address has never been used (no ALGO, not opted in to USDCa), AlgoVoi’s sponsor wallet tops it up with enough ALGO for the minimum balance and ASA opt-in (0.202 ALGO). The customer signs an EIP-712 message to authorise the opt-in transaction — still inside MetaMask, no Algorand wallet involved. Sponsoring requiresXCHAIN_ALGO_SPONSOR_MNEMONIC to be set in the gateway environment. If not configured, first-time opt-ins return a 503 and the customer must pre-fund their LogicSig address manually.
Solana: relayer creates ATAs on first delivery
Solana destinations don’t need any merchant-side setup. AlgoVoi’s CCTP relayer prepends acreate_idempotent_associated_token_account instruction to the receive_message transaction, so the merchant’s USDC ATA is created on the first delivery if it doesn’t already exist. Costs ~0.002 SOL of rent (paid by the relayer wallet, not the merchant).
For merchants who use Allbridge instead of CCTP (legacy fallback), Allbridge’s bridge program creates the ATA on first delivery from the bridge fee.
Stellar: Allbridge Soroban scanner (Horizon)
The Stellar verifier polls Horizon’s/accounts/{id}/operations for the merchant’s payout address, looking for an inbound invoke_host_function op (Soroban) or payment op (classic) on the Soroban USDC contract CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75. Each candidate transaction’s effects are checked for a contract_credited effect crediting the merchant address with at least the expected amount (after tolerated_min_delivered slippage). Stellar USDC has 7-decimal precision, so the floor is scaled microunits × 10 before comparison.
Will use the same auto-create-ATA pattern via Circle’s mint_and_forward Soroban contract. Documentation will be added when the build ships.
Merchant requirements
No action required for existing tenants on Algorand or Solana. xChain activates automatically for any tenant whosexchain_destination_chain is set (default: algorand, opt-in: solana).
For Solana xChain (default protocol = CCTP V2):
- The tenant needs a payout wallet on Solana mainnet (any standard Solana address — Phantom, Solflare, hardware wallet, exchange, etc.)
- Set
xchain_destination_chain = 'solana'on the tenant record - Set the tenant’s
chaintosolana_mainnetandreceiver_addressto the Solana payout pubkey
SolanaVerifier on the specific destination transaction Circle’s CCTP program produces, then linked back to the originating checkout via the xchain_bridge_attempts table.
For Stellar xChain:
- The tenant needs any Stellar wallet (the Allbridge route delivers classic USDC at Circle’s canonical issuer; CCTP V2 will deliver native USDC the same way once Circle ships mainnet)
xchain_destination_chain = 'stellar'receiver_address= StellarG…account orC…Soroban contract address- Account must already exist on Stellar (1 XLM minimum reserve) — Soroban tokens require no trustline
Idempotency and operations
Every xChain checkout creates a row incontrol_plane.xchain_bridge_attempts with the following lifecycle:
failed— source tx reverted, verifier rejected, or the reaper swept it after exceedingpending_bridgetimeoutabandoned— shopper closed the page before signing; the reaper sweepspending_signaturerows older than 30 minutes
bridge_protocol(allbridgeorcctp) — chosen at creation time, drives which calldata builder ran on the source side and which settle path runs on the destinationdestination_chain—algorand,solana, orstellar
cctp_relayer_loop) that polls Circle’s Iris attestation API and submits receive_message on Solana when the source tx finalises. The daemon auto-retries the settle path on transient failures, so manual operator intervention is rare.
Operators can inspect any attempt via the admin API:
Technical notes
Algorand LogicSig
The LogicSig contract is an AVM v11 program that:- Reconstructs the EIP-712 typed-data hash of the Algorand transaction ID
- Recovers the signer public key from the secp256k1 signature
- Derives the EVM address from the recovered key (
keccak256(pubkey)[12:]) - Asserts it equals the hardcoded owner address
Solana CCTP V2 destination
AlgoVoi runs a Solana relayer wallet that submitsreceive_message on Circle’s MessageTransmitterV2 program for each attested CCTP V2 message. The wallet is funded with ~0.05 SOL of runway and rotates per operator policy.
Per Circle’s Solana programs reference, mintRecipient in the burn message body is the destination USDC ATA (not the merchant’s wallet pubkey). AlgoVoi derives the ATA from (merchant_wallet, USDC_mint) and encodes it on the source side via cctp_service.encode_mint_recipient. The destination program then uses Anchor’s Account{TokenAccount} constraint to validate the USDC ATA at slot 15 of the receive_message instruction. Circle’s fee_recipient_token_account (slot 14) is hardcoded — its USDC ATA is owned by 4BPnUz… and pre-derived in cctp_solana_relayer._FEE_RECIPIENT_OWNER_BY_MINT.
The 20-account receive_message instruction uses Circle’s published Address Lookup Table Ff3yi1meWQQ19VPZMzGg6H8JQQeRudiV7QtVtyzJyoht to fit within Solana’s 1232-byte tx-size limit.
Solana destination tx discovery (Allbridge fallback)
For Solana attempts that route through Allbridge (legacy fallback), AlgoVoi discovers the destination transaction by scanning the recipient’s USDC ATA via Solana RPCgetSignaturesForAddress + getTransaction. The first signature with blockTime ≥ attempt.created_at − 60s and a recipient-ATA balance delta meeting the slippage floor is recorded as dest_tx_hash and fed to the standard SolanaVerifier. Allbridge’s public REST API doesn’t expose a working transfer-status endpoint, so direct destination polling is the only reliable signal.
Stellar destination
The Allbridge route is settled by the destination-side scanner alone — no relayer wallet is required because Allbridge’s own validator network releases USDC to the merchant’s Stellar address on its own. The verifier polls Horizon, matches the Soroban USDC transfer, then writes the ledger row and flips the link to paid. The CCTP V2 path will use Circle’sCctpForwarder contract via stellar-sdk Soroban calls — mintRecipient in the burn message is the CctpForwarder contract (NOT the merchant), and the real recipient is encoded in hookData as a UTF-8 strkey. USDC on Stellar uses 7 decimal precision (vs 6 on every other chain), so amounts are scaled × 10 end-to-end. AlgoVoi’s slippage tolerance helper applies the scaling automatically.
Limitations
- Algorand, Solana, and Stellar mainnet supported as of 2026-05. Stellar uses Allbridge Core today; CCTP V2 will be added once Circle ships Stellar mainnet contracts.
- USDC stablecoins only. Native ALGO / SOL / XLM payments via xChain are not supported.
- MetaMask (or any injected
window.ethereumprovider). WalletConnect is not supported on the xChain tab. Customers paying directly on the destination chain (without bridging) use the standard QR / Solana Pay / Stellar SEP-7 flow on the same checkout page. - CCTP V2 chain coverage. CCTP V2 is currently used for Solana destinations. Algorand and Stellar destinations route via Allbridge until/unless Circle deploys CCTP on those chains. The framework is protocol-agnostic per attempt, so flipping a destination to CCTP is a single-line config change once Circle ships.
See also
- Algorand — chain reference, memo binding, payout address requirements
- Solana — Solana Pay reference binding, SPL Token verification, payout requirements
- Stellar — chain reference, memo binding (xChain via Allbridge Core)
- Payment links — how checkout links are created and managed
- Circle CCTP V2 — protocol specification
- Allbridge Core — fallback bridge for non-CCTP destinations
Complementary facilitators in the x402 ecosystem
AlgoVoi is one of several x402 facilitators. The choice between them is mostly about chain coverage and protocol depth:- pay.sh (Solana Foundation) — canonical x402/MPP CLI client + MCP server for Solana with biometric local signing. The AlgoVoi catalog at
/.well-known/pay-skills.jsonis pay.sh-compatible; AlgoVoi is listed in the solana-foundation/pay-skills registry with two providers:algovoi/agent-trust-benchandalgovoi/compliance-gate. pay.sh users can pay AlgoVoi-protected resources end-to-end with no AlgoVoi-specific client. - Built on Stellar Facilitator (Stellar Foundation) — first-party Stellar x402 facilitator with sponsored fees via OpenZeppelin Relayer and ~5-second finality. Use this if you only need Stellar coverage and want the simplest hosted facilitator. AlgoVoi’s Stellar path is complementary: it adds the cross-chain bridge layer (EVM USDC → classic Stellar USDC) and the same x402 endpoint also covers Algorand, VOI, Hedera, Solana, Base, and Tempo from a single integration.
- Coinbase Hosted Facilitator — Base-only, fee-free USDC settlement, official Coinbase-managed.