Turn any token into a vault position with one click. Users don’t need to hold the vault’s underlying asset—Biconomy handles the swap and deposit atomically.
The Problem It Solves
Without Biconomy, depositing into a vault requires:
Swap your token to the vault’s asset (signature 1)
Approve the vault contract (signature 2)
Deposit into the vault (signature 3)
If cross-chain: bridge first (add 2 more signatures)
With Biconomy: One signature. Automatic routing to the best path.
How It Works
User Selects Destination
User chooses a vault to deposit into (AAVE, Morpho, Yearn, etc.)
API Finds Optimal Route
Biconomy calculates the best path: swap → bridge (if needed) → deposit
User Signs Once
Single signature approves the entire flow
Lossless Execution
Direct vault deposit operations—no slippage on the final step
Quick Example
Deposit USDC on Base into an AAVE vault:
const quote = await fetch ( 'https://api.biconomy.io/v1/quote' , {
method: 'POST' ,
headers: { 'Content-Type' : 'application/json' },
body: JSON . stringify ({
mode: 'eoa' ,
ownerAddress: userAddress ,
composeFlows: [{
type: '/instructions/intent-vault' ,
data: {
srcChainId: 8453 , // Base
srcToken: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913' , // USDC
dstChainId: 8453 , // Same chain
dstVault: '0x4e65fE4DbA92790696d040ac24Aa414708F5c0AB' , // AAVE vault
amount: '1000000000' , // 1,000 USDC
slippage: 0.01 // 1%
}
}]
})
}). then ( r => r . json ());
// Sign the payload
const signature = await wallet . signTypedData ( quote . typedDataToSign );
// Execute
const result = await fetch ( 'https://api.biconomy.io/v1/execute' , {
method: 'POST' ,
headers: { 'Content-Type' : 'application/json' },
body: JSON . stringify ({
signedQuote: quote ,
signature
})
}). then ( r => r . json ());
console . log ( 'Track at:' , `https://meescan.biconomy.io/details/ ${ result . supertxHash } ` );
Cross-Chain Deposit
Deposit from one chain into a vault on another:
const quote = await fetch ( 'https://api.biconomy.io/v1/quote' , {
method: 'POST' ,
headers: { 'Content-Type' : 'application/json' },
body: JSON . stringify ({
mode: 'eoa' ,
ownerAddress: userAddress ,
composeFlows: [{
type: '/instructions/intent-vault' ,
data: {
srcChainId: 1 , // Ethereum
srcToken: USDC_ETH , // USDC on Ethereum
dstChainId: 8453 , // Base
dstVault: MORPHO_VAULT , // Morpho vault on Base
amount: '10000000000' , // 10,000 USDC
slippage: 0.01 ,
allowBridgeProviders: 'across' // Prefer Across for speed
}
}]
})
}). then ( r => r . json ());
Biconomy automatically:
Bridges USDC from Ethereum to Base
Deposits directly into the Morpho vault
All in a single user signature
Understanding the Response
{
"outputAmount" : "990000000000000000" ,
"minOutputAmount" : "980100000000000000" ,
"route" : {
"type" : "token-to-vault" ,
"summary" : "lifi[sushiswap] => vaultsfyi[aave-v3]" ,
"steps" : [
{
"type" : "swap" ,
"provider" : "lifi" ,
"tool" : "sushiswap" ,
"srcToken" : { "symbol" : "USDC" },
"dstToken" : { "symbol" : "WETH" }
},
{
"type" : "vault-deposit" ,
"provider" : "vaultsfyi" ,
"protocol" : "aave-v3" ,
"vaultName" : "AAVE WETH"
}
],
"estimatedTime" : 30
}
}
Field Description route.typeAlways token-to-vault for this flow outputAmountExpected vault shares to receive minOutputAmountMinimum after slippage protection route.stepsEach operation in sequence
Supported Protocols
Lending Markets AAVE, Compound, Morpho, Venus, Spark, Radiant
Yield Vaults Yearn, Beefy, Convex, Sommelier, Enzyme
Liquid Staking Lido, Rocket Pool, Frax, Stakewise
DEX LP Uniswap, Curve, Balancer, Velodrome, Aerodrome
Fee Structure
Scenario Fee (BPS) Same-chain, no swap needed 0 Same-chain with swap 10 Cross-chain deposit 15
When the source token matches the vault’s underlying asset, no swap is needed—resulting in zero fees for the vault operation.
Next Steps