Trade card-backed loans on-chain.

SlabFi is a peer-to-peer lending market for tokenized graded trading cards on Solana — Pokémon, Yu-Gi-Oh, sports, One Piece, anything PSA / BGS / CGC slabbed and held in vault. Lend USDC and earn interest. Borrow USDC against your cards without selling them. Settles on-chain in seconds.

Overview

TL;DR

  • Lend USDC, earn interest from people borrowing against their slabbed cards.
  • Borrow USDC against your card without selling — repay on time, get the card back.
  • • Optional 24-hour late-repay window (2× interest penalty) if you're late.
  • • Don't repay → the lender takes the card. No auctions, no liquidations.
  • • 5% fee on interest at repay; 1% claim fee on default. Treasury bound. Admin-tunable.
1

Connect your wallet

Phantom, Solflare, Backpack — anything Wallet Standard. We never see your seed.

2

Pick a side

Got USDC? Deposit into your lender escrow on /loans, then post offers. Got cards? Borrow.

3

Track your loans

Every position lives at /loans — repay, extend, or claim from one place.

What else lives on SlabFi

How it works

Two-sided order book. Either side can post first; the other side fills. Every position settles atomically on Solana — no off-chain ledger, no custodian holding your USDC or NFTs.

As a Lender

  1. Deposit USDC into your lender escrow (one-time, on /loans).
  2. Post an offer against a collection — set principal, rate, term, late-repay window, extensions, optional auto-renew.
  3. When a borrower takes it, principal moves to them and their card moves into the loan vault.
  4. On repay: principal + your share of interest land back in your escrow.
  5. On default: claim the card after the late-repay window closes (1% claim fee).

As a Borrower

  1. Hit "Lend" in the header to see your cards.
  2. Click "Borrow against this" on any verified slab.
  3. Set your minimum principal + maximum rate; lock the card in escrow.
  4. When a lender fills, USDC arrives in your wallet.
  5. Repay before the term ends to get the card back. Need more time? Extend (flat fee per extension) or use the late-repay window (2× interest).
Heads up: there's no liquidation auction. The collateral is binary — either you repay on time, or the lender ends up with the card. This matches how peer-to-peer NFT lending works on Sharky / NFTfi / Arcade and keeps the moving parts to a minimum.

Why SlabFi

Three quick takes, depending on where you're coming from.

If you've used eBay or Fanatics

Think of SlabFi as the listing your card doesn't leave. Set terms, accept USDC, pay it back with interest, card never moves out of your custody — until it does, in the worst case where you can't repay.

Unlike a sale, the lender's risk is capped at the loan amount, and your downside is capped at losing the card if you default. No buyer protection drama, no shipping disputes.

If you've used Sharky or Citrus

Same model, scoped specifically to graded TCG / sports cards. Grading metadata (PSA 10 vs PSA 9, BGS 9.5, etc.) makes risk pricing tighter — a Charizard PSA 10 has a much narrower price band than a profile-pic NFT.

Defaults are also less reflexive: floors don't crash because someone listed cheap, since the cards are physically vaulted by the issuer (Beezie, Phygitals, Collector Crypt, Emporium). Slab grade × set × edition is the price anchor, not vibes.

If you're new to all this

You hold a graded card that's been tokenized — a digital receipt for a real card sitting in a PSA-controlled vault. The receipt lives in your wallet on Solana.

SlabFi lets someone send you USDC in exchange for temporarily holding that receipt. You repay USDC (plus a fee); the receipt comes back. Pay late or never, the receipt — and the underlying card — is theirs.

What makes this different

Real-world value backing

Cards trade on eBay, TCGplayer, PSA APR — there's a daily-volume market underwriting every loan. Floors come from RWA aggregates, not on-chain reflexivity.

Peer-to-peer, no pools

You set your terms; you pick your counterparty. No AMM curve dictating rates. Pools are a future feature for passive lenders, optional.

Extensions + late-repay window

Bad week? Pay a flat fee to extend the loan. Missed the deadline? You still have 24 hours at 2× interest. Designed so you don't lose a card to a one-day cash-flow gap.

Stays on-chain, end-to-end

Every USDC movement, every NFT transfer, every default-claim — settled by the on-chain program. No off-chain ledger, no admin who can freeze your position outside the published rules.

Glossary

Plain-English definitions for the terms you'll see in the UI.

