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.
| # | Account | Seeds / derivation | init_if_needed / SOL cost |
|---|---|---|---|
| 1 | user |
Cashback recipient. For legacy SOL cashback, receives all lamports held above rent-exempt balance in user_volume_accumulator. |
- |
| 2 | user_volume_accumulator |
Pump PDA: seeds [b"user_volume_accumulator", user]. |
- |
| 3 | quote_mint |
Quote mint for the cashback being claimed. Pass wrapped SOL, So11111111111111111111111111111111111111112, for legacy SOL cashback. |
- |
| 4 | quote_token_program |
Token program for quote_mint. Pass the legacy SPL Token Program, TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA, for legacy SOL cashback. |
- |
| 5 | associated_token_program |
Associated Token Program: ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL. |
- |
| 6 | associated_user_volume_accumulator |
Associated token account for quote_mint, owned by user_volume_accumulator, using quote_token_program. For legacy SOL cashback, this account may not exist. |
- |
| 7 | associated_quote_user |
Associated token account for quote_mint, owned by user, using quote_token_program. For legacy SOL cashback, this account may not exist. |
- |
| 8 | system_program |
System Program: 11111111111111111111111111111111. |
- |
| 9 | event_authority |
Pump PDA: seeds [b"__event_authority"]. |
- |
| 10 | program |
Pump program account. | - |
The claim_cashback_v2 instruction takes no instruction data arguments.
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();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();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.
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
);let usdc = pubkey!("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
let ix = sdk.claim_cashback_v2_instruction(
user.pubkey(),
usdc, // quote_mint
constants::SPL_TOKEN_PROGRAM_ID, // quote_token_program
);