Router

Documentation

Everything a fee module does.

Router launches a coin on Pump.fun and plugs its creator fees into one module. This page explains every step, from the transactions you sign to the exact rule each module follows every hour.

§ 01

Overview

A normal Pump.fun coin, with one change: its creator fees have a job.

Every trade on Pump.fun pays a small creator fee. Normally it goes to whoever launched the coin. On Router, you choose a module at launch and the fee goes to that module instead. The module then does the same thing every hour — pay holders, burn supply, buy an NFT floor, fund a treasury — and every action is an on-chain transaction listed on the coin's page.

The coin itself trades on Pump.fun exactly like any other: same bonding curve, same graduation. Only where the creator fee ends up is different.

  1. 01TradeSomeone buys or sells on Pump.fun
  2. 02Creator feePump.fun sets aside the creator share
  3. 03Fee configPump.fun’s fee-sharing config routes it
  4. 04Module walletCollected every hour
  5. 05ExecuteSwap · credit · burn · buy · send
§ 02

Launching

You approve once in your wallet. Up to three transactions land in order.

  1. 1

    Fill in the coin and pick a module

    Name, ticker, image, links and the module with its settings. Settings are checked on the server before anything is built.
  2. 2

    The server prepares the launch

    The image and metadata are pinned to IPFS through Pump.fun, a fresh mint address is generated, and the coin's module wallet is derived from that mint. Then the transactions are built.
  3. 3

    Create transaction

    Creates the coin on Pump.fun with you as creator, and sends 0.01 SOL of fuel to the module wallet so it can pay its own network fees.
  4. 4

    Fee-sharing transaction

    Creates Pump.fun’s fee-sharing config for the coin and moves 100% of the creator fee from you to the module wallet — or, for Creator Fee Split, directly to your recipients.
  5. 5

    Optional initial buy

    Up to 10 SOL, built against the fee-sharing config so it works right after the share lands.
  6. 6

    Sign once, verified before sending

    Your wallet signs all transactions in one approval. The server checks each signed transaction matches exactly what it built, then sends them one after another and waits for each to land.
POST /api/launch/prepare
{
  "name": "Modded",
  "symbol": "MOD",
  "description": "Every trade buys BTC for holders.",
  "launcher": "<YOUR_WALLET>",
  "module": "earn_btc",
  "config": { "minHold": 100000 },
  "buySol": 0.5,
  "imageType": "image/png",
  "imageBase64": "<base64>"
}
§ 03

Fee routing

Routing is done by Pump.fun itself, not by a promise from us.

Pump.fun has a native fee-sharing config: a per-coin account that decides who receives the creator fee. At launch, the config is created and the only shareholder is set, so Pump.fun sends the fees there on every distribution.

Every module except split

100% → module wallet

One wallet per coin. The engine collects into it and runs the module from there.

Creator Fee Split

Up to 10 wallets, straight from Pump.fun

Recipients are written into the config itself. No module wallet ever holds these fees.

§ 04

The hourly engine

At five past every hour, each live coin runs one cycle.

  1. 1

    Pick due coins

    Coins that are confirmed, correctly routed, and have not run in the last 50 minutes. Each coin is claimed before it runs, so two runs can never overlap.
  2. 2

    Collect

    If at least 0.005 SOL of creator fees is waiting on Pump.fun, the module wallet triggers the distribution and receives it.
  3. 3

    Work out what is spendable

    Wallet balance, minus a 0.008 SOL reserve for network fees, minus anything already owed to holders.
  4. 4

    Wait or act

    Below 0.02 SOL spendable, the module waits for more fees instead of wasting network fees on dust. Above it, the module runs.
  5. 5

    Log everything

    Every collect, swap, credit, burn, buy and transfer is recorded with its transaction signature and shown on the coin page.
Engine parameters
ScheduleHourly, at :05
Minimum collect0.005 SOL
Reserve kept0.008 SOL

Pays transaction fees and token-account rent.

