Skip to main content

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​

FieldTypeNotes
publicKeystringThe creator wallet. Signs and receives the SOL.
priorityFeenumberSOL. Optional.
jitoTipnumberSOL. 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 →