pumpPumpDocs

Instructions

Collect creator fee

Sweep the bonding curve creator vault and the AMM coin creator vault.


Note: These instructions only apply to coins that do not have a sharing_config — i.e. single-creator-recipient coins. Once a coin's creator vault has been migrated to a sharing_config, fees must be distributed through the Pump Fees program instead, and both instructions below will fail.

Coin creators accrue fees in two separate vaults:

  1. A bonding curve creator vault held by the Pump program, drained via collect_creator_fee_v2.
  2. An AMM coin creator vault held by the Pump AMM program (post-migration), drained via collect_coin_creator_fee.

The two instructions are independent: a creator typically calls both to fully sweep their fees. Unlike the legacy collect_creator_fee, the V2 / AMM variants use a unified account layout that supports both SOL-paired and non-SOL-paired coins.

collect_creator_fee_v2 (Bonding Curve)

The collect_creator_fee_v2 instruction sweeps creator fees out of the bonding curve creator vault into the creator's wallet (for SOL-paired coins) or the creator's token account (for non-SOL-paired coins). It is permissionless: anyone can call it for a given creator.

Accounts

#AccountSeeds / derivationinit_if_needed / SOL cost
1creatorThe coin creator account that receives the fees. Must not be owned by the Pump Fees program (otherwise the vault has been migrated to a sharing_config) and must not be executable.-
2creator_token_accountAssociated token PDA for (creator, quote_token_program, quote_mint). Destination of the token transfer.Expected to be initialized; may be uninitialized when quote_mint is wrapped SOL.
3creator_vaultPump PDA: seeds [b"creator-vault", creator]. Holds the accrued creator fees (either as lamports for SOL-paired coins or as a token-account authority for non-SOL coins).-
4creator_vault_token_accountAssociated token PDA for (creator_vault, quote_token_program, quote_mint). Source of the token transfer.Expected to be initialized; may be uninitialized when quote_mint is wrapped SOL.
5quote_mintQuote mint for the coin. For SOL-paired coins, pass wrapped SOL: So11111111111111111111111111111111111111112.-
6quote_token_programToken program for quote_mint.-
7associated_token_programAssociated Token Program: ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL.-
8system_programSystem Program: 11111111111111111111111111111111.-
9event_authorityPump PDA: seeds [b"__event_authority"].-
10programPump program account.-

When quote_mint is wrapped SOL the program performs a lamport transfer from creator_vault to creator, leaving the vault rent-exempt, and creator_token_account / creator_vault_token_account are unused. For non-SOL quotes the program reads the balance of creator_vault_token_account and transfers it via quote_token_program into creator_token_account.

collect_coin_creator_fee (Pump AMM)

The collect_coin_creator_fee instruction sweeps coin creator fees that have accrued on the Pump AMM out of the coin creator's vault ATA into the coin creator's token account. It is permissionless: anyone can call it for a given coin creator. The coin creator account must not be owned by the Pump Fees program (otherwise the vault has been migrated to a sharing_config).

Accounts

#AccountSeeds / derivationinit_if_needed / SOL cost
1quote_mintQuote mint for the coin. For SOL-paired coins, pass wrapped SOL: So11111111111111111111111111111111111111112.-
2quote_token_programToken program for quote_mint.-
3coin_creatorCoin creator account. Must not be owned by the Pump Fees program.-
4coin_creator_vault_authorityPump AMM PDA: seeds [b"creator_vault", coin_creator]. Authority over coin_creator_vault_ata.-
5coin_creator_vault_ataAssociated token account for quote_mint, owned by coin_creator_vault_authority, using quote_token_program. Source of the transfer.Must be initialized.
6coin_creator_token_accountToken account for quote_mint owned by coin_creator, using quote_token_program. Destination of the transfer.Must be initialized.
7event_authorityPump AMM PDA: seeds [b"__event_authority"].-
8programPump AMM program account.-

Rust SDK

Sweep the bonding curve creator vault, and (if the coin has graduated) the AMM coin creator vault. quote_mint can be wrapped SOL or USDC, pass the matching token program as quote_token_program.

use pump_rust_client::accounts::pump_amm::decode_pool;
use pump_rust_client::constants::NATIVE_MINT;
use pump_rust_client::{constants, pda, PumpSdk};
use solana_sdk::compute_budget::ComputeBudgetInstruction;

let sdk = PumpSdk::new();

// For SOL-paired coins:
let quote_mint = NATIVE_MINT;
let quote_token_program = constants::SPL_TOKEN_PROGRAM_ID;
// For USDC-paired coins, set `quote_mint` to the USDC mint instead
// (token program remains `SPL_TOKEN_PROGRAM_ID`).

let mut ixs = vec![ComputeBudgetInstruction::set_compute_unit_limit(200_000)];

if graduated {
    let pool_creator = pda::pump::pool_authority(&mint).0;
    let pool_address = pda::pump_amm::pool(0, &pool_creator, &mint, &quote_mint).0;
    let pool = decode_pool(&rpc.get_account(&pool_address).await?.data)?;

    ixs.extend(sdk.collect_coin_creator_fee_instructions(
        payer,
        pool.coin_creator,
        quote_mint,
        quote_token_program,
        true,
    ));
}

// 2. Sweep the bonding curve creator vault to `creator`.
ixs.extend(sdk.collect_creator_fee_v2_instructions(
    payer,
    creator,
    quote_mint,
    quote_token_program,
    true,
));

Mirrored from COLLECT_CREATOR_FEE.md in the official docs repository.