Minimum to act0.02 SOL
SwapsJupiter

Buy & Burn allows up to 5% slippage.

§ 05

Modules

What each module does, and the exact rule the engine applies.

M-01

Earn SOL

Rewards

Creator fees are paid out to holders in SOL.

  • SOL already credited but not yet claimed is set aside first; it belongs to holders and is never spent again.
  • The rest is credited pro rata to eligible holders. Nothing is swapped.
Minimum holdingLaunch with M-01
M-02

Earn BTC

Rewards

Creator fees are swapped to cbBTC and paid out to holders.

  • The spendable balance is swapped SOL → cbBTC on Jupiter, then the cbBTC received is credited pro rata.
  • Swap and credit are logged as separate events with their own transactions.
Minimum holdingLaunch with M-02
M-03

Earn ZEC

Rewards

Creator fees are swapped to ZEC and paid out to holders.

  • The spendable balance is swapped SOL → ZEC (Solana SPL ZEC) on Jupiter, then credited pro rata.
  • Holders claim ZEC to their Solana wallet.
Minimum holdingLaunch with M-03
M-04

Earn USDC

Rewards

Creator fees are swapped to USDC and paid out to holders.

  • The spendable balance is swapped SOL → USDC on Jupiter, then credited pro rata.
  • Useful when holders want a stable payout.
Minimum holdingLaunch with M-04
M-05

Buy & Burn

Supply

Creator fees buy the token back and burn it.

  • The configured share is swapped SOL → your token on Jupiter with 5% max slippage.
  • Every token received is burned in the following transaction; the burn transaction is the receipt.
  • Anything not used for buybacks (above 0.001 SOL) is sent to the launch wallet.
Share used for buybacksLaunch with M-05
M-06

NFT Sweep

Supply

Creator fees accumulate and buy the floor of an NFT collection.

  • The collection floor is read from Magic Eden each cycle.
  • When the spendable balance covers the cheapest listing, it is bought and held by the module wallet.
  • Until then, fees keep accumulating — no partial buys.
Magic Eden collection symbolLaunch with M-06
M-07

DCA

Allocation

Every cycle, fees are swapped into one asset and sent to a wallet.

  • The full spendable balance is swapped into the chosen asset each cycle.
  • The asset is sent to the destination wallet, or to the launch wallet if none was set.
Asset · Destination walletLaunch with M-07
M-08

Holder Lottery

Rewards

Fees build a pot. One holder wins it, weighted by balance.

  • Fees build up until the draw interval has passed since the last draw (or since launch).
  • Eligible holders are snapshotted; the launch wallet is excluded as well.
  • A winner is picked weighted by balance from a finalized blockhash, and the whole pot is sent in SOL.
Draw every · Minimum holdingLaunch with M-08
M-09

Creator Fee Split

Allocation

Fees are split between up to 10 wallets, enforced by Pump.fun itself.

  • Recipients are written straight into Pump.fun’s fee-sharing config at launch — the module wallet never holds these fees.
  • The engine only triggers Pump.fun’s permissionless distribution each hour; Pump.fun pays every recipient.
M-10

Treasury Builder

Allocation

Fees are collected into a treasury, part held in SOL and part in USDC.

  • The configured share is swapped SOL → USDC on Jupiter.
  • USDC and the remaining SOL are sent to the treasury wallet in one transaction.
Treasury wallet · Share converted to USDCLaunch with M-10
M-11

Earn ETH

Rewards

Creator fees are swapped to ETH and paid out to holders.

  • The spendable balance is swapped SOL → ETH (Wormhole, 8 decimals) on Jupiter, then credited pro rata.
  • Holders claim ETH to their Solana wallet.
Minimum holdingLaunch with M-11
M-12

Earn JUP

Rewards

Creator fees are swapped to JUP and paid out to holders.

  • The spendable balance is swapped SOL → JUP on Jupiter, then credited pro rata.
  • Holders claim JUP to their Solana wallet.
Minimum holdingLaunch with M-12
M-13

Earn BONK

Rewards

Creator fees are swapped to BONK and paid out to holders.

  • The spendable balance is swapped SOL → BONK on Jupiter, then credited pro rata.
  • The minimum claim is 100 BONK.
Minimum holdingLaunch with M-13
M-14

Earn WIF

Rewards

Creator fees are swapped to WIF and paid out to holders.

  • The spendable balance is swapped SOL → WIF on Jupiter, then credited pro rata.
  • Holders claim WIF to their Solana wallet.
Minimum holdingLaunch with M-14
M-15

Whale Club

Rewards

Only the biggest holders get paid — the top N wallets share the fees in SOL.

  • Unclaimed SOL already credited is set aside first, exactly like Earn SOL.
  • Holders are ranked by balance (the launch wallet excluded) and only the top N are credited, pro rata among themselves.
M-16

Multi-Raffle

Rewards

Fees build a pot, then several holders win an equal slice of it.

  • Fees build up until the draw interval has passed since the last raffle (or since launch).
  • Distinct winners are picked one by one, weighted by balance, each seeded by the same finalized blockhash plus its index.
  • The pot is split equally and every winner is paid in a single transaction. If a slice would be below rent, the draw waits.
Winners per draw · Draw every · Minimum holdingLaunch with M-16
M-17

Fee Stream

Allocation

Every cycle, all fees are streamed in SOL to one wallet — a charity, a DAO, a dev fund.

  • The full spendable balance is sent in SOL to the destination wallet every cycle.
  • Nothing is swapped or held back beyond the fee reserve.
Destination walletLaunch with M-17
M-18

Burn + Earn

Hybrid

One cycle, two outcomes: part of the fees burns supply, part pays holders in SOL.

  • The burn share buys the token on Jupiter (5% max slippage) and burns everything received.
  • The holder share is credited pro rata in SOL; unclaimed SOL is always reserved.
  • If no holder is eligible yet, the holder share waits in the wallet. Only the remainder above both shares goes to the launch wallet.
Share burned · Share to holders · Minimum holdingLaunch with M-18
§ 06

Holder rewards

How the Earn modules decide who gets what. Drag the sliders.

Each cycle, the module reads every wallet holding the token. It skips the bonding curve, the module wallet, and anyone below the coin's minimum holding. The spendable amount is then split in proportion to balance.

Credits are recorded in a ledger rather than sent one by one — sending to thousands of wallets every hour would burn the rewards on network fees. Credits add up across cycles until you claim.

Example pro-rata payout
WalletHoldingShareCredited
Bonding curve612,000,000skipped · curve—
7xKp…a91Q38,000,00057.45%0.689342 SOL
Hn2c…Rt4v21,500,00032.50%0.390023 SOL
Module wallet9,000,000skipped · module wallet—
4bWe…p0Lm6,200,0009.37%0.112472 SOL
Qz8u…Ke3s450,0000.68%0.008163 SOL
Dd1r…Yy7n80,000skipped · below minimum—

Example wallets. 4 of 7 addresses qualify; payouts are rounded down to the smallest unit, so the module never credits more than it holds.

§ 07

Claiming

Prove you own the wallet with a signed message. The module pays the network fee.

  1. 1

    Look up your balance

    Paste your wallet on the Claim page, or call the balances endpoint below.
  2. 2

    Sign a message

    Your wallet signs a short text message naming the token, wallet, asset and time. It is not a transaction and costs nothing.
  3. 3

    Get paid

    The module wallet sends your full available balance to the same wallet that signed. Only one claim per token and asset can be in flight at a time.
Minimum claim per asset
Minimum SOL0.001 SOL
Minimum cbBTC0.00001 cbBTC
Minimum ETH0.00001 ETH
Minimum ZEC0.001 ZEC
Minimum USDC0.1 USDC
Minimum JUP0.1 JUP
Minimum BONK100 BONK
Minimum WIF0.1 WIF
import bs58 from 'bs58'

