How the money moves.
Plain description of what Pump4Good does on-chain, what it costs, and what can go wrong. We do not run any smart contract of our own — only the pump.fun program and the Donate.gg Donation Relay.
The flow
you ──0.035 SOL──► vault (fresh wallet per coin)
│ tx1 create coin on pump.fun (creator = vault)
│ + create fee sharing config
│ tx2 create donation PDA, set the split:
│ [ donation PDA : … ]
│ tx3 unused deposit → back to you
│ early fees → donation PDA
▼ vault key deleted by us (off-chain)
traders ──trade──► pump.fun ──creator fee──► sharing config
│ crank every few minutes (permissionless)
│ 1) distribute fees → donation PDA
│ 2) crank donation PDA → Donate.gg relay
▼
Donate.gg relayer swaps to USDC and pays the charity
(batches of at least 1 USDC)- You pick a charity that is verified and onboarded on Donate.gg, and name your coin.
- You sign one transaction: a deposit of about 0.035 SOL to a brand-new vault wallet created for this coin.
- The vault creates the coin on pump.fun and becomes its creator. pump.fun's native fee sharing is turned on.
- The fee split is set on-chain: … to the charity's donation PDA (derived from the mint and the charity's Donate.gg config). If the platform fee is above 0%, the platform wallet is the only other shareholder.
- Whatever is left of the deposit goes back to your wallet, and we delete the vault's private key.
Who can change the split
The split lives in pump.fun's fee sharing config for the coin, on-chain, not in our database. Its shareholders are public: open the sharing config link on any coin page and you see exactly where creator fees go right now.
That config has an admin, and the admin can edit the split. For Pump4Good coins the admin is the coin's one-off vault wallet. pump.fun's current program does not let us revoke that admin, so the config stays editable by whoever holds the vault key. We delete the vault key right after the lock and the refund.
Be clear about what that means: the deletion is a promise from us. It cannot be proven on-chain. What you can verify, any time, is the current split. If it ever changed, it would show up in the sharing config and the coin page would flag a mismatch.
Every coin page has a Proof of lock panel with Solscan links to the mint, the sharing config, the donation PDA, the vault, and the create / lock / refund transactions, plus what our backend read from the config: its version, whether the admin is revoked, and whether the shareholders match.
Fees before the lock
There are a few seconds between creating the coin and locking the split, and snipers can trade in that window. The fees from those trades are paid to the old shareholder — the vault. We measure exactly how much the vault gained and forward it to the donation PDA in the refund transaction. These show up as “early fees forwarded” on the coin page.
The crank
Fees do not move by themselves. Every few minutes our worker calls two permissionless instructions for every live coin: distribute_creator_fees (sharing config → donation PDA) and crank_donation_fee_pda (donation PDA → Donate.gg relay). Anyone could call them; we pay the gas from a separate crank wallet. The platform never holds your coin's fees. Small balances are skipped until they are worth more than the gas.
Settlement
The last hop is done by Donate.gg. Their Donation Relay program (RLAYHr9TRFcKB2ubYQhspcnXiaGpaVzNQvHytt47RZu, audited by Halborn) collects the funds; an off-chain Donate.gg relayer closes each epoch, swaps to native USDC on Solana and pays the charity. A batch is only paid out once it reaches at least 1 USDC, so small amounts can wait.
Fees
| who | how much |
|---|---|
| pump.fun creator fee | … goes to the cause. The rate itself is set by pump.fun, not by us. |
| Pump4Good | … of creator fees right now. Any platform share is a second shareholder in the on-chain split, visible in the sharing config, on every coin page and in the lock tx. Each coin keeps the rate it launched with. |
| Donate.gg settlement | 3% when the charity's own Donate.gg config is used (what we use). 20% for configs created through a partner API key. The exact value for each config is public at GET /configs/{id}/fee and linked on the coin page. |
| Crank gas | Paid by the platform from its crank wallet. |
| Launch deposit | ~0.035 SOL covers pump.fun create costs, rent and transaction fees. The unused part is refunded automatically. |
Risks
- It is a memecoin. The price can go to zero. Buying it is not a donation and not an investment; only the creator fee from trading goes to the charity. Not financial advice.
- Settlement is off-chain. The final swap and payout are done by Donate.gg's relayer. Batches wait until they reach at least 1 USDC.
- Charities can be disabled. If Donate.gg disables a charity, its existing config keeps accepting funds (mappings are permanent), but the payout depends on Donate.gg.
- Funds may sit with the charity. Independent observers (nonprofitnewsfeed.com) have reported that some crypto donations stay in charity wallets for a long time before being withdrawn. That is outside our control, but you should know about it.
- We depend on pump.fun and Donate.gg. If either changes its programs or APIs, routing could pause. Fees already in the sharing config stay there until the next successful crank.
- The split is editable in principle. The sharing config's admin is the vault key, and pump.fun does not let us revoke it. We delete that key after the lock, but you have to trust us on that. You can always check the current shareholders on-chain.
- pump.fun can reassign a coin's creator. The pump.fun program has an admin instruction (
admin_cto, “community takeover”) that lets pump.fun's own admin change who the creator of a coin is. If they used it on a Pump4Good coin, future creator fees could stop going to the cause. This is outside our control. - Our crank can stop. If our worker is down, fees accumulate on-chain. The instructions are permissionless, so anyone can push them.
FAQ
Does Pump4Good ever hold the fees?+
No. Fees go from pump.fun's sharing config to the donation PDA to the Donate.gg relay. Our crank wallet only pays gas.
Can the creator change the charity later?+
Not the creator: your wallet never controls the split. The only key that can edit it is the coin's vault key, which we delete after the refund. pump.fun doesn't let us revoke it on-chain, so that part is a promise — but the current split is always visible in the sharing config.
Do I get creator fees as the launcher?+
No. Creator fees go to the cause (minus the platform share, if any, shown on each coin page). You get your unused deposit back.
Which wallets work?+
Any Solana wallet that supports Wallet Standard — Phantom, Solflare, Backpack and others.
How do I verify a coin?+
Open its page, go to Proof of lock and open the sharing config on Solscan. Its shareholders are the live split: the donation PDA (and the platform wallet, if the platform fee is above 0%).
Why do donations show up in runs, not per trade?+
Fees are collected per trade but pushed in batches by the crank every few minutes, then settled by Donate.gg in USDC batches of at least 1 USDC.
Ready to go live?
start a new coin →