Skip to main content
Earn lets wallets in your organization deposit into DeFi yield vaults, track their positions, and withdraw, all through Turnkey activities with the usual audit trail and policy controls. You can take your own performance fee on the yield your users earn, paid on-chain to a wallet you control.
Earn is in private beta. Contact us to enable it for your organization.

What is Earn

Earn connects Turnkey wallets to ERC-4626 yield vaults. Morpho vaults are supported today; Aave is coming. Users don’t deposit into the raw vault directly. Instead, they deposit into a fee wrapper: a vault contract we deploy once per vault for your organization. The wrapper forwards deposits to the underlying vault and takes the performance fees out of its share price, so users never submit separate fee transactions. Deploying a wrapper is a one-time setup step per vault. After that, deposits, withdrawals, and position queries are each a single API call.

How it works

  1. Query earn_vaults for the vaults available for an asset, with live TVL and APY.
  2. Run earn_deploy_wrapper once per vault to enable it for your organization and set your fee. Turnkey pays the deployment gas.
  3. Call earn_deposit to move assets from a user’s wallet into the vault.
  4. Poll the matching status endpoint until the transaction confirms. Deposits, withdrawals, and deployments all confirm asynchronously.
  5. Query earn_positions for a wallet’s current value and lifetime totals.
  6. Call earn_withdraw for a partial amount, the yield only, or the full position.

Supported protocols and chains

Earn is EVM-only in V1. The vault catalog only includes vaults with at least $100k TVL.

Fees

Earn fees are performance fees: a percentage of the yield a position earns. Principal is never charged. Two fees apply, both in basis points of gross yield:
  • Your fee: you set it per wrapper at deploy time (clientFeeBps), along with the payout wallet (clientFeeWallet, a wallet account owned by your organization). Payouts accrue on-chain to that wallet.
  • Turnkey’s fee: resolved automatically when you deploy. The default is 10% of yield (1,000 bps); enterprise customers can have custom rates.
The combined fee is capped at 50% of yield (5,000 bps), and deployments above the cap are rejected. Both fees come out of the wrapper’s share price and are split on-chain by a payment splitter contract deployed alongside the wrapper. The net APY your users earn is grossApy × (1 - totalFeeBps / 10000). The earn_enabled_vaults endpoint returns gross APY, net APY, and both fee rates for every wrapper you’ve deployed.
The fee configuration is fixed per wrapper. To change your fee, deploy a new wrapper for the same vault. Existing positions in the old wrapper remain fully withdrawable, and new deposits go to the new wrapper. See Deploy a vault wrapper.

API surface

Earn adds three activities: and six queries:
Earn requests are stamped and submitted like any other Turnkey request. See Stamps and Submissions. There are no Earn-specific SDK methods during the beta, so the examples on these pages use cURL and the generic request method of @turnkey/http’s TurnkeyClient.

Explore

Browse the vault catalog

Discover vaults and check your enabled wrappers.

Deploy a vault wrapper

Enable a vault and set your fee.

Deposit into a vault

One transaction, optionally gas-sponsored.

Withdraw from a vault

Partial, yield-only, or full exit.

Track positions

Current value, lifetime totals, and yield.

End-to-end example

Deploy, deposit, and withdraw USDC on Base.