Principal
The USDC the borrower receives at loan start. Pulled from the lender's escrow vault when a borrower takes the offer.
Lender escrow
Per-wallet USDC vault that funds your offers. Deposit once, post unlimited offers; principal is debited only when an offer is taken. Repayments land back here. Withdraw any time.
Flat-rate interest
Interest is a fixed percentage of principal for the full term. A 1,000 USDC loan at 10% always owes 1,100 at repay — same total whether you repay tomorrow or on the last day. Matches Sharky / NFTfi convention.
LTV (loan-to-value)
Cap on principal as a fraction of the collection's floor. At 50% LTV with a 1,000 USDC floor, max principal is 500. Enforced on-chain at accept time.
Loan term
How long you have to repay at the agreed rate. Mid-loan you can extend (paying one extra interest per extension, capped) or wait for the late-repay window. After both, the lender claims.
Late-repay window
Optional 24-hour buffer after the loan ends. Repay during it, you owe 2× the original interest as a penalty. Fixed length; toggle on/off at offer creation.
Loan extension
Borrower bumps the loan's expiry in exchange for a flat fee equal to one full original interest. Capped per loan by max_extensions (default 2; protocol max 5). Pre-expiry only.
Auto-renew offer
Lender flag at offer creation. After each loan from the offer settles, the offer immediately becomes available for a new borrower at the same terms. Lets capital stay committed without re-posting after every cycle.
Default-claim
Past the late-repay window (or past the term, if late-repay is off), the lender takes direct custody of the card. The loan closes as defaulted; lender pays a 1% claim fee in USDC.
Verified Metaplex collection
Solana NFTs are tagged with a "collection" pointer. The verifiedbit means only the collection authority could have flipped it on. SlabFi only accepts verified collections, so a borrower can't pass off a random NFT as PSA-10 collateral.
Price feed
Per-collection floor value, published by an authority bot. Pulls from RWA sources (eBay completed sales, TCGplayer, PSA APR). Stales after 1 hour; admin can refresh from /admin.
Reputation tier
Per-borrower trust signal (Bronze → Platinum) computed from on-chain repay history. Cosmetic today; lenders can use it as a soft filter when picking whose borrow request to fill.

Risks

Lending against any asset carries risk. The biggest ones to know:

  • Floor crash. If the card's market value drops between loan start and default, the lender ends up with a card worth less than the principal lent. The LTV cap mitigates this but doesn't eliminate it.
  • Liquidity. A defaulted card is illiquid — selling means a Magic Eden listing or off-platform deal. Don't lend capital you can't tolerate sitting in collateral form for a while.
  • Smart-contract risk. The on-chain program is currently in alpha on Solana devnet. No mainnet deployment, no formal audit yet. Treat everything you do here as a sandbox — devnet USDC and devnet NFTs are not real money.
  • Authority risk. Admin can pause the protocol and tune fees, but can't cancel your loans or take USDC outside the published fee schedule. Treasury withdrawals require both admin and treasury keypair signatures.
  • Price-feed staleness. If the off-chain price-authority bot stops publishing, the 1-hour staleness gate blocks new loans against affected collections. Existing loans are unaffected.
  • Slab integrity. The on-chain receipt is only as good as the vaulting custodian's process. Issuers (Beezie, Phygitals, Collector Crypt, Emporium) all publish their custody arrangements; review those independently.

FAQ

