What PumpPair is
PumpPair is a Solana launchpad where every coin is a real pump.fun launch paired with one to 4 of four pump.fun coins, and the coin's creator fees are turned into those coins and paid out to holders automatically, in proportion to what they hold.
Every trade on pump.fun pays a creator fee to somebody. On almost every launch that somebody is the team, and holders get a token and a roadmap. We route it the other way. The fees arrive as SOL, the pad spends them on the paired coins, and the paired coins go straight into holders' wallets, about every five minutes.
The launcher. The launcher picks one to 4 of OFFICIAL, TikTok, X and 67. From then on, every trade of the coin earns SOL in creator fees, the pad buys those coins with it in equal parts, and holders receive them in their wallets. Nobody claims anything.
The pair. Every coin here trades against SOL on pump.fun, like any other pump.fun coin. Fees therefore arrive in SOL, which is what the pad swaps into the basket.
All of it is on chain
The wallets
Every fee this pad handles passes through one of these, and all of them are public. Nothing below is a claim you have to take on trust: open any of them and the transactions are the record.
| Wallet | Address | What it does |
|---|---|---|
| Payout wallet | one per coin, on its page | One per coin, made by the keeper at launch, never the launcher's own wallet. The launch sets this wallet as the coin's creator on pump.fun, so every creator fee the coin earns is this wallet's, in SOL, and only the keeper can sign for it. Each round the keeper collects those fees from pump.fun, takes the 10 % ops slice, buys the basket coins with the rest, and of the coins bought pays 85 % to holders and keeps 15 % here as the coin's lottery pot until a draw pays it out. |
| Ops wallet | 4gG2…zYaL | The keeper’s own wallet: it signs every collect, swap, payout and top-up, pays the network rent for payouts, and receives the 10 % ops slice off the top of every round. The keeper is the program that runs the rounds; this is the only wallet it acts from, besides the payout keypairs it holds in v1. |
| Fee wallet | published with the PumpPair coin | The wallet the PumpPair coin is launched from on pump.fun, so the coin's creator fees are its own. The keeper collects them into it, in SOL, and splits them: 75 % to the burn wallet, 25 % to the lottery wallet. |
| Burn wallet | published with the PumpPair coin | Buys the PumpPair coin with the SOL it receives and burns every coin it holds, every minute. Nothing leaves it any other way. |
| Lottery wallet | published with the PumpPair coin | Holds the PumpPair coin’s lottery pot in SOL. Every ten minutes the whole balance goes to one random holder of the coin. |
The addresses the programs themselves run on are at the bottom of this page.
How a coin works
Launch. A coin is a standard pump.fun launch, on pump.fun's bonding curve. The coin's creator, on chain, is its payout wallet, not the launcher's own wallet.
Earn. Every trade on the curve pays pump.fun's trading fee, and the creator's share of it accrues in pump.fun's creator vault for the payout wallet. Nobody has to claim it by hand: the keeper collects the vault into the payout wallet every minute once it holds more than 0.001 SOL. After graduation the PumpSwap pool pays the creator's share into a second vault, and the keeper collects that the same way.
Buy. Each round, the keeper takes a 10 % ops slice off the top of the SOL that arrived, then swaps the rest of the payout wallet's SOL into the basket through Jupiter, equal parts, one swap per paired coin.
Pay. Of the basket coins a round buys, 85 % goes to the holders by their share of the coin at the snapshot, and 15 % goes into the coin's lottery pot (the lottery). Accruals worth less than 0.005 SOL roll forward to the next round instead of being sent. Everything else is paid straight into the holder's own wallet.
What the basket coins are
The basket coins are four pump.fun coins: OFFICIAL, TikTok, X and 67. They are what a launch pairs with, what the creator fees are swapped into, and what holders receive.
Because every coin's fees are spent on the same four coins, every trade on the pad is also a buy of its basket. That is the whole reason the pad pairs with them: the volume of every coin launched here flows into the four, and holders end up holding them.
The PumpPair coin
The site's own coin is not launched from the pad. It is launched on pump.fun from the fee wallet, its creator, so its creator fees are the fee wallet's. Once a minute the keeper collects them from pump.fun into that wallet and splits every lamport it has collected two ways, from a ledger of its own collects: 75 % buybacks and burns, sent to the burn wallet, which buys the coin with all of it and burns every coin it holds; 25 % lottery, sent to the lottery wallet, which pays its whole balance to one random holder the moment each ten-minute countdown reaches zero. SOL that lands mid-way builds up as the pot until the next zero.
The home page shows this coin's lottery: the Lottery pot (what the next draw will pay: the lottery wallet's SOL plus what the keeper is about to send it), the countdown to the next draw, the last winners (each opens its payout on Solscan), and Lottery distributed, the dollar total of every prize it has paid. Buybacks is the SOL the burns have spent. Waiting on SOL payment is everything the coin has earned that is not yet a buyback or a pot: creator fees waiting uncollected in its pump.fun creator vaults, and fees collected into the fee wallet and not yet split. While the pot is empty, the hero shows the lottery's share of that figure in the pot's place, as the Expected lottery pot. Both the stat and the pot refresh themselves every 10 seconds. Coins launched on the pad have their own lottery, shown on their own page.
Until the coin is launched and its address is set, the keeper runs none of this and the home page shows $0.
What a launch is
A launch is one transaction. It creates the coin on pump.fun, sets the payout wallet as creator, and bundles your first buy if you asked for one. If your wallet is short of SOL when it lands, nothing launches: the buy and the launch fail together.
Once the coin is on chain the site records it, usually within a minute. Until then the coin page says a launch is still being recorded.
Before you sign
Where the fees go
Two splits, and both are fixed.
| Of every trade | Share | Goes to |
|---|---|---|
| pump.fun | pump.fun's cut | The platform's share of pump.fun's trading fee, kept by pump.fun |
| Payout wallet | the creator's share | The creator's share of pump.fun's trading fee, accrued in SOL to the coin's payout wallet |
| Of every round | Share | Goes to |
|---|---|---|
| Ops | 10 % | The ops slice, taken off the top of what arrived, before the swap |
| Holders | 76.5 % | The other 90 % is swapped into the basket; 85 % of those coins go to the holders by their share |
| Lottery pot | 13.5 % | The remaining 15 % of those coins go into the coin’s pot; one random holder wins it every ten minutes |
Said in order: 10 % ops off the top, the rest buys the basket, and of the coins bought 85 % goes to holders and 15 % to the lottery pot. The three rows above are those two steps as shares of what arrived.
After graduation the split does not change. The PumpSwap pool's creator share accrues to the same payout wallet and is collected the same way.
What holders earn
Holders earn the basket, not the coin. If a coin pays OFFICIAL, TikTok and X, a holder's wallet fills with OFFICIAL, TikTok and X. The amount depends on two things: how much the coin traded since the last round, and how large the holder's share of supply was at the snapshot.
Shares are by balance at the snapshot slot, which is recorded on every round. A holder who sells right after the snapshot is still paid for that round; a holder who buys right after it waits for the next one. Wallets holding less than $10 of the coin at the snapshot get no share of that round.
Getting paid
There is nothing to claim. The keeper sends each leg of the basket straight to the holder's wallet. If the holder has no token account for a basket coin yet, the pad opens one and pays the rent.
Accruals worth less than 0.005 SOL roll forward. A wallet holding dust is not paid every round; it is paid once its accrual clears the threshold.
Paste a wallet
Choosing the basket
A basket is one to 4 of OFFICIAL, TikTok, X and 67, bought in equal parts. The launcher picks it at launch and it does not change afterwards.
Only those four coins are offered in the picker, each by its mint address. A coin whose Jupiter route dries up later is carried, not replaced; see when a leg is skipped.
What a round does
The keeper runs a round for each coin about every five minutes, and only when at least 0.05 SOL is spendable in the payout wallet and at least one holder's slice would clear the payout floor.
Snapshot
Read every holder's balance at one slot and record the slot on the round.
Slice
Move 10 % of the SOL that arrived since the last round to the ops wallet.
Swap
Swap the rest into the basket through Jupiter, equal parts, one swap per paired coin.
Pot
Set 15 % of each basket coin bought aside in the coin’s lottery pot; it stays in the payout wallet until a draw pays it out.
Pay
Send the other 85 % of each leg to every holder above the threshold, pro rata. Roll the rest forward.
Every step is a transaction on the coin page's rounds table, with a link to it.
The lottery
Every coin on the pad runs a lottery beside its payouts. Each round, 15 % of the basket coins it buys go into the coin's pot instead of the pro-rata share; the pot's coins stay in the payout wallet until they are won. Every ten minutes of the wall clock, one random holder of the coin wins the whole pot.
Tickets
One per wallet holding at least $10 of the coin at its current price. The payout wallet, the ops wallet, the bonding curve, the pool and the keeper’s own wallets never hold one.
The draw
At the first keeper tick of each ten-minute slot. The winner is sha256(blockhash:mint:slot) mod n over the eligible wallets sorted by address; the blockhash and the seed are stored with the draw, so anyone can recompute the pick.
The prize
Every basket coin in the pot worth at least 0.005 SOL, sent in one transaction from the payout wallet. Dust stays in the pot.
The record
One draw per coin per slot, written before the send and marked paid only when the send confirms. A send that fails leaves the pot whole and the next slot draws again. Nothing is paid twice.
A coin page shows its pot by basket coin, the countdown and its last winners; the Rewards page lists every coin's winners. The PumpPair coin's own lottery pays SOL from the lottery wallet instead of basket coins (above) and is the one the home page shows.
When a leg is skipped
If a swap for one basket coin fails, because Jupiter finds no route or the price moves past the slippage, that leg is skipped and its SOL is carried to the next round, where it is bought on its own. The coin page says so on the round, and a stuck coin stalls only its own payouts. The other legs pay as usual.
Custody, plainly
Each coin's payout wallet is a keypair only the keeper holds. The keeper could misdirect funds. Every collect, swap and payout is an on-chain transaction listed on the coin page, and the wallet's balance is public. A program that can only buy the basket and pay holders is the next version.
Launching from your own app
A launch here is three requests and one signature. This site's launcher makes exactly the same calls in the same order, so anything it can do, so can you. There is no key, no registration and no allow list.
What the API will not do is sign for you. It builds the transaction, signs the part only it holds (the coin's own mint key), and hands it back. The launcher's signature is yours to add, so a response leaving this server can do nothing on its own.
Quote
GET /api/launch/quote?sol=…&launcher=… with the first buy in lamports. Returns the coins it buys, the supply, the most SOL a first buy may spend and your balance.
Prepare
POST /api/launch/prepare with launcher, name, symbol, description, logo, basket and an optional devBuy. Returns a partially signed transaction, the coin's mint and its payout wallet.
Confirm
Sign with the launcher wallet, send it, then POST /api/launch/confirm with the mint and the signature so the site records the coin.
// 2. prepare
const res = await fetch("https://pumppair.com/api/launch/prepare", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
launcher: wallet.publicKey.toBase58(),
name: "My Coin",
symbol: "MINE",
description: "What the coin is about.",
logo: logoBase64,
basket: ["FUyZUAF98n3CfyN51gpscGXzsKJgz1o8RpEygy1dgrrP"],
devBuy: "10000000", // lamports, optional
}),
});
const { transaction, mint } = await res.json();
// 3. sign and send
const tx = VersionedTransaction.deserialize(Buffer.from(transaction, "base64"));
const signed = await wallet.signTransaction(tx);
const sig = await connection.sendRawTransaction(signed.serialize());Rate limits
The fields
| Field | Type | Notes |
|---|---|---|
| launcher | string | Your wallet, base58. It pays for and signs the launch, and it is recorded as the launcher. The payout wallet is the on-chain creator. |
| name | string | Up to 32 bytes. |
| symbol | string | One to ten capital letters or digits. |
| description | string | Up to 500 characters, shown on the coin page. |
| logo | string | The picture as base64: a PNG, JPEG or WebP. The site serves it and the metadata the coin points at. |
| basket | string[] | One to 4 distinct mint addresses from the four basket coins. |
| devBuy | string | Optional. Lamports of SOL to spend on your own coin in the launch transaction, at least 0.01 SOL and under the cap the quote reports. |
When it fails
| Status | Body | Meaning |
|---|---|---|
| 400 | basket: … | A mint is not one of the four basket coins, is picked twice, or the list is empty or too long. |
| 400 | symbol: … | The symbol is not one to ten capital letters or digits. |
| 409 | the first buy was priced twice… | The quote and the prepare priced the first buy differently. Try again. |
| 429 | too many launches… | More than fifteen prepares a minute from one address or wallet. |
| 424 | … | pump.fun or the chain did not answer when the launch was being sized. Retry in a minute. |
The numbers
| Value | |
|---|---|
| Pair | SOL, on pump.fun |
| Trading fee | pump.fun's, on the curve and on the PumpSwap pool after graduation |
| Fee split | pump.fun's cut to pump.fun · the creator's share to the payout wallet |
| Round split | 10 % ops off the top · of the coins bought, 85 % holders · 15 % lottery pot (76.5 / 13.5 / 10 of what arrived) |
| Round cadence | About every 5 minutes, when at least 0.05 SOL is spendable |
| Basket | 1 to 4 of OFFICIAL, TikTok, X and 67, equal parts |
| Payout threshold | 0.005 SOL of accrued value; smaller amounts roll forward. Holders under $10 of the coin get no share. |
| Lottery ticket | $10 of the coin at its current price |
| Lottery draw | Every 10 minutes of the wall clock, one random eligible holder, the whole pot |
| PumpPair coin fees | 75 % buybacks and burns · 25 % lottery, in SOL |
| Account rent | ~0.002 SOL per holder, per basket coin. We pay it, not you. |
| Dev buy | Optional first buy in SOL, at least 0.01 SOL, under the cap the quote reports |
What can go wrong
pump.fun changes its creator fee, or stops paying it, and rounds stop. The keeper raises an alert for the operator when a coin's recorded payout wallet is not the one it derives, and when the ops wallet runs low on the SOL that pays every collect and top-up.
A basket coin loses its Jupiter route or a swap keeps failing. That leg is carried and bought on its own in the next round that can.
Holder count explodes. Payouts are threshold-gated, so cost scales with holders who actually earn enough, not with wallets that hold dust.
A holder sells right after the snapshot. Shares are by balance at the snapshot slot, which is the only defensible rule, and the slot is recorded on every round.
The keeper key is custodial in v1, which is why it is stated here in plain words.