Claim Cashback

May 7, 2026 · View on GitHub

The claim_cashback_v2 instruction claims cashback accrued in a user's volume accumulator. It supports both legacy SOL cashback and non-SOL quote mint cashback through the same interface. The instruction is permissionless: user is the cashback recipient, but does not need to sign the transaction.

Accounts

#AccountSeeds / derivationinit_if_needed / SOL cost
1userCashback recipient. For legacy SOL cashback, receives all lamports held above rent-exempt balance in user_volume_accumulator.-
2user_volume_accumulatorPump PDA: seeds [b"user_volume_accumulator", user].-
3quote_mintQuote mint for the cashback being claimed. Pass wrapped SOL, So11111111111111111111111111111111111111112, for legacy SOL cashback.-
4quote_token_programToken program for quote_mint. Pass the legacy SPL Token Program, TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA, for legacy SOL cashback.-
5associated_token_programAssociated Token Program: ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL.-
6associated_user_volume_accumulatorAssociated token account for quote_mint, owned by user_volume_accumulator, using quote_token_program. For legacy SOL cashback, this account may not exist.-
7associated_quote_userAssociated token account for quote_mint, owned by user, using quote_token_program. For legacy SOL cashback, this account may not exist.-
8system_programSystem Program: 11111111111111111111111111111111.-
9event_authorityPump PDA: seeds [b"__event_authority"].-
10programPump program account.-

Instruction Data

The claim_cashback_v2 instruction takes no instruction data arguments.

TS SDK

Claim Legacy SOL-Paired Mint Cashback

Pass wrapped SOL as quoteMint. This claims lamports directly from the user's volume accumulator to user.

import { getPumpProgram } from "@pump-fun/pump-sdk";

const pumpProgram = getPumpProgram(connection);
const quoteMint = NATIVE_MINT;
const quoteTokenProgram = TOKEN_PROGRAM_ID;

const claimCashbackInstruction = await pumpProgram.methods
  .claimCashbackV2()
  .accountsPartial({
    user,
    quoteMint,
    quoteTokenProgram,
  })
  .instruction();

Claim USDC-Paired Mint Cashback

For non-SOL quote mints, pass the quote mint and its token program. This claims tokens from the user's volume accumulator quote ATA to the user's quote ATA.

import { getPumpProgram } from "@pump-fun/pump-sdk";

const pumpProgram = getPumpProgram(connection);
const quoteMint = new PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
const quoteTokenProgram = TOKEN_PROGRAM_ID;

const claimCashbackInstruction = await pumpProgram.methods
  .claimCashbackV2()
  .accountsPartial({
    user,
    quoteMint,
    quoteTokenProgram,
  })
  .instruction();

Rust SDK

The Rust client exposes claim_cashback_v2_instruction. Pass Pubkey::default() (or wSOL) as quote_mint for legacy SOL cashback, or the desired quote mint (e.g. USDC) for non-SOL cashback. quote_token_program must match the quote mint's token program.

Claim Legacy SOL-Paired Mint Cashback

use pump_rust_client::{constants, PumpSdk};
use solana_sdk::pubkey::Pubkey;

let sdk = PumpSdk::new();

let ix = sdk.claim_cashback_v2_instruction(
    user.pubkey(),
    Pubkey::default(),               // quote_mint — default → wSOL
    constants::SPL_TOKEN_PROGRAM_ID, // quote_token_program
);

Claim USDC-Paired Mint Cashback

let usdc = pubkey!("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");

let ix = sdk.claim_cashback_v2_instruction(
    user.pubkey(),
    usdc,                            // quote_mint
    constants::SPL_TOKEN_PROGRAM_ID, // quote_token_program
);