Skip to main content
Jupiter Borrow is the collateralised borrowing side of Jupiter Lend. Users create positions by depositing collateral into vaults, then borrow against that collateral. Each vault has a supply token (collateral) and a borrow token. Positions are represented as NFTs, and the protocol tracks collateral, debt, tick-based pricing, and liquidation status. Users can deposit, borrow, repay, withdraw, and liquidators can liquidate undercollateralised positions. Integration is done via the Jupiter Lend SDK for transactions and the Read SDK for vault and position data.

About Borrow

Borrow Vaults are a known standard mechanism for locking collateral and borrowing debt. Jupiter Lend utilises this familiar single asset - single debt vault approach. Jupiter Lend takes borrow vaults to the next level by being the most capital efficient and optimised protocol enabling up to 95% LTV on collateral.
Jupiter borrow vaults have the most advanced liquidation mechanisms, and are able to provide the highest LTVs in the market. The protocol easily removes bad debt and enables the most gas efficient liquidation mechanism in DeFi.
When your position is liquidated, a portion of your collateral is sold to repay your debt and return your position to a safe state. In addition to selling a part of your collateral, a liquidation penalty is also charged.
While the Liquidation Threshold determines when a vault can be liquidated, the protocol also has a hard ceiling for liquidation. When a vault passes the max liquidation threshold it is entirely (100%) liquidated automatically.
Yes, your position is still at risk of being liquidated. Once your position passes the threshold it can be liquidated, but it may not happen immediately. If your position is still at risk you can take the time now to unwind/reduce your risk ratio to make your position safe and prevent a liquidation event.

Key components of Borrow integration

For complete examples of operations, see Create position, Deposit, Borrow, Repay, Withdraw, and Liquidate.

Ways to fetch data


Key data structures

// Vault config (per vault)
type VaultConfig = {
  vaultId: number;
  supplyToken: PublicKey;   // Collateral mint
  borrowToken: PublicKey;   // Borrow asset mint
  oracle: PublicKey;
  collateralFactor: number;
  liquidationThreshold: number;
  liquidationPenalty: number;
  borrowFee: number;
  // ...
};

// User position (raw on-chain)
type UserPosition = {
  vaultId: number;
  nftId: number;
  positionMint: PublicKey;
  tick: number;
  tickId: number;
  supplyAmount: BN;
  dustDebtAmount: BN;
  isSupplyOnlyPosition: number | boolean;
  // ...
};

// Decoded position (with exchange prices)
type NftPosition = {
  nftId: number;
  owner: PublicKey;
  supply: BN;
  borrow: BN;
  dustBorrow: BN;
  tick: number;
  tickId: number;
  isLiquidated: boolean;
  // ...
};

Vault and position model

  • Vault: A market with a supply token (collateral) and borrow token. Each vault has config (oracle, risk params), state (totals, exchange prices), and limits (withdraw, borrow availability).
  • Position: A user’s collateralised borrow. Identified by vault ID and position (NFT) id. Tracks collateral (supply), debt (borrow), tick, and liquidation status.
  • Tick: Price ticks determine the borrow amount for a given collateral amount. Positions use tick-based pricing for leverage.