GET /quote or POST /advanced/routes with the user’s position token as fromToken and the desired output token as toToken.
Withdrawals are available for protocols that support the Withdraw action. Check the Supported Protocols reference for per-protocol capabilities.
How Withdrawals Work
| Parameter | Role in a withdrawal |
|---|---|
fromToken | Protocol position token the user holds (vault token, aToken, LST, etc.) |
toToken | Token the user wants to receive |
fromChain / toChain | Same chain for local withdrawals; different chains for cross-chain |
Same-Chain Withdrawal
Withdraw from a protocol position into an underlying token on the same chain.Cross-Chain Withdrawal
Withdraw on one chain and receive the output token on another chain in a single flow.Cross-chain withdrawals require status polling via
GET /status after the source-chain transaction confirms. See Cross-Chain Composer Patterns.Execution Flow
The execution steps are identical to Composer deposits.- Request a quote via
/quoteor/advanced/routes - Set token allowance if
approvalAddressis present andfromTokenis an ERC-20 - Submit the
transactionRequest - Poll
/statusfor cross-chain transfers
API Integration
Full walkthrough of the quote, allowance, execute, and status polling flow.
Protocols That Support Withdraw
The following protocols support withdrawals via Composer. Deposit-only protocols (Ethena, Kinetiq, Maple, Royco, USDai) must be withdrawn through their own interfaces.| Protocol | Type | Withdraw via Composer |
|---|---|---|
| Aave V3 | Lending | Yes |
| Avant | Yield | Yes |
| Avon | Lending | Yes |
| Cap | Yield | Yes |
| Euler | Lending | Yes |
| Felix Vanilla | Vaults | Yes |
| Fluid | Lending | Yes |
| HyperLend | Lending | Yes |
| HypurrFi | Lending | Yes |
| Kelp | Liquid Staking | Yes |
| Morpho V1/V2 | Lending / Vaults | Yes |
| Neutrl | Yield | Yes |
| Neverland | Vaults | Yes |
| Spark | Lending | Yes |
| Tokemak | Yield | Yes |
Supported Protocols
Full protocol reference including deposit-only vs deposit + withdraw support.
Error Handling
Common issues specific to withdrawals:| Issue | Resolution |
|---|---|
| No route returned | Confirm the protocol supports withdraw via Composer and the user holds the position token |
| Insufficient balance | Verify the user’s fromToken balance matches the requested fromAmount |
| Allowance error | Set approval for the position token to the approvalAddress returned in the quote |
| Cross-chain partial failure | Bridged tokens arrive on the destination chain but the final swap may need manual completion |
Next Steps
Cross-Chain Patterns
Bridge-inclusive execution patterns and status handling
Deposit Recipes
End-to-end deposit recipes for multiple protocols
API Parameters
How Composer routes are activated and returned

