How OTC works
OTC is an over-the-counter desk for Solana tokens. Buyers and sellers agree a price directly, and size changes hands wallet to wallet instead of being pushed through a liquidity pool. The chart never sees it.
Overview#
Every memecoin chart tells the same story: someone with a large bag sells into a thin pool, the price falls off a cliff, and everyone else holding pays for it. The seller loses too, because every token they sell fills at a worse price than the last.
OTC removes the pool from the trade. A buyer posts a bid, a seller posts an ask, or one side makes a private offer straight to the other. When both agree, the tokens and the SOL swap between their two wallets. Nothing is sold on the market, so the market price does not move.
Exit a large position at a known price, without dumping on your own community.
Accumulate size without chasing the price up candle by candle.
A chart that reflects demand, not one whale's exit.
Quick start#
- 1Connect your walletUse the Connect wallet button in the top right. Your wallet is your account; there is nothing to sign up for.
- 2Pick a coinChoose from the top 100 coins on the Home page, search for any token, or start from a bag you already hold.
- 3Set your priceEnter how much you want to buy or sell and choose a price relative to the market. The card shows what the pool would pay for the same size.
- 4Approve the offerYour wallet asks you to approve the terms, then to set your side aside. Your tokens or SOL stay in your own wallet; the only cost is a tiny network fee.
- 5Manage it from PositionsYour offer is live on the desk. Track it, see bids on your bags, and cancel at any time from Positions.
Why trade OTC#
A pool prices every trade on a curve. The bigger the trade relative to the pool, the further along the curve it travels and the worse its average price gets. On a coin with $2M of liquidity, selling $100K moves the price by nearly ten percent. On the desk, the same trade moves it by nothing.
| Through the pool | Over the counter | |
|---|---|---|
| Price you get | Gets worse with every token sold | Fixed when the offer is agreed |
| Effect on the chart | A red candle sized to your trade | None |
| Who sees it first | Every bot watching the mempool | Only the other side |
| Partial exits | One swap at a time | Take any part of an offer |
Bids#
A bid says: “I will pay this much SOL per token, for up to this many tokens.” You choose the coin, the size and the price. Any holder of that coin can sell into your bid, unless you make it private.
Bids are usually priced a little below market. A holder is still better off taking it, because selling the same size through the pool would pay even less once slippage is counted. The offer card shows you this number as you set your price.
Asks#
An ask is the other direction: “my tokens are yours for this much SOL each.” You list some or all of a bag you hold and buyers come to you. The desk checks that your wallet actually holds what you list before the ask goes live.
Private offers#
Any offer can be aimed at a single wallet. Only that wallet can accept it, and it stays out of the public offer list. This is how you make an offer on someone else's bag:
- 1Find the walletOpen Bags, paste any address and see every token it holds.
- 2Choose a bagPress Offer on this bag. The coin, the wallet and their full balance are filled in.
- 3Name your priceAdjust the size and price, then approve. The holder sees your offer in their Positions.
A private offer only tells the holder what you would pay. It cannot force a sale, and they are free to ignore it.
Expiry and partial fills#
| Option | What it does |
|---|---|
| Expires after | 1 hour, 1 day, 3 days or 7 days. After that the offer closes on its own. The maximum is 30 days. |
| Partial fills on | Someone can take any part of the offer. What is left stays open. |
| Partial fills off | All or nothing. The offer can only be taken in full. |
Pricing an offer#
Prices on the desk are set relative to the live market price. The price card shows your price per token in dollars and SOL, how far it sits from market, and one-tap presets: market, 2%, 5%, 10% and 20% below. The minus and plus buttons move it one percent at a time.
Two reference points matter when you choose:
| Reference | Meaning |
|---|---|
| Market price | The live spot price from Birdeye. |
| Pool exit | What dumping the same size through the pool would pay on average. Any bid above this beats selling on the market. |
How impact is measured#
Every impact figure on the desk uses the live liquidity of the coin's pools. We model the pool as constant product, with half its liquidity on each side. Selling D dollars into a side holding R dollars fills at an average of R / (R + D) of spot, and leaves the price at (R / (R + D))² of where it started.
For a coin with $2.00M of pool liquidity, that works out as:
| Sale size | Average slippage | Chart moves |
|---|---|---|
| $10.0K | -1.0% | -2.0% |
| $50.0K | -4.8% | -9.3% |
| $100.0K | -9.1% | -17.4% |
| $250.0K | -20.0% | -36.0% |
| $500.0K | -33.3% | -55.6% |
Real liquidity is spread across several pools and curves, so treat these figures as estimates. They have the right shape, and they are exactly the cost an OTC trade avoids.
Approving the terms#
Posting, cancelling and adding a coin all start the same way: your wallet asks you to approve a short piece of text that spells out exactly what you are agreeing to. That approval is free and cannot move funds on its own. It proves the terms came from you.
This is what your wallet shows when you post a bid:
OTC: post an offer Side: BID (buy tokens with SOL) Token: Bonk (DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263) Amount: 5000000000 Price: 2.9874000e-8 SOL per token Counterparty: anyone Partial fills: yes Expires: 2026-10-30T12:00:00.000Z Wallet: YourWa11etAddressGoesHere1111111111111111111 Nonce: 3f9a1c0b7e24d8a65f01b2c3 Issued: 2026-10-29T12:00:00.000Z
- Every term is spelled out. Side, coin, amount, price, counterparty, partial fills and expiry are all in the text you approve.
- Tied to your wallet. We check the approval against your wallet address before saving anything. No one can post or cancel an offer in your name.
- Single use. The nonce and timestamp make every approval unique. An approval older than ten minutes is rejected, and the same one cannot be used twice.
Where your funds sit#
Your side of an offer never leaves your wallet until someone takes it. Instead, you give the OTC desk a standard Solana token allowance for exactly the amount on your offer. It is the same mechanism wallets and exchanges use every day, and no custom program is involved.
| Offer | What you approve | Where it sits |
|---|---|---|
| Ask (selling tokens) | An allowance on your token account for the amount you list | Your own token account |
| Bid (buying with SOL) | Your SOL is wrapped, then an allowance for the bid's total | Your own wrapped-SOL account |
- Capped at your offer. The allowance covers your open offers and nothing more. Post another and it grows; a fill or a cancel shrinks it.
- Checked on-chain. An offer only goes live once the desk reads your allowance and balance on-chain and confirms they cover it.
- Yours to revoke. Cancel from Positions and the allowance is lowered, or for a bid your SOL is unwrapped straight back to you.
Filling an offer#
Filling is player to player. When you take an offer, the desk builds one transaction with two legs and co-signs it. You approve it in your wallet:
- 1You pay the maker directlyYour SOL (or tokens, if you are selling into a bid) goes straight from your wallet to theirs.
- 2The maker's side comes to youIn the same transaction, their approved tokens (or wrapped SOL) move from their wallet to yours.
The transaction is atomic: both legs land together, or neither does. If the maker no longer has the funds, or someone else filled it first, it simply fails and nothing moves. You pay the network fee, a fraction of a cent.
Positions#
Positions is your home on the desk. Connect a wallet and it shows:
- Bids on your bags. Offers aimed at your wallet, and public bids on any coin you hold.
- Your offers. Everything you have posted, open or closed, with a Cancel button on each open one.
- Your bags. Every token you hold with its value and the best bid waiting on it. Sell OTC lists it in one step.
- Coins you added. Every token you put on the desk.
Looking up a wallet#
Bags lets you look inside any Solana wallet. Paste an address, or press ⌘ K (Ctrl K on Windows) to jump to the search field from anywhere on the page. Wallets you look up are remembered on your device for next time.
Markets and listings#
The Home page lists the top 100 coins on Solana by market cap that have real trading behind them. Stable coins, staked SOL, wrapped assets and thin copycat tokens are filtered out, and duplicate tickers keep only the coin with the most holders.
Anything else can be added from Add a bag. Any coin with a live market goes on the desk the moment you add it.
Risk#
- Prices move. Memecoins are volatile. An offer that looks generous now can look expensive in an hour. Pick an expiry you are comfortable with and cancel if the market turns.
- Impact is an estimate. Pool maths uses quoted liquidity. Real execution through a pool can be better or worse.
- Check the coin. Anyone can add a coin. Always confirm the mint address on the coin's page before you trade it.
- Private offers are offers. Bidding on someone's bag does not oblige them to sell.
FAQ#
Glossary#
- Bag
- A holding of one token in one wallet.
- Bid
- An offer to buy tokens with SOL.
- Ask
- An offer to sell tokens for SOL.
- Maker
- The wallet that posted an offer.
- Taker
- The wallet that accepts an offer.
- Spot
- The current market price.
- Slippage
- How much worse than spot a pool trade fills, on average.
- Pool exit
- The average price a pool would pay for a given size.
- Private offer
- An offer only one named wallet can accept.