Borrowing and lending
HyperCore lends USDC and USDT against HYPE or BTC at a fixed loan-to-value, on a curve where suppliers earn the borrow rate times utilisation times 0.9.
You can borrow dollars against HYPE or BTC without selling them, or earn interest on idle USDC. HyperCore runs one pool per quote asset and prices borrowing on a published curve you can check against pool state.
Say you supply 100 HYPE at $40 and borrow 2,000 USDC:
| Step | Value |
|---|---|
| Supply | 100 HYPE at $40 |
| Capacity | 100 * 40 * 0.65 = 2,600 USDC |
| Borrow 2,000 USDC | health factor 130%, 600 more borrowable |
| Health factor reaches 100% | HYPE at about $30.77 |
| Partial liquidation starts | HYPE at about $24.24 |
Interest accrues on the borrow throughout, so both trigger prices creep up.
Supply to earn, supply collateral, or borrow
Section titled “Supply to earn, supply collateral, or borrow”One account can play any of the three roles.
| Role | Assets | Earns or pays | Notes |
|---|---|---|---|
| Supply to earn | USDC, USDT | the supply rate, accrued continuously, indexed hourly | position has a basis (what went in) and a value (with interest); adds no borrowing capacity |
| Supply collateral | HYPE, BTC | nothing: measured on mainnet, both reserves report supply rate 0.0 at utilisation 0.0 | raises borrowing capacity |
| Borrow | USDC, USDT | the borrow rate | capacity is the sum over collateral of supplied amount * oracle price * LTV, HYPE 65%, BTC 50% |
The rate depends on utilisation alone
Section titled “The rate depends on utilisation alone”Utilisation u is total borrowed over total supplied.
borrow APY = 0.05 + 4.75 * max(0, u - 0.8) compounded continuouslysupply APY = borrow APY * u * 0.9 measured; reproduces the API to 9 decimal places
live check: 0.05 * 0.671438682 * 0.9 = 0.030214741 API supplyYearlyRate 0.0302147407 at utilization 0.671438682Suppliers earn less because interest is spread over all supply, not just the lent part, and the protocol keeps 10 per cent as a liquidation buffer.
What this means for you. Supply rates stay small until the pool is busy: at 50 per cent utilisation, 0.05 * 0.5 * 0.9 is 2.25 per cent. Near and past the kink both rates move fast.
Health stops new borrowing; liquidation comes later
Section titled “Health stops new borrowing; liquidation comes later”The health factor is LTV-weighted collateral value / borrowed value. At or below 100 per cent you can’t borrow more, but you aren’t liquidated. Partial liquidation starts when borrowed value exceeds collateral weighted by the liquidation threshold:
liquidation price = borrowed value / (supplied amount * liquidation threshold) one collateral assetStandard and unified accounts (account modes) borrow manually; portfolio margin borrows automatically and disables the manual action.
The numbers
Section titled “The numbers”| Parameter | Value |
|---|---|
| Quote assets (supply to earn, or borrow) | USDC, USDT |
| Collateral assets (LTV) | HYPE 65%, BTC 50% |
| Collateral supply rate | 0 |
| Liquidation threshold | (1 + LTV) / 2: HYPE 82.5%, BTC 75% |
| Borrow APY | 0.05 + 4.75 * max(0, u - 0.8) |
Borrow APY at u up to 0.8 |
5% |
| Slope past the kink | 475 basis points of borrow APY per point of utilisation |
Borrow APY at u = 1 |
100% |
| Supply APY | borrow APY * u * 0.9 |
| Protocol retention | 10% of borrow interest |
| Accrual | continuous, indexed hourly |
| Caps | global and per-user, per asset (portfolio margin) |
Getting your money back out
Section titled “Getting your money back out”Liquidity can lock. At 100 per cent utilisation suppliers can’t withdraw until more is supplied or borrows repaid. Liquidity and caps can also limit a borrow below what collateral allows.
A lender holds a balance, not an asset. It can’t be sold or pledged, so the only exit is a withdrawal that waits on utilisation (composable credit).
Supplying and borrowing from code
Section titled “Supplying and borrowing from code”HTTP. borrowLend is live on both networks, undocumented, and signed as an L1 action, so an API wallet can send it.
{"type": "borrowLend", "operation": "supply", "token": 0, "amount": "100"}operation is supply, withdraw, borrow or repay; amount is a decimal string or null.
CoreWriter action 15. (uint8 op, uint64 token, uint64 wei): op 0 supply, 1 withdraw; wei in HyperCore wei (1e8 for USDC), 0 for the maximum. Ops 2 (borrow) and 3 (repay) are unresolved: one tool routes them, measurement covers only supply and withdraw. Portfolio margin accounts are refused (CoreWriter).
Refusals look like success on the HyperEVM. A CoreWriter supply with too little spot balance returned EVM status 1 while HyperCore logged Borrow/Lend error: Insufficient spot balance for operation.
Reading state.
| Source | Returns |
|---|---|
borrowLendUserState {user} |
per token, borrow and supply each with basis and value, in token amounts not USD; health, healthFactor |
borrowLendReserveState {token} |
borrowYearlyRate, supplyYearlyRate, balance, utilization, oraclePx, ltv, totalSupplied, totalBorrowed |
allBorrowLendReserveStates |
the same, for every reserve |
precompile 0x811 (address, uint64 token) |
borrow and supply, each (basis, value) |
precompile 0x812 (uint64 token) |
8 x uint64: borrowYearlyRateBps, supplyYearlyRateBps, balance, utilizationBps, oraclePx, ltvBps, totalSupplied, totalBorrowed |
0x811 reverts, not zeros, for an account with no lending record, even a funded one: guard the call. Mainnet token ids are USDC 0, HYPE 150, UBTC 197, USDT0 268. Testnet differs (HYPE is 1105), so never share the constant across networks (precompiles).
No rate history. Neither the API nor the precompiles (latest block only) return past rates. Sample before you need the series.
Read live pool state, not documented numbers
Section titled “Read live pool state, not documented numbers”balance is not supplied minus borrowed. On mainnet it exceeded totalSupplied - totalBorrowed by about 46.57 USDC (USDT0: 0.07113), growing over three reads 3 seconds apart: the retained buffer. Price pool shares off totalSupplied or supply.value.
Documented caps drift. On 2026-09-20 mainnet HYPE supply read 10,233,170.44 against the documented 10M global cap.
For the rate as a holding cost, see Carry. For pricing the kink, see Options on the borrow rate.