Skip to main content

Earn Vaults

Integrate yield into your app or deploy your own vault strategy on Kamino.

$600M
KAMINO TVL
50+
ACTIVE VAULTS
18+
AUDITS

How It Works

Seamless integration flow designed for composability.

Deposit flow: User supplies tokens, and the vault allocates assets across lending markets according to its strategy
INTEGRATION ARCHITECTURE

Earn Integration Model

Earn integrations involve four core areas.

Vault Metadata & Markets

Discover vaults and retrieve their configuration, allocation strategy, performance metrics, and active incentive programs.

  • Discover all available vaults via /kvaults/vaults
  • APY, TVL, allocation breakdown
  • Reserve allocation weights and caps
  • Vault token metadata (mint, decimals, symbols)
  • Active farm incentives and bonus yield
INTEGRATION GUIDE

Implementing Earn Flows

Practical SDK and API examples for integrating core Earn flows.

Vault Operations

Deposits and Withdrawals

Deposits and withdrawals to Earn vaults are available via the TypeScript SDK or the REST API. Both interfaces provide access to vault, user, and lending market data required for integration.

import { createSolanaRpc, address, generateKeyPairSigner } from '@solana/kit';
import { KaminoVault } from '@kamino-finance/klend-sdk';
import { Decimal } from 'decimal.js';

const signer = await generateKeyPairSigner();

const vault = new KaminoVault(
  createSolanaRpc('https://api.mainnet-beta.solana.com'),
  address('HDsayqAsDWy3QvANGqh2yNraqcD8Fnjgh73Mhb3WRS5E')
);

const depositIxs = await vault.depositIxs(
  signer,
  new Decimal(100.0)
);
  • Both: Access vault metadata including allocations, fee configuration (management, performance, withdrawal), and strategy parameters.
  • SDK: Track reward APY across base lending yield, delegated farm incentives, and reserve farm incentives.
  • API: Access real-time reserve token prices via the Kamino oracle.
  • API: Retrieve current and historical reserve metrics: supplyApy, borrowApy, totalSupply, totalBorrow, utilizationRate.
  • Both: Track user transactions, current positions, and position history across multiple vaults
Explore Code Examples
Farm & Rewards

Automatic Farm Staking & Reward Claims

A vault may include a reward farm, allowing depositors to earn extra reward tokens in addition to the base lending yield. Rewards may be distributed by the vault or by the underlying lending markets it allocates to.

Delegated Farm Incentives

Additional reward tokens distributed at the vault level, layered on top of lending yield.

Reserve Farm Incentives

Reward tokens originating from underlying lending market reserves allocated by the vault.

import { createSolanaRpc, address, generateKeyPairSigner } from '@solana/kit';
import {
  KaminoManager,
  KaminoVault,
  getMedianSlotDurationInMsFromLastEpochs
} from '@kamino-finance/klend-sdk';

const signer = await generateKeyPairSigner();

const rpc = createSolanaRpc('https://api.mainnet-beta.solana.com');
const slotDuration = await getMedianSlotDurationInMsFromLastEpochs();
const kaminoManager = new KaminoManager(rpc, slotDuration);

const vault = new KaminoVault(
  rpc,
  address('HDsayqAsDWy3QvANGqh2yNraqcD8Fnjgh73Mhb3WRS5E')
);

const claimRewardsIxs = await kaminoManager.getClaimAllRewardsForVaultIxs(
  signer,
  vault
);
Vault Creation & Revenue Share

Deploy Your Own Vault, Earn Revenue

Create and manage your own vault using the Kamino SDK or Kamino Manager CLI tool. Set custom fees that flow directly to your treasury.

Performance Fee
performance_fee_bps

% of yield earned by depositors. Set by vault curator. Taken from profits only.

Management Fee
management_fee_bps

Annual fee on total AUM. Set by vault curator. Accrues continuously on-chain.

import { createSolanaRpc, address, generateKeyPairSigner } from '@solana/kit';
import {
  KaminoManager,
  KaminoVaultConfig,
  getMedianSlotDurationInMsFromLastEpochs
} from '@kamino-finance/klend-sdk';
import { TOKEN_PROGRAM_ADDRESS } from '@solana-program/token';
import { Decimal } from 'decimal.js';

const adminSigner = await generateKeyPairSigner();

const rpc = createSolanaRpc('https://api.mainnet-beta.solana.com');
const slotDuration = await getMedianSlotDurationInMsFromLastEpochs();
const kaminoManager = new KaminoManager(rpc, slotDuration);

const kaminoVaultConfig = new KaminoVaultConfig({
  admin: adminSigner,
  tokenMint: address('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'),
  tokenMintProgramId: TOKEN_PROGRAM_ADDRESS,
  performanceFeeRatePercentage: new Decimal(10.0),
  managementFeeRatePercentage: new Decimal(1.0),
  name: 'Earn USDC Vault',
  vaultTokenSymbol: 'kUSDC',
  vaultTokenName: 'kUSDC receipt',
});

const { vault: vaultSigner, initVaultIxs: instructions } =
  await kaminoManager.createVaultIxs(kaminoVaultConfig);
  • Fees are recorded on-chain, providing transparent and auditable accounting
  • Reserve whitelist controls restrict capital deployment to approved lending market reserves
  • Allocation caps, distribution, farm incentives, and fee rates can be updated at any time after vault creation.

Ready to integrate yield into your app?

Start with the developers guide or jump straight to the discord.