banked

Docs

Every coin funds its own loans.

banked is a pump.fun launchpad. Each coin launched here gets its own SOL vault, filled by a share of its trading fees. Holders borrow from that vault against the coin, and repay into it.

the loop
launch  → pump.fun's fee-sharing config names the coin's vault as a shareholder
trade   → every buy and sell pays creator fees on pump.fun
fees    → distributed on chain every few minutes; the vault's share lands in it
borrow  → a holder deposits THIS coin and receives SOL from THIS vault
repay   → exactly the borrowed SOL returns to the same vault; tokens return to the holder

Vaults never share SOL. A coin's fees can only be lent against that coin, so a crash in one coin can never drain another coin's vault. Nothing about the coin itself changes: it trades on its bonding curve and, after graduation, on PumpSwap, exactly like any pump.fun coin.

Launch a coin

One wallet approval creates the coin, writes the fee split, and opens its vault.

  1. 1

    Describe the coin

    Name, ticker, image and optional links. The metadata is pinned to IPFS through pump.fun.
  2. 2

    Pick the vault share

    Between 10% and 100% of creator fees go to the coin's vault (default 50%). The rest is yours. A bigger share means a bigger vault and more your holders can borrow.
  3. 3

    Sign once

    Your wallet signs the create transaction, the fee-sharing transaction (which also sends 0.005 SOL to open the vault on chain) and an optional first buy, all in one approval.
  4. 4

    Lending opens

    The server reads the fee-sharing config back from pump.fun. Only when it names this exact vault at the agreed share does the coin page open borrowing.

Launch a coin

Borrow SOL

Deposit the coin, get SOL in the same transaction, get the exact tokens back when you repay.

  1. 1

    Find the coin

    Open a coin page or pick from your holdings on Vaults. Only coins launched here can be borrowed against.
  2. 2

    Choose an amount

    Pick how many tokens to deposit and a loan-to-value up to 50%. The quote reads the market fresh every time.
  3. 3

    Sign

    One transaction moves your tokens into the coin vault and the vault’s SOL to you. Neither half can land without the other.
  4. 4

    Repay any time

    There is no interest and no deadline. Repaying sends exactly the SOL you borrowed back to the same vault and returns your exact tokens in one transaction.

Each coin vault is a separate Solana wallet derived from the coin's mint. At launch, pump.fun's own fee-sharing program records two shareholders: the launcher and the vault. pump.fun then treats the fee-sharing config as the coin's creator, so every creator fee flows through it.

Fees accrue at pump.fun until someone calls distribute_creator_fees. That instruction is permissionless; banked calls it every few minutes once enough has built up, pays the gas, and records the exact SOL that landed in the vault from the transaction itself.

Every vault keeps 0.003 SOL untouched for rent and gas. Everything above that is free to lend.

Since 30 September, Pool::virtual_quote_reserves on PumpSwap pools is a signed i128 and can be negative. Every buy and sell is priced against the effective quote reserves:

pumpswap
effective_quote_reserves = pool_quote_token_account.amount + Pool::virtual_quote_reserves

banked decodes the pool account directly on every read, keeps the sign, and reads pools written before the field existed as 0. Coins still on their bonding curve are priced against the curve's virtual SOL, and only its real SOL can ever be paid out.

Valuing collateral

A bag is worth what selling it would return, not its spot price.

The whole deposit is priced as one sell, after the coin's largest holders have sold first:

valuation
// stress: the 20 largest holders (minus the pool and your deposit) dump first
quote'  = quote - sell(ahead)
base'   = base + ahead

gross   = deposit * quote' / (base' + deposit)
gross   = min(gross, sellable SOL)
value   = gross * (1 - sell fee)

The stress step stops a whale from depositing part of a bag, borrowing against today's price, and dumping the rest. Large deposits in thin markets are worth less per token, exactly as they would be if you sold.

Maximum loan-to-value
50%
Liquidation threshold
75%
Interest
None — repay exactly what you borrowed
Term
Open-ended, repay whenever you like
Loan size
0.01 SOL – 25 SOL
Share of a vault per loan
50% of its free SOL
Per-coin cap
10% of the coin's sellable SOL, all loans
Open loans per wallet
3
Minimum market
2 SOL sellable
Sell fee in valuation
2% curve · 1.25% PumpSwap
Liquidation penalty
None — surplus is refunded
Vault fee share
10% – 100%, set at launch
  1. 1

    Quote

    The server reads the market and the coin’s largest holders, values the deposit, and caps the loan by LTV, vault balance, per-coin exposure and size limits.
  2. 2

    Prepare

    It builds one transaction — your tokens to the coin vault, the vault’s SOL to you — and the vault signs it first so wallets can’t rewrite it.
  3. 3

    Sign

    Your wallet signs. The transaction still can’t land: it also needs a server gate signature.
  4. 4

    Submit

    The server checks the bytes are exactly what it built, re-quotes the loan against the market right now, and only then adds the gate signature and relays it.
  5. 5

    Repay

    Same pattern in reverse: the borrowed SOL back to the same vault, exact tokens back to you, in one transaction.