What happens to the card during a loan?
It sits in a program-controlled escrow account (a PDA-owned ATA). Borrower can't move it; lender can't move it; only the on-chain instructions can — returning to borrower at repay or transferring to lender at default-claim.
Can I repay early?
Yes. Interest is flat-rate so the total is the same whether you repay tomorrow or on the last day. Annualized pro-rated interest is wired into the on-chain code but not exposed in the UI yet.
Can I extend a loan?
Yes — if the lender allowed extensions when posting (default 2 per loan, max 5). Click Extend on the loan in /loans. Cost: one full original interest, flat — same whether you extend by an hour or by the full original term. Only works before the loan ends.
What if I'm late?
If the offer included the late-repay window, you have 24 hours after the term ends to repay at 2× interest. Past that, the lender can claim the card and the loan defaults.
What if a borrower defaults but the lender never claims?
The card sits in escrow indefinitely. Borrower can't withdraw it, lender just hasn't claimed yet. There's no automatic resolution — the lender has the option to wait. /loans surfaces these as "claimable".
Where do my fees go?
Both protocol fees (interest cut) and claim fees (principal cut) flow into the treasury USDC account. Withdrawals require co-signatures from admin and treasury — a two-key setup so a single compromised wallet can't drain it.
Why not pools / AMM lending?
Peer-to-peer keeps the model simple and lender-controlled — your terms, your counterparty, your call. Lender pools are scaffolded on-chain (skeleton state + init/deposit/withdraw) and ship in a future release once we have volume to justify them.
Is this audited?
Not yet. The on-chain code is in alpha. A formal audit (OtterSec / Halborn / Neodyme) is a hard requirement before any mainnet deploy. Until then, treat everything you see here as in-development.
What's the catalog for?
Catalog is the discovery layer. Every English Pokémon set from Base Set (1999) through the current Mega Evolution series (2026) is indexed — roughly 36,000 cards across 121 sets. You can search by name, filter by set / variant / rarity / year, and click any card to see its grade-ladder pricing (PSA 10 / 9 / 8, BGS 10, CGC 10, raw) sourced from PriceCharting + PSA APR data. The catalog runs even when there's no on-chain market for a card yet; once a market exists, it surfaces alongside the price data.
How does the catalog connect to the markets?
Each catalog detail page (/catalog/[id]) resolves to a card identity (a PriceCharting product id). If that identity has a verified Metaplex collection in our registry, the page also shows live on-chain markets — current offers, recent fills, pop reports, your holdings if you have any. So you can go either direction: browse-then-borrow, or market-then-research.
What's the faucet?
A devnet-only utility at /faucet that mints up to 20 PSA-tokenized test slabs into your wallet on a 24-hour cooldown. Each mint draws from a curated pool of real Pokémon card identities (with grade, set, image) so you can actually exercise the lend/borrow/trade flow without buying anything real. The mints are non-transferable to mainnet — they're devnet receipts, not the underlying cards.
How do trades work?
Trades are atomic, peer-to-peer NFT-for-NFT swaps. Either side proposes a bundle (up to 5 NFTs per side, with optional USDC top-up either direction), the counterparty accepts, and the program transfers both bundles in a single transaction. No escrow, no intermediary — either both sides clear or the transaction reverts. The TradeOffer PDA is closed at acceptance so stale offers don't pile up on chain.
What's the orderbook model?
Two-sided. Lenders post offers (deposit USDC into escrow, broadcast terms), borrowers post asks (lock card in escrow, broadcast minimum principal + max rate). Either side can fill the other instantly. Offers and asks live in distinct on-chain PDAs but the UI presents them side-by-side at / — you see "New Offers" + "New Asks" rows at the top, and the unified market grid below.
How does the referral system work?
Every signed-in profile gets a unique 6-character referral code (auto-generated on first sign-in). Share slabfi.app?ref=<yourcode> and new visitors who land via that link have their referred_by column stamped on their profile the moment they sign in. The referral graph powers the upcoming points / leaderboard system — 100 points per referred user today, with loan-volume + loyalty signals folding in over time.
What contracts power this?
A single Anchor program (nft-lending-v3) on Solana. PDAs we issue: LenderEscrow (per-wallet USDC vault), Offer (lender posts collection-scoped terms), BorrowRequest (borrower posts collateral + terms), Loan (active position with collateral and principal vault), PriceFeed (per-collection floor, refreshed by an authority bot), and TradeOffer (P2P card-for-card bundle). Treasury withdrawals require co-signatures from the admin and the treasury keypair. Source available on request.

Roadmap

Current build is local-validator only. Mainnet is on the horizon, not the schedule. Order roughly reflects priority.

M1 — Lender flow (offer + escrow)
M2 — Borrower takes offer with NFT collateral
M3 — Flat-rate interest math + Repay UI
M4 — Borrower-initiated requests + lender Fill
M5 — Default-claim + admin price-feed refresh
M6 — Admin tools (pause, fees, treasury)
M7 — Per-lender escrow, late-repay window, loan extensions
M8 — Auto-renew offers, lender pool skeleton
M9 — Devnet alpha at slabfi.app
M10 — Catalog explorer (every English Pokémon set, 1999 → 2026)
M11 — Devnet faucet (mint test slabs to play with the protocol)
M12 — Card-for-card trading (atomic NFT swaps, up to 5×5 bundles)
M13 — Profile system (username, X/Google/Apple linkage, PFP)
M14 — Direct messages between users (DM threads with trade attachments)
M15 — Referral system + invite-gated entry
M16 — Watchlist + per-card price/pop charts
M17 — Mobile-first UI pass + push notification channels
M18 — Points & leaderboard system (referral, volume, loyalty signals)
Lender pool matching (passive yield)
Loan refinancing (lender-to-lender takeover)
Magic Eden CPI for default-listing fast path
Multi-TCG reactivation (YGO, OP, Sports) once Pokémon coverage is dialled
Mainnet (post-audit)

Community

Devnet milestones, alpha cohort sign-ups, and feedback channels go through the surfaces below. Start with whichever you already use.

Handles above are reserved while we run on the local validator. They flip live the moment we move to devnet — follow this page or the roadmap above for the announcement.

Security disclosure: Found a vulnerability? Email [email protected] — please don't open a public issue. We'll triage, patch, and credit responsibly.

Built with: Anchor 0.31.1 · Solana 3.x · Metaplex Token Metadata · Next.js 16 · Tailwind v4 · Solana Wallet Adapter · React Query · @coral-xyz/anchor.

Alpha software on Solana devnet. Don't move real funds against this build. Source available on request via the team@ address above; a formal audit precedes any mainnet deployment.