How kUSD works, and how to check it yourself.
kUSD is a dollar on Base, backed one for one by USDC in three PSM contracts anyone can read. Start here to mint, stake and exit, and to verify every number from chain.
Mint, stake, exit
- 01
Mint
Send USDC to the PSM. Receive kUSD one for one, less the fee.
- 02
Stake, if you like
Deposit kUSD in the vault and hold skUSD. The share price carries the yield.
- 03
Exit
Redeem kUSD for USDC in one transaction, up to the USDC held in the PSM you redeem from (read live). No lockup or cooldown.
PSM 0xaBDE1138…70569803No oracle sets the mint price. Reserves signed every hour.How kUSD works on Base
kUSD is a dollar on Base, backed one for one by USDC held in three Peg Stability Module contracts. You mint it and redeem it in a single transaction, with no lockup and no cooldown.
Larger tickets pay less. Charged on the way in and on the way out.
Concepts: tokens, vaults and reserves
Tokens. kUSD is the dollar, one ERC 20 at 0x5C2EfdF0…f5680AA3 on Base, verified on Sourcify and Basescan. skUSD is the vault share.
Vaults. The PSM at 0xaBDE1138 is the only contract that mints kUSD. The skUSD vault at 0x96F51…c21DfA14 is an ERC 4626 wrapper: stake kUSD, receive skUSD, and the share price carries the yield.
Reserves. The live read is at kerne.fi/api/por, and the hourly signed statement is at kerne.fi/api/por/signed. Every line reproduces from chain with a public RPC, so no custodian attestation is needed to check the backing.
Choose your path
Three things most people come here to do.
Check the reserves yourself
The live unsigned JSON read returns the backing, supply and block. The hourly signed statement is at kerne.fi/api/por/signed.
// Live reserves, read from Base. The hourly signed statement is at /api/por/signed. const por = await fetch("https://kerne.fi/api/por").then(r => r.json()); { "protocol": "Kerne Protocol", "chain": "base", "chainId": 8453, "blockNumber": 51010541, "timestamp": "2026-09-07T19:47:10.678Z", "reserves": { "psmMint": { "address": "0xaBDE1138aa1Ce88d1dF06422C0c3b05D70569803" }, "stakedVault": { "address": "0x96F5102C15b839757f811A98CEc3725Ac21DfA14" }, "multisig": { "address": "0x52d3E450bA6c299B1B07298F1E87DD74732D4877" }, "psm": { "usdcHeld": 1110.888006 } }, "liabilities": { "kUSD": { "address": "0x5C2EfdF0D8D286959b42308966bc2B97f5680AA3", "outstanding": 1109.707154 } }, "solvency": { "status": "fully-backed", "psmSolvent": true, "psmSolvencyPct": "100.11%" }, "attestation": { "kind": "rpc-self-attest", "canonicalEndpoint": "https://kerne.fi/api/por" } }
The contracts
Seven addresses on Base. Each one opens on Basescan.
0xaBDE1138aa1Ce88d1dF06422C0c3b05D70569803Basescan
0x5C2EfdF0D8D286959b42308966bc2B97f5680AA3Basescan
0x96F5102C15b839757f811A98CEc3725Ac21DfA14Basescan
Vault v1The vault the reserves API attests.0x8005bc7A86AD904C20fd62788ABED7546c1cF2ACBasescan
Vault v2The Safe governed ERC 4626 vault. Closed to deposits, with no shares issued.0x8ccc56B5624e2FDB592F6609d81F4c3798e3292BBasescan
KerneInsuranceFundDesigned to absorb a shortfall before redemptions are touched.0xE8799FCF327C6D2f78103a3c9308C93592A30403Basescan
Governance SafeTwo of three signatures. Owner of the governance roles.0x52d3E450bA6c299B1B07298F1E87DD74732D4877Basescan
Browse the chapters
Twenty one chapters in five parts, from the first idea to the risk disclosures.