Every open loan is re-valued every five minutes and whenever its owner opens My loans. When the debt reaches 75% of the collateral's value, the vault sells the collateral into the coin's own market — the bonding curve or the PumpSwap pool — with a slippage limit.

The vault keeps only the SOL it lent — no penalty, no fee — and sends everything above that back to the borrower, once. A loan with a repayment already signed and in flight is not liquidated.

Security model

Every check runs on the server immediately before a transaction is released.

Attack
Defence
Broadcast a vault-signed borrow yourself
Needs a gate signature only the server adds after re-checking
Sign at an old price
Re-quoted at submit; refused if the price or vault moved
Borrow, then dump the rest of your bag
Largest holders are assumed to sell first
Drain a vault with one loan
Each loan takes at most 50% of free SOL
Race two borrows at once
In-flight loans are subtracted from the vault
Swap in different instructions
Signed bytes must equal the stored message
Freeze, fee or hook tokens
Mints with freeze authority or Token-2022 traps are refused
Fake a fee share at launch
Lending opens only after the on-chain config is read back
Coin vaults are wallets operated by banked, not an audited on-chain program. Collateral and vault SOL are custodial.
  • Meme coins move fast. A loan can be liquidated between checks, and the sale can fill below the threshold.
  • The launcher stays the fee-sharing admin on pump.fun and could later change the split. Lending is re-checked against the on-chain config.
  • If pump.fun changes its programs, loans may pause while pricing and liquidation are updated.

API

The same JSON endpoints the site uses. Amounts are strings in base units (lamports or raw token units).

GET/api/market/{mint}?amount=

Live market for a coin: venue, reserves, liquidity, and the valuation of amount tokens.

GET/api/coins/{mint}/vault

A launched coin's vault: balance, free SOL, lent, fees distributed and pending.

POST/api/loans/quote

Body { mint, amount, ltvBps, wallet? }. Returns the principal, valuation and any problems blocking the loan.

POST/api/loans

Body { wallet, mint, amount, ltvBps }. Returns { id, transaction }, a base64 transaction already signed by the coin vault.

POST/api/loans/{id}

{ action: "open", transaction } submits a signed borrow. { action: "repay", wallet } prepares a repayment; { action: "repaid", transaction } submits it.

GET/api/loans?wallet=

Every loan for a wallet, with live owed amount and health.
curl
curl -X POST https://<site>/api/loans/quote \
  -H 'content-type: application/json' \
  -d '{"mint":"<mint>","amount":"1000000000","ltvBps":3000}'
pump.fun bonding curve
6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
PumpSwap
pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA
pump.fun fee sharing
pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ
Memo (gate signer)
MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr

FAQ

Where does a coin’s vault get its SOL?

From that coin’s own trading fees. At launch, pump.fun’s fee-sharing config names the coin’s vault as a shareholder. Every few minutes the accrued fees are distributed on chain and the vault’s share lands in it. Borrowers repay into the same vault, so the SOL keeps circulating among that coin’s holders.

Can I borrow against any coin?

Only coins launched here, and only from their own vault. A coin’s SOL can never be lent against a different coin, so each vault’s risk stays with its own holders.

Do I get the same coins back?

Yes. Your tokens sit in the coin’s vault untouched while the loan is open. Repay what you owe and the exact same amount comes back to your wallet in the same transaction.

Does borrowing move the price?

No. Depositing collateral is a transfer, not a trade — nothing hits the pool, so there is no red candle. The only time the vault sells is a liquidation.

What does it cost?

Nothing beyond normal Solana network fees. There is no interest: borrow 1 SOL and you repay exactly 1 SOL, whether that is tomorrow or in a year. The vault grows only from the coin’s trading fees, never from borrowers.

What happens if the coin dumps?

If the loan reaches 75% of your bag's value, the vault sells the bag to recover the SOL it lent. There is no penalty: everything above the amount you borrowed is sent back to you.

How much can I borrow?

Up to 50% of what the market would really pay for your whole bag — after the largest holders sell first, with price impact and fees included. One loan can also take at most 50% of the vault’s free SOL.

Is this custodial?

Yes. Each coin vault is a wallet operated by banked, not an audited on-chain program. Collateral and the vault’s SOL are held there. Only borrow what you are comfortable having held by a third party.