Swaps are in early access. Contact us to enable it for your organization.
What are Swaps
Swaps connects Turnkey wallets to DEX aggregators through a unified interface. 0x is supported today; additional providers are on the roadmap. Callers submit signed intents describing what they want to swap while Turnkey handles quote fetching, transaction construction, ERC-20 approvals via Permit2, and broadcast. Callers never see provider quote payloads, transaction calldata, or approval data. Swaps enablement is a one-time setup step per parent organization. After that, each swap is a signed intent and a poll.How it works
- Enable swaps once on your parent organization via
upsert_swap_config, setting your integrator fee (bps) and fee-receiver wallet. - Optionally call
get_swap_quotefor an indicative quote to display to users. Quotes reflect your active fee configuration. - Submit
execute_swapfrom the sub-organization whose wallet is swapping. Turnkey handles quote refresh, Permit2 approvals, and transaction construction internally. For cross-chain routes, the origin-chain transaction is broadcast here. - Poll swap status until settlement. Same-chain swaps complete on origin inclusion; cross-chain swaps have a longer lifecycle that continues until the destination-chain leg settles or funds are recovered. See Track swap status.
Supported providers, chains, and routes
Route support in V1:
- Same-chain EVM ↔ EVM — e.g., USDC → USDT on Base.
- Cross-chain EVM ↔ EVM — e.g., Arbitrum USDC → Base USDC, where supported by the provider.
Fees
Swap fees are integrator fees: a percentage of the swap amount, expressed in basis points, applied to quote amounts and collected onchain during execution.- Your integrator fee: set via (
feeBps), along with the payout wallet (feeReceiverWalletAddress, a wallet address you control). Fees accrue onchain to that wallet. - Cap:
feeBpsis bounded by a Turnkey-controlled maximum threshold. Requests above the cap are rejected.
API surface
Swaps add three activities:
and two queries:
Swap requests are stamped and submitted like any other Turnkey request. See Stamps and Submissions. There are no Swap-specific SDK methods during the early access period, so the examples on these pages use cURL and the generic
request method of @turnkey/http’s TurnkeyClient.Trust boundary
Swap intentionally does not expose executable provider data to API callers. The user-signedExecuteSwapIntent is the source of truth for inputToken, outputToken, inputAmount, walletAccount, sponsor, and slippage. Fee configuration, provider quote payloads, transaction calldata, Permit2 signatures, and approval payloads are all handled server-side and never accepted from callers.
Policy engines evaluate the derived on-chain transaction, not the swap intent — so existing wallet policies apply to the resulting transfer behavior.
Explore
Enable swaps
One-time parent-org setup with fee configuration.
Get a quote
Indicative fee-aware quote for display.
Execute a swap
One activity, optionally gas-sponsored.
Track swap status
Same-chain and cross-chain lifecycle.