Documentation
How Penny Stonks works
Coins launched here are real tokens on Solana mainnet, minted on pump.fun's bonding curve and signed by your own wallet. This page describes exactly what happens to a coin's creator fees, who can move them, and — just as importantly — the things this site cannot do.
Every figure below is read from the code that enforces it. Where something is measured, unbuilt, or impossible, it says so.
What this is
A pair is a coin plus the cheap ticker it is named after. The coin has its own supply and its own bonding curve. The ticker is a reference printed next to it — a thesis that stays legible instead of being buried in a group chat.
The pairing does two concrete things: it names the coin, and it points 100% of the coin's creator fees at a treasury address. It does not give holders any ownership of, claim on, or exposure to the underlying company.
A coin is not a share
Holding a coin paired with a ticker gives you nothing from that company. The companies are unaffiliated and have not endorsed anything here. The coins are memecoins and should be treated as such.
Custody and signing
This site never holds a private key. Every transaction — creating a coin, buying, selling, routing fees, releasing fees, paying holders — is built unsigned on the server and returned to your browser. Your wallet signs it and submits it.
The practical consequence: the server cannot move your funds, and it cannot move the treasury's either. There is no hot wallet to compromise. — app/api/launch/prepare, app/api/trade
Amounts are re-checked on the server
The trade form caps what you can enter, but a request can be sent directly, so the endpoint enforces its own ceiling of 50 SOL per buy. Client-side validation is a convenience for you, not a trust boundary for us.
Launching a coin
A launch takes two signatures, and they are independent. Understanding that is the difference between a coin that routes fees and one that only looks like it does.
Metadata is uploaded and an unsigned mint transaction is built
Your name, ticker, description and image go to IPFS, and a pending row is recorded. Every field is re-validated here regardless of what the form allowed.
Your wallet signs the mint
Signed by your wallet plus the new mint's keypair, then submitted. Broadcast is not confirmation, so the app polls until the network confirms it — a coin is not treated as live on the strength of a submitted transaction.
A second signature routes the creator fees
Setting the fee split is its own transaction and its own approval. This is the step that makes the pairing real.
A coin can exist without the pairing
If the second signature is declined or abandoned, the coin is live and its fees still go to its creator. That is why the board labels such coins named after rather than paired with, and why a coin's routing status is read from the chain rather than from our own database.
Fee routing
When the split is set, 100% of the coin's creator fees are directed to the treasury — the launcher keeps none of them. This is stated on the launch form before anything is signed, because it means giving up fee income.
The split is permanent. pump.fun revokes the config's admin once it is set, so once a coin is paired it stays paired. This was verified by decoding live sharing configs on chain rather than taken from documentation. — lib/solana/fee-split.ts
Setting a split does not move any money
This is the single most misread part of the mechanism. A split only changes where fees are owed. The SOL accrues in the coin's creator vault and stays there until someone pushes it out. Until then the treasury balance is zero no matter how much the coin trades.
Releasing fees
Moving accrued fees out of the vault is a separate, permissionless action. Its recipients are read from the on-chain config, not from whoever submits it — so the caller cannot name themselves or redirect a single lamport. They only pay the ~5,000-lamport network fee.
That is why the release button on a coin's page is safe to expose to anyone. In the words of the module that builds it: the signer is paying postage on someone else's mail, and the address is already written on it. — lib/solana/distribute.ts
- Releases below 0.0002 SOL are refused — cranking dust burns more in fees than it delivers.
- 890,880 lamports stay behind so the vault account remains rent-exempt.
The scheduled crank is not currently running
A job is configured to run every six hours (0 */6 * * *), but it requires a CRON_SECRET and refuses to run without one rather than running open to the internet. That secret is not set, so the schedule is inert today.
Fees are not lost — they keep accruing in the vault, and the manual release button on each coin's page works and can be pressed by anyone. But do not read the schedule as an automatic guarantee.
What the treasury can do
The intended purpose of the treasury is to buy the tokenized version of the paired stock. For most coins here, that is not possible, and the site says so on the coin's own page rather than describing a buyback that will not happen.
- Most paired stocks have no tokenized version. xStocks coverage is inverted against this site's premise: blue chips are tokenized, cheap tickers generally are not. With nothing to buy, there is no buyback.
- A tokenized version existing is not enough. Some xStocks have no swap route on Solana at any size, so they cannot be bought even though the token exists.
- Buys are manual. No treasury key exists on the server, so it cannot spend the treasury. An operator executes purchases.
Where no stock can be bought, collected fees are distributed to holders as SOL instead. Holders receive the fee value, never the security.
Distribution to holders
Paying every holder is arithmetically impossible: a coin with tens of thousands of holders would owe more in network fees than it ever earned. Distributions are therefore bounded, and the bound is stated rather than hidden.
- Up to the 20 largest holders the RPC will report, in batches of 15 transfers, each signed by the treasury wallet in a browser.
- Liquidity pools and program addresses are removed twice over — once by account owner, and again by checking whether the address is a valid public key at all.
- Each batch is confirmed on chain before the next is signed, so an unlanded batch is never counted as paid.
If you hold a small amount, expect nothing
Smaller holders fall outside the reported top 20 and receive nothing. Allocations that round to zero are dropped and the remainder is re-planned across the rest. This is a bounded courtesy, not a yield.
Why an address is checked twice
A pool's authority can look like an ordinary wallet by owner alone. Such addresses are deliberately chosen to have no private key, so tokens sent there are destroyed rather than misdelivered — which is why the second check exists.
Trading
Buys and sells execute against pump.fun's bonding curve and spend real SOL. Slippage defaults to 15% and is editable before signing. Your wallet shows the exact cost before you approve anything.
A coin whose market is not live shows a disabled panel labelled Not live rather than a button that looks ready. Balances are never guessed: if a wallet is not connected, the panel says the balance is unknown instead of printing a number you might size a trade against.
Prices and charts
Prices come from DexScreener where a pool exists for the coin, and are left blank where none does. A blank price is deliberate — an invented one is worse than none.
DexScreener's API publishes no candle or time-series data of any kind, so the candlestick chart on a coin's page is DexScreener's own embedded widget rather than something drawn from their API. If that widget fails to load in your browser, the link beside it opens the same pair directly; the link is always present, never a fallback.
Thin pools are flagged
Where a pool holds very little liquidity, a single trade can move the printed price substantially. Those figures are labelled indicative rather than presented as reliable quotes.
What is stored
One row per launch: the mint address, the creating wallet, the name, ticker, description and metadata URI, the paired ticker, any project links you supplied, the transaction signatures, and timestamps. No accounts, no passwords, no email.
The paired ticker is snapshotted at launch, so a later change to our catalogue can never silently re-point an existing coin at a different security.
Fee-routing columns are kept as provenance only. Whether a coin is actually paired is read from the chain on every page load, because our columns can only answer “did we record a split” — not “is one set”.
Coin artwork is proxied
Images are served through this site rather than linked from an IPFS gateway directly, so your browser never contacts a gateway chosen by the coin's launcher.
Risks
A ticker symbol is not a unique identifier
Anyone can launch a coin using any symbol, and several coins here already share one. The contract address is the only identifier that means anything. Check it against the coin you intended to trade before spending.
- Memecoins are extremely high risk. Most go to zero. Only spend what you are prepared to lose entirely.
- A coin gives you no ownership of, or claim on, the security it is named after.
- Fee routing is permanent and forward-looking. It applies to fees accrued after the split is set, not before.
- Distributions are bounded and discretionary in timing. Nothing here accrues to you automatically.
- Nothing on this site is financial advice.
Penny Stonks has no official token. Any coin claiming to be one is not ours.
Still have a question about a specific coin? Its own page shows the live on-chain routing status, the real contract address, and what the treasury can do for that pairing.
