API reference

Simple payments API

Base URL https://api.chainsplit.io. No version prefix. No API key for the payment flow. HTTPS only.

Identity

Harden the callback with an unguessable nonce that you store server-side and verify on receipt.

Create payment address

GET /{ticker}/create/

QueryRequiredNotes
callbackyesURL-encoded HTTPS endpoint. Keep it unique.
addressyesYour receiving wallet for this ticker.
callback_idnoMerchant reference, echoed back.
pendingno1 to receive mempool webhooks.
confirmationsnoOverride default confirmations.
postno1 sends webhook as POST.
jsonno1 sends JSON body (implies POST).
convertno1 includes fiat conversions.
curl -G https://api.chainsplit.io/erc20/usdt/create/ \
  --data-urlencode "address=0xYourUsdtWallet" \
  --data-urlencode "callback=https://merchant.tld/webhook?callback_id=ord_1842&nonce=u9f3" \
  --data-urlencode "pending=1" \
  --data-urlencode "json=1"
{
  "status": "success",
  "ticker": "erc20/usdt",
  "address_in": "0xdeposit...",
  "address_out": "0xYourUsdtWallet",
  "callback_url": "https://merchant.tld/webhook?callback_id=ord_1842&nonce=u9f3",
  "minimum_transaction_coin": "10.000000",
  "fee_percent": "0.750",
  "callback_id": "ord_1842"
}

Tickers

v1 is EVM-only. Same 0x address, same nonce sweeper, different chainId and RPC. Bitcoin, Solana and Tron are not in this API yet.

AssetTickerChain ID
Ethereumeth1
USDT on Ethereumerc20/usdt1
USDC on Ethereumerc20/usdc1
BNB Smart Chainbsc56
USDT on BNBbep20/usdt56
USDC on BNBbep20/usdc56
Polygonpolygon137
USDT on Polygonpolygon/usdt137
USDC on Polygonpolygon/usdc137

Token endpoints nest the family: /erc20/usdt/create/, /bep20/usdt/create/, /polygon/usdt/create/.

Webhooks

Acknowledge with HTTP 200 and body *ok*. Anything else is retried with exponential backoff.

Verify x-cs-signature: hex HMAC-SHA256 of the raw query string (GET) or raw body (POST), keyed with the nonce you embedded in the callback. Also reject unknown nonces.

Common fields:

FieldMeaning
uuidChainSplit payment id
callback_idYour reference
pending1 mempool, 0 confirmed
address_in / address_outDeposit / destination
txid_in / txid_outCustomer tx / sweep tx
value_coinAmount received at address_in
fee_percentTier applied on this sweep
fee_coinService fee in coin
value_forwarded_coinNet sent to you
confirmationsObserved confirmations

Other endpoints

Fee application

There is no billing dashboard. On each confirmed sweep we:

  1. Look up 30-day confirmed USD volume for (chain, address_out).
  2. Select the tier (see Fees).
  3. Subtract service fee and network fee from value_coin.
  4. Broadcast the forward tx and include the breakdown in the confirmed webhook.

If the remainder would fall below dust, the payment is not sweepable. Surface minima before checkout.