HASH PAY Docs
Docs/Reference/Chains & tokens
API reference

Chains & tokens

HashPay settles USDC and USDT across eight chains. The network and token ids below are the literal strings used everywhere in the API.

Supported networks

NetworkidFamilyTokensDecimals
EthereumethereumEVMUSDC · USDT6
BasebaseEVMUSDC · USDT6
ArbitrumarbitrumEVMUSDC · USDT6
PolygonpolygonEVMUSDC · USDT6
AvalancheavalancheEVMUSDC · USDT6
BNB ChainbscEVMUSDC · USDT18
SolanasolanaSolanaUSDC · USDT6
TrontronTronUSDT6

Token ids are usdc and usdt. Note Tron carries USDT only.

Token contracts

The exact contract (EVM/Tron) or SPL mint (Solana) HashPay watches for each pair. These are verified on-chain identities — handy if you reconcile against your own indexer.

NetworkTokenContract / mintDec.
EthereumUSDC0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB486
EthereumUSDT0xdAC17F958D2ee523a2206206994597C13D831ec76
BaseUSDC0x833589fCD6eDb6E08f4c7C32D4f71b54bdA029136
BaseUSDT0xfde4C96c8593536E31F229EA8f37b2ADa2699bb26
ArbitrumUSDC0xaf88d065e77c8cC2239327C5EDb3A432268e58316
ArbitrumUSDT0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb96
PolygonUSDC0x3c499c542cEF5E3811e1192ce70d8cC03d5c33596
PolygonUSDT0xc2132D05D31c914a87C6611C10748AEb04B58e8F6
AvalancheUSDC0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E6
AvalancheUSDT0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c76
BNB ChainUSDC0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d18
BNB ChainUSDT0x55d398326f99059fF775485246999027B319795518
SolanaUSDCEPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v6
SolanaUSDTEs9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB6
TronUSDTTR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t6

Amounts & decimals

Stablecoins are 6 decimals everywhere except BNB Chain, where they're 18. So "29.00" is 29000000 base units on Base but 29000000000000000000 on BNB Chain. Always pair amountBaseUnits with decimals; never hard-code 1e6. HashPay does the conversion, so the buyer always pays the correct USD figure.

Confirmation depths

A payment becomes CONFIRMED (and fires payment.confirmed) once its transfer is buried under this many confirmations — tuned per chain to its finality:

NetworkConfirmationsWhy
Avalanche1Sub-second finality.
Base · Arbitrum5L2 soft confirmations.
Ethereum12Conventional safe depth.
BNB Chain15Faster blocks, deeper bury.
Tron19≈ irreversibility threshold.
Polygon30Historically reorg-prone.
Solana32Finalized commitment.

These are the defaults; an operator can override any chain with a <NETWORK>_CONFIRMATIONS environment variable (e.g. POLYGON_CONFIRMATIONS=50).

Address formats

When you add a receiving wallet, HashPay validates the address for its network:

FamilyLooks like
EVM (6 chains)0x + 40 hex characters
TronT + base58
Solanabase58 (32–44 chars)

EVM addresses are matched case-insensitively, so checksum casing never causes a miss. One address per chain handles unlimited concurrent payments — HashPay matches each by its exact amount.