Pools & Tranches
How a lending pool is put together: the pool ledger, the pending pool of deposit and withdrawal NFTs, tranche shares, and how deposits overflow.
Lending pools are the core unit of the Kasu system. Each pool accepts USDC deposits from KYC'd Liquidity Providers, deploys capital to off-chain borrowers via a Pool Funds Manager, and processes repayments and withdrawals through epoch-based clearing.
Lending Pool#
A lending pool is both a ledger and an ERC-20 token. The pool's token supply represents its total balance relative to USDC. The pool balance equals:
Pool Balance = Sum of all tranche balances + First Loss Capital
Liquidity Providers do not interact with the lending pool directly. All interactions go through the LendingPoolManager contract, which routes deposits to the corresponding Pending Pool and manages clearing.
Pending Pool#
Each lending pool has a Pending Pool (ERC-721 contract) that holds deposit and withdrawal requests. When a Liquidity Provider submits a request:
- Deposit: The Pending Pool receives the USDC and mints a non-transferable D-NFT as receipt
- Withdrawal: The Pending Pool receives tranche shares and mints a non-transferable W-NFT as receipt
Requests accumulate during the epoch and are processed during the clearing period. D-NFTs and W-NFTs are burned when requests are fully accepted. Partially accepted requests update the NFT with the remaining amount.
If a Liquidity Provider submits another deposit request in the same epoch, the existing D-NFT is reused and the amount is increased.
Tranches#
Each lending pool can have 1 to 3 tranches, representing different risk-return profiles:
| Tranche | Risk | Return | Loss Priority |
|---|---|---|---|
| Junior | Highest | Highest | First to absorb losses (after First Loss Capital) |
| Mezzanine | Medium | Medium | Second to absorb losses |
| Senior | Lowest | Lowest | Last to absorb losses |
Tranches are ERC-4626 vaults. When a deposit is accepted during clearing, the tranche mints non-transferable tranche shares 1:1 with USDC deposited. USDC-IOUs are minted within the tranche to track the accounting value (principal + interest).
Pools with a single tranche do not use the "tranche" terminology in the UI — the pool itself represents the single investment offer.
Tranche Allocation & Overflow#
At clearing time, if a tranche is oversubscribed, excess deposits overflow to the next tranche with lower risk:
- Fill Junior tranche to capacity
- Overflow to Mezzanine (if exists)
- Overflow to Senior (if exists)
- Reject remaining deposits
Within each tranche, deposits are processed by loyalty level (highest first). Overflow deposits retain their loyalty level priority in the next tranche.
Excess funds accepted into the lending pool (above the draw amount) are allocated to the Senior tranche.
Example#
| Tranche | Capacity | Requested | Accepted |
|---|---|---|---|
| Junior | $20,000 | $70,000 | $20,000 |
| Mezzanine | $30,000 | $20,000 | $30,000 (including $10K overflow from Junior) |
| Senior | $50,000 | $40,000 | $50,000 (including overflow) |
Remaining $30,000 in deposit requests are rejected and returned to Liquidity Providers.