IBExWalletAPI
Blockchain Operations

Morpho Vaults

Deposit into Morpho ERC-4626 vaults or withdraw from them via a Safe wallet.

Deposit into Morpho ERC-4626 vaults to earn yield, or withdraw assets back to your Safe wallet.

Uses the two-step POST /v1.2/safes/operations → PUT /v1.2/safes/operations flow.

1. Discover available Morpho vaults

Retrieve active Morpho vaults for the target chain:

GET /v1.2/safes/vaults?provider=MORPHO
Header: X-Blockchain-Id: 8453

Each vault object contains poolAddress (the ERC-4626 vault address), assetTicker, name, apy, tvl, isDefault, and metadata with the curator name.

Unlike Aave (one pool per chain per asset), Morpho has multiple vaults per asset with different curators and strategies (e.g. "Steakhouse USDC", "Gauntlet WETH").

2. Deposit (supply)

Deposit tokens into a Morpho vault.

{
  "type": "MORPHO_SUPPLY",
  "amount": "1000",
  "assetTicker": "USDC",
  "vaultAddress": "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
}
FieldTypeRequiredDescription
typestringYesMust be "MORPHO_SUPPLY"
amountstringYesAmount in human-readable units (e.g. "1000" for 1000 USDC)
assetTickerstringOne of assetTicker or tokenAddressToken ticker
tokenAddressstringOne of assetTicker or tokenAddressERC-20 token contract address
decimalsnumberNoRequired when using tokenAddress
vaultAddressstringNoERC-4626 vault address; auto-resolved via BCReader if omitted

On-chain: the API builds an approve(vault, amount) + ERC-4626 deposit(amount, safe) MultiSend.

3. Withdraw

Redeem all vault shares to get back all deposited assets plus yield:

{
  "type": "MORPHO_WITHDRAW",
  "shares": "1000000000000000000",
  "vaultAddress": "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
}

Partial withdrawal (by amount)

Withdraw a specific amount of the underlying asset:

{
  "type": "MORPHO_WITHDRAW",
  "amount": "500",
  "assetTicker": "USDC",
  "vaultAddress": "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
}
FieldTypeRequiredDescription
typestringYesMust be "MORPHO_WITHDRAW"
sharesstringOne of shares or amountVault shares to redeem (raw bigint string)
amountstringOne of shares or amountAsset amount in human-readable units
assetTickerstringNoRequired for amount-based withdraw
tokenAddressstringNoERC-20 address (alternative to assetTicker)
decimalsnumberNoRequired when using tokenAddress
vaultAddressstringNoVault address; auto-resolved if omitted

4. Check positions

After depositing, check your Morpho positions:

GET /v1.2/users/me/pools
Header: X-Blockchain-Id: 8453

The response pools array contains a MORPHO provider entry. Each item includes:

FieldDescription
vaultAddressERC-4626 vault contract address
vaultNameHuman-readable vault name
assetTickerUnderlying asset (e.g. USDC)
sharesUser's vault share balance (raw bigint)
assetsValueShare value converted to underlying asset amount
apyCurrent vault APY
method"MORPHO_ERC4626" — computed via balanceOf + convertToAssets

Full example

{
  "safeAddress": "0xSAFE…",
  "chainId": 8453,
  "operations": [
    {
      "type": "MORPHO_SUPPLY",
      "amount": "1000",
      "assetTicker": "USDC",
      "vaultAddress": "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
    }
  ]
}

On this page