Skip to main content

Do I need to write or deploy a contract?

No. Sonic is the SODAX hub, and the hub contracts (intents, money market, wallet factory and router) are already deployed; your integration is TypeScript against @sodax/sdk (or the React packages on top of it). You write no on-chain code and hold no admin key for any part of the flow.

What does “Sonic is the hub” mean for my integration?

Swap intents are registered on Sonic and their fills are recorded there, and the money market reserves and every user’s positions live on Sonic. Users on other networks reach the hub through the SODAX relayer. Users on Sonic do not need it: the transaction they sign is the hub transaction. Your code is the same either way; the SDK skips the relay step when srcChainKey is ChainKeys.SONIC_MAINNET.

How does a swap from Sonic actually settle?

Your user signs one EVM transaction on Sonic that creates an intent on the hub intents contract. There is no relay leg, so the solver is notified about that same transaction. A solver fills the intent on the destination network, and the output lands at the recipient address there. If an intent is never filled, it can be cancelled with one Sonic transaction and the funds recovered.

Which assets are supported on Sonic?

Two answers, and the difference matters. On Sonic itself, 63 assets are live: S and Sonic tokens such as wS, USDC, and SODA, plus the hub’s own tokens, such as the soda* vault tokens. 36 of these also work in the money market, native S included. But your users are not limited to the Sonic-side list. Every swap is cross-network, so from Sonic they can reach all 166 assets across every SODAX-supported network. Both lists grow as the backend config adds them; read them from sodax.config at runtime, or see the live tables in Networks & Assets.

Is there an approve step before swapping or supplying?

For ERC-20 tokens, yes, and the spender depends on the module. Swaps approve the SODAX intents contract on Sonic; money market supply and repay approve the user’s hub wallet. isAllowanceValid checks the right one and approve sets it, so an allowance for one module does not cover the other. Native S needs no approval in either.

Why does a user’s money market position not show up under their address?

Positions are held by the user’s hub wallet, not by their address directly. On Sonic that wallet is derived from the user’s Sonic address through the SODAX wallet router; acting from another network, the same address gets a different hub wallet. Read positions with sodax.moneyMarket.data.getUserReservesHumanized(ChainKeys.SONIC_MAINNET, userAddress) and the SDK resolves it. See Hub wallets.

Where do my partner fees go?

To a Sonic address, whichever network your users trade from. Fees accrue there as hub tokens, and sodax.partners.feeClaim lists, converts, and claims them from Sonic. See Monetize SDK.

Which RPC endpoint should I use?

Any Sonic mainnet RPC. The SODAX config uses Sonic’s public endpoint, https://rpc.soniclabs.com; Sonic documents that it limits requests per second and batch size. Pass your own through rpcUrl on EvmWalletProvider, or per chain in the @sodax/wallet-sdk-react config. The SDK’s hub provider also reads Sonic for every integration, whatever network your users are on, for example to resolve hub wallets; set its endpoint with new Sodax({ hub: { rpcUrl } }).

Is there a testnet?

Sonic has one; SODAX does not. SODAX is mainnet-only on every network, Sonic included.

What does it cost?

Using SODAX is free: no license, no integration fee, no SDK cost. Trades carry a fixed 0.1% base fee taken by the protocol; on top of that you set your own platform fee and keep it. Your users also pay Sonic’s network fees in S. See Monetize SDK.

How do I know if something went wrong?

SDK operations return Result<T> rather than throwing. Core swap and money market methods return typed error codes (for example 'TX_VERIFICATION_FAILED', 'EXECUTION_FAILED') you can branch on, with structured context attached.

Where are the audits?

Audits for the SODAX protocol are collected on the Audits page.

Can my AI coding assistant do the integration?

Largely, yes. Add the SODAX Builders MCP to Claude, Cursor, VS Code, Windsurf, or any MCP-capable client (https://builders.sodax.com/mcp) and it gets live access to the SODAX System: chains, tokens, swap quotes, money market rates, intent history, and auto-synced SDK docs. Use it to scope the integration against your own codebase first, then to write and verify the code. Setup per client is at builders.sodax.com.

I want a plan specific to my protocol. Who do I talk to?

Reach the SODAX team through any platform listed at linktr.ee/go.sodax.