Claim Creator Fees
pump.fun pays coin creators a share of every trade, before graduation into the bonding curve's creator vault and after graduation into a PumpSwap vault. This call reads both vaults for a creator and returns one unsigned transaction that collects whatever is there. Legs with nothing to claim are left out; if both are empty the call answers 400.
POST https://sol.shrine.trade/api/claim-creator-fees
Request
| Field | Type | Notes |
|---|---|---|
publicKey | string | The creator wallet. Signs and receives the SOL. |
priorityFee | number | SOL. Optional. |
jitoTip | number | SOL. Optional. |
Response
{
"tx": "<base64 unsigned transaction>",
"blockhash": "…",
"pumpfunLamports": 123456789,
"pumpswapLamports": 0
}
pumpfunLamports is what the bonding-curve vault holds above rent; pumpswapLamports is the WSOL in the PumpSwap vault, unwrapped to SOL by the transaction. No platform fee.
Example
Build, sign, send through the relay. The relay broadcasts through our own Solana endpoint, so the script needs no RPC.
import { Keypair, VersionedTransaction } from "@solana/web3.js";
import bs58 from "bs58";
const wallet = Keypair.fromSecretKey(bs58.decode("<your wallet private key, base58>"));
// Everything the creator wallet can claim, on the curve and on PumpSwap.
const { tx } = await (await fetch("https://sol.shrine.trade/api/claim-creator-fees", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({ publicKey: wallet.publicKey.toBase58() }),
})).json();
const transaction = VersionedTransaction.deserialize(Buffer.from(tx, "base64"));
transaction.sign([wallet]);
const sent = await (await fetch("https://sol.shrine.trade/api/send", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({ signedTx: Buffer.from(transaction.serialize()).toString("base64") }),
})).json();
console.log(sent.status, `https://solscan.io/tx/${sent.signature}`);
StonkFun coins
A coin launched on StonkFun earns its creator fees in the coin's quote asset, and the claim goes through StonkFun's flow instead. POST https://sol.shrine.trade/api/stonkfun/claim-fees with { "publicKey": "<creator wallet>", "mint": "<coin>" } returns an unsigned transaction, valid for 90 seconds, an intentId, and what is claimable in the quote and the coin. Only the wallet holding the coin's fee key can claim; anyone else gets a refusal. Sign it and hand it back to POST /api/stonkfun/claim-fees/submit as { "publicKey", "mint", "intentId", "signedTransaction" }. Resubmitting a claim that already went through returns the original signature with alreadySubmitted: true. StonkFun allows 20 claim quotes a minute per IP.
Try it
Read-only until you sign. Paste a creator wallet to see what is claimable and get the transaction.
LimitsFree 1 req/sLite 5 req/sDeveloper 10 req/sSee plans →