Live source of truth: always call GET /meta/tokens
for the supported tokens/addresses in your current environment (Sandbox vs Production). The list below is a snapshot for reference.
Symbol label | Contract address | Notes |
---|---|---|
BASE_USDC | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 | Base mainnet |
BASE_USDC(Testnet) | 0x036CbD53842c5426634e7929541eC2318f3dCF7e | Sandbox only |
USDT | 0xdAC17F958D2ee523a2206206994597C13D831ec7 | Ethereum mainnet |
LISK_USDT | 0x05D032ac25d322df992303dCa074EE7392C117b9 | Lisk |
SCROLL_USDC | 0x06efdbff2a14a7c8e15944d1f4a48f9f95f663a4 | Scroll |
SCROLL_USDT | 0xF55BEC9cAfDBE8730F096AA55Dad6D22D44099df | Scroll |
ARBITRUM_WXM | 0xb6093B61544572ab42A0E43af08abAFD41Bf25a6 | Arbitrum |
Note: addresses can differ by environment. Always use /meta/tokens
in the target environment to get the canonical list (and decimals).
No Web3 instance found for token
) to a 400 with a clear message.
GET /quote
to preview pricing without creating an order.
Parameters
amount_fiat
(KES): positive numbertoken
: USDC | USDT | WXM
order_type
: OnRamp|OffRamp
or 0|1
(defaults to OnRamp
)rate
: KES per token after markuptoken_amount
: tokens the user would receive (OnRamp) or must send (OffRamp)fiat_paid
: echo of inputsymbol
, decimals
: metadata400 bad_order_type
→ order_type must be 0|1 or OnRamp|OffRamp
400 unknown_token
/ token_env_mismatch
429
rate limited; respect Retry-After
502
upstream price provider errortoken_amount
and amount_sent
are human units (e.g., 12.34
USDC).POST /orders/create
responds with:
insufficient_balance
similarly (you’ll get required
vs current
in data
)./meta/tokens
to get supported tokens, addresses, and decimals (for your environment)./quote
to preview rate
and token_amount
before creating an order.POST /orders/create
and track via webhooks or GET /orders/tx/{tx_hash}
.