const time = new Date().toISOString()
const message = [
  'Router claim',
  `mint: ${mint}`,
  `wallet: ${wallet}`,
  `asset: ${asset}`, // SOL | BTC | ZEC | USDC
  `time: ${time}`,
].join('\n')

const { signature } = await window.phantom.solana.signMessage(
  new TextEncoder().encode(message),
  'utf8',
)

const res = await fetch('https://www.routedpad.app/api/claim', {
  method: 'POST',
  headers: { 'content-type': 'application/json' },
  body: JSON.stringify({ mint, wallet, asset, time, signature: bs58.encode(signature) }),
})
console.log(await res.json())
§ 08

Lottery fairness

The draw is seeded by the chain, not by us.

When a draw is due, the module snapshots eligible holders (the launch wallet is excluded) and takes a recent finalized blockhash. It hashes blockhash:mint with SHA-256 and picks the wallet where that number lands on the stacked balances. Bigger holding, bigger slice — one ticket per token.

The blockhash, winner and entrant count are logged with the payout, so anyone can re-run the draw.

Verify a draw
import { createHash } from 'node:crypto'

// The lottery event records the seed blockhash, the winner and the entrant count.
// Rebuild the eligible holders (wallet + raw token amount) at the draw's slot,
// in the same order, and the same seed must land on the same winner.
function pick(holders: { owner: string; amount: bigint }[], blockhash: string, mint: string) {
  const supply = holders.reduce((s, h) => s + h.amount, 0n)
  const digest = createHash('sha256').update(`${blockhash}:${mint}`).digest('hex')
  const r = BigInt('0x' + digest) % supply

  let acc = 0n
  for (const h of holders) {
    acc += h.amount
    if (r < acc) return h.owner
  }
}
§ 09

Custody & trust

What is enforced by Pump.fun, and what runs on our servers.

Enforced on chain

  • Where creator fees go (Pump.fun's fee-sharing config).
  • Creator Fee Split payouts — fully non-custodial.
  • Every action's transaction, visible on Solscan.

Run by Router

  • Module wallet keys, derived per coin from a server secret.
  • The hourly engine and the holder credit ledger.
  • Claim payouts from the module wallet.
§ 10

API

Public, keyless JSON endpoints. Amounts are strings in base units.

Endpoints
GET /api/claim?wallet=Balances

Credited and available per token and asset. Add &mint= for one token.

POST /api/claimClaim

Body: mint, wallet, asset, time, signature (base58).

POST /api/launch/prepareBuild launch

Returns unsigned transactions for your wallet to sign.

POST /api/launch/confirmSend launch

Verifies the signed transactions and sends them in order.

GET /api/tokens/[mint]/candlesPrice candles
GET /api/tokens/[mint]/tradesRecent trades
curl "https://www.routedpad.app/api/claim?wallet=<YOUR_WALLET>"
§ 11

Limits

The numbers that shape every launch and payout.

Limits
Ticker2–10 letters or numbers
ImagePNG, JPG, GIF or WebP, under 4 MB
Initial buy0 – 10 SOL
Module fuel0.01 SOL

Paid by the launcher, used by the module for network fees.

Split recipients1 – 10 wallets, shares total 100%
Lottery interval1 – 168 hours
Rate limitsPrepare 8/min · Claim 10/min · Balances 60/min

Per IP.

§ 12

FAQ

Can I change the module after launch?
No. The fee-sharing config is set once at launch, so the module is fixed for the life of the coin.
What happens when the coin graduates?
Creator fees keep flowing through Pump.fun’s fee-sharing config after migration, so the module keeps running.
Do I need to hold forever to keep my rewards?
No. Credits are yours once recorded. Selling stops future credits, not ones you already earned.
Why was nothing paid this hour?
Either less than 0.005 SOL of fees was waiting, or the spendable balance was under 0.02 SOL. It carries over to the next hour.
Is there a Router fee?
The module receives 100% of the creator fee. Pump.fun’s own protocol fees are unchanged.