# Swaps

Trade and bridge tokens with no fees from Splits

A swap trades one token for another, including across networks: moving ETH on Base to ETH on Optimism is a swap. Splits charges no fees on swaps. Each quote is routed across multiple swap providers (currently 0x, KyberSwap, Velora, Relay, and Fabric; Relay handles cross-network swaps) and the best result is used. The exception is [private transfers](/docs/transactions/sends#private-transfers), which always route through a dedicated provider.

Start a swap from the Dashboard or an account page. Any ERC-20 can be swapped: if a token isn't listed, paste its address with the right network selected.

## Just-in-time swaps

[Sends](/docs/transactions/sends) let you pay in a token the account doesn't hold. Specify the token the recipient receives, then pick which held token to sell; the swap and the send execute as a single transaction, and the recipient receives the exact amount specified.

## Slippage

Every swap has a slippage tolerance you can edit before submitting. The default depends on the pair: 0.1% between stablecoins, 0.5% between major tokens, 1.5% otherwise.

## Quotes and multisigs

Swap quotes are signed by the provider and expire quickly, often before an account with a threshold above 1 collects its signatures. An expired quote is rejected onchain, and the transaction has to be recreated. Ways to avoid this:

1. Swap from a 1-of-n [operating account](/docs/accounts#operating-accounts), funded from higher-threshold accounts.
2. If you always swap into the same output token, use an [automation account](/docs/accounts#automation-accounts) instead and just transfer funds in.
3. Use the [browser extension](/docs/introduction/extension) with a swap app that tolerates slow signing (e.g. CoW Swap).

## Programmatic access

Via the [Splits CLI / MCP](/docs/introduction/agents):

* `splits transactions create swap --account 0x... --chain-id 8453 --sell-token 0x... --buy-token 0x... --amount 0.5`: propose a swap that sells an exact amount; Splits fetches the quote and builds the calls (**Write** scope)
* `--destination-chain-id <id>`: receive the bought token on another network, with `--buy-token` as its address there
* `--slippage-bps <n>`: override the pair's default slippage; `--recipient <address>` adds a transfer of the output

A just-in-time swap inside a send is `splits transactions create transfer --source-token`; see [Sends](/docs/transactions/sends#programmatic-access). The [quote expiry](#quotes-and-multisigs) applies to proposals too: sign a multisig swap promptly.
