How the receipt is calculated
1. Finding trades
We read the wallet's parsed transaction history and keep the transactions the wallet signed that went through Pump.fun (bonding curve) or PumpSwap. For each one we take the change in the wallet's token balance (what it bought or sold) and the change in its SOL balance.
2. Fees per trade
The SOL amount that moved already includes the fee, so we back it out of the amount. Rates below are the published schedule and live in one config file. PumpSwap fees depend on the token's market cap, which we derive from each trade's own price; only the bands confirmed from public schedules are listed, and a trade between two listed bands uses the lower one.
| Venue | Protocol | Creator | LP |
|---|---|---|---|
| Bonding curve | 0.95% | 0.30% | 0.00% |
| PumpSwap ≥ 0 SOL cap | 0.93% | 0.30% | 0.02% |
| PumpSwap ≥ 420 SOL cap | 0.05% | 0.95% | 0.20% |
| PumpSwap ≥ 9,820 SOL cap | 0.05% | 0.70% | 0.20% |
| PumpSwap ≥ 34,380 SOL cap | 0.05% | 0.45% | 0.20% |
| PumpSwap ≥ 63,860 SOL cap | 0.05% | 0.22% | 0.20% |
| PumpSwap ≥ 98,240 SOL cap | 0.05% | 0.05% | 0.20% |
The headline number, fees given to Pump.fun, is protocol plus creator fees. LP fees go to liquidity providers, so we show them but keep them out of the headline. Priority fees and Jito tips are shown separately.
3. PnL
For each token: SOL received from sells, plus the current value of what is still held, minus SOL spent on buys. Current value uses the best SOL pair price on DexScreener. A token with no live price is counted at zero. PnL without fees adds the fees back.
4. What this can get wrong
- Fee rates change. If Pump.fun changes its schedule, edit the config; old trades under older rates are an approximation.
- The first buy of a token subtracts a fixed token-account rent of about 0.002 SOL. Rent refunded on closing an account isn't added back.
- Very long histories are capped; the receipt tells you when that happens.
- Trades routed through aggregators or other wallets you own aren't attributed to this address.
5. Rug score
Each signal has a weight; fired signals add points and the sum is capped at 100. Bands: Low under 25, Medium 25 to 49, High 50 to 74, Extreme 75+. It is a heuristic index, not a calibrated probability, and the weights have not been validated against labelled past rugs.
- Liquidity under $1k (+25) or $5k (+12). Price down 80%+ (+20) or 50%+ (+10). Sells over twice buys (+8). No socials (+8). Market cap over 100× liquidity (+10).
- Mint authority active (+25). Freeze authority active (+15). Largest wallet over 20% (+20) or 10% (+10), curve and pool accounts excluded. Top 10 over 50% (+15) or 35% (+8).
- Needs the data key: 6+ of the first 10 buyers sold 80%+ (+15) or 3+ (+8). Top 3 buyers over half the buy volume (+10).
If a signal can't be checked, it adds nothing and the score is shown as a floor (≥). It cannot see the dev's identity, bundled wallets, off-chain activity, or anything after the data was read.
Public data API: /api/receipt/<wallet> and /api/rug/<ca> return the full numbers as JSON.