Contracts
The Rave SettlementRouter address on each chain, what to approve, and what to call.
Every Rave trade settles through the Rave SettlementRouter, one contract per chain. You never need to hard-code its address: the API returns it on every trade.
| What you need | Where it comes from |
|---|---|
Address to approve (token_in spender) | GET /v2/limits, assets[].sides.<buy|sell>.allowance_target |
| Address to call | Firm quote, execution.transaction.to |
| Chain to call it on | Firm quote, execution.transaction.chain_id |
Always use the addresses from the APIRead the spender and the target from the API for every trade, check
toandchain_idtogether before signing, and never edit the transaction data. Never approve or send to any other address on Rave's behalf.
SettlementRouter addresses
The table below is for allowlists and for checking execution.transaction.to. The same address is used on several chains, so the address alone does not identify the chain.
| Chain | Chain ID | SettlementRouter |
|---|---|---|
| BNB Smart Chain | 56 | 0xa53B869C883B5036dDf8D7a12B7618e4612C503e |
| Ethereum | 1 | 0xBfeBc5eCAC789643A61fAdf15048A37dC9612dcF |
| Base | 8453 | 0xa53B869C883B5036dDf8D7a12B7618e4612C503e |
| Robinhood Chain | 4663 | 0xa53B869C883B5036dDf8D7a12B7618e4612C503e |
| Pharos | 1672 | 0xa53B869C883B5036dDf8D7a12B7618e4612C503e |
These addresses are stable. New chains are added as they go live; /v2/limits and the firm quote always carry the current one.
Quote tokens
Stablecoin quote tokens Rave prices against today, with their decimals. Chains without a row (for example Pharos 1672) have no quote token published yet. decimals belongs to the token contract on each chain, not to the ticker: USDC has 18 decimals on BNB Smart Chain and 6 on Ethereum and Base.
| Chain ID | Token | Address | Decimals |
|---|---|---|---|
56 | USDT | 0x55d398326f99059fF775485246999027B3197955 | 18 |
56 | USDC | 0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d | 18 |
1 | USDC | 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 | 6 |
1 | USDT | 0xdAC17F958D2ee523a2206206994597C13D831ec7 | 6 |
8453 | USDC | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 | 6 |
4663 | USDG | 0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168 | 6 |
The set is live, so read chains[].quote_tokens[] from /v2/assets and convert with the decimals it returns for the exact token address you quote:
curl -s "$RAVE_API/v2/assets" -H "Authorization: Bearer ***" \
| jq '[.[].chains[] | .chain_id as $c | .quote_tokens[] | {chain_id: $c, symbol, address, decimals}] | unique'Reverts you may see
A settlement that fails on chain has no API error body. The one revert integrators most often need to decode is FillOutOfSignedWindow(uint256,uint256,uint16,uint16), selector 0x42aa024f: less than the quoted input arrived on an exact side. See Errors.
Updated 25 days ago