Reserve-level configuration
The fixed-rate mechanics are controlled by theseReserveConfig fields:
Market-level rollover settings
- SDK
- API
- Kamino CLI
Configure a fixed rate reserve via SDK
Reserve-level fields are set viakaminoManager.updateReserveIxs (or at creation via addAssetToMarketIxs). Market-level rollover and liquidation flags are set via updateLendingMarketIxs.Reserve config
Market-level rollover and liquidation flags
User-side rollover
The user-facing rollover instruction (rolloverFixedTermBorrow) is part of the on-chain klend program. The current public klend-sdk does not yet expose a dedicated TypeScript helper for it; until it ships, end-user apps integrate the rollover via the Kamino webapp or by building the instruction manually from the program IDL.Open-term vs. fixed-rate
Mixing fixed and open on the same reserve isn’t supported. To run both, deploy two reserves for the same mint.
How interest accrues
Total borrow rate =IR curve rate at current utilization + host_fixed_interest_rate_bps.
The fixed component is a flat bps add-on; the variable component reacts to utilization as on any reserve. The borrower’s actual cost depends on both how full the reserve is and the curator’s fixed-rate setting. This design lets a curator offer “5% fixed plus utilization premium” pricing while keeping the variable component responsive.
Maturity and what happens at it
When a borrow reaches itsdebt_maturity_timestamp (per-borrow or cohort):
The rollover modes
Rollover preserves the principal but resets accrual: the new term starts fresh. Penalties from the prior term do not carry over.
Early-repay penalty
If the borrower borrows additional principal on an already-active fixed-term position, the borrow timestamp is reset for the entire position. Effectively, the new top-up creates a new fixed term covering the combined balance. After a rollover, penalties reset to zero for the new term.
Curator workflow: launching a fixed rate reserve
1
Decide the (rate, term) matrix
Pick the durations and rates you want to offer (e.g., 30/60/90 days at 4%/5%/6%). Each combination is a separate reserve.
2
Configure each reserve
Set
debt_term_seconds, host_fixed_interest_rate_bps, early_repay_remaining_interest_pct. Choose risk parameters (LTV, threshold, IR curve) appropriate for the duration.3
Set market-level rollover windows
Decide the rollover window — how far before maturity borrowers can roll. Common settings: 24–72 hours.
4
Enable mature-debt liquidation
Set
mature_reserve_debt_liquidation_enabled = 1 and obligation_borrow_debt_term_liquidation_enabled = 1. Choose term_based_full_liquidation_duration_secs (typically 12–48 hours after maturity).5
Test on staging
Take a fixed-term borrow on staging, fast-forward time using a test scenario, exercise rollover, exercise repay, exercise mature-debt liquidation. Confirm the lifecycle works before mainnet.
Common errors
Reference
- Reserve config reference — fixed-rate reserve fields
- Market config reference — rollover and term-liquidation flags
- Borrow orders — peer-to-peer matching for fixed-rate liquidity
- Liquidations — base liquidation mechanics