Pump Developer Updates
5.02K subscribers
1 file
13 links
Updates regarding all technical related changes that may affect integrations
Download Telegram
Hello. We have released the Pump Program Typescript SDK, which will help you update your integrations for the creator fee update, together with the existing PumpSwap Typescript SDK.
- https://www.npmjs.com/package/@pump-fun/pump-sdk
- https://www.npmjs.com/package/@pump-fun/pump-swap-sdk

We will continue improving on these SDKs in future updates.
Hello. We have deployed the creator fee update on Mainnet to both Pump and PumpSwap programs. We will assist you in updating your integrations to fix the failing txs.
You can ask for help with the creator fee update on this channel: https://t.me/pump_developers
Hello. We deployed an update to Pump program (6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P) to fix sell instructions failing with sum of account balances before and after instruction do not match error. You should see no other disruptions from this update.
Hello. We will do a BREAKING update for both Pump and PumpSwap programs on August 1 at 10:00 AM UTC.

buy instructions on both programs will require 2 new additional writable accounts with the following PDA seeds:

- Pump program (6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P) buy instruction will require 2 new additional writable accounts at 0-based indexes 12 (global_volume_accumulator) and 13 (user_volume_accumulator).
- PumpSwap program (pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA) buy instruction will require 2 new additional writable accounts at 0-based indexes 19 (global_volume_accumulator) and 20 (user_volume_accumulator).

Rust PDA logic for each program:
// Pump program
pub fn global_volume_accumulator_pda() -> Pubkey {
let (global_volume_accumulator, _bump) = Pubkey::find_program_address(
&[b"global_volume_accumulator"],
&Pubkey::from_str("6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P").unwrap(),
);
global_volume_accumulator
}

pub fn user_volume_accumulator_pda(user: &Pubkey) -> Pubkey {
let (user_volume_accumulator, _bump) = Pubkey::find_program_address(
&[b"user_volume_accumulator", user.as_ref()],
&Pubkey::from_str("6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P").unwrap(),
);
user_volume_accumulator
}

// PumpSwap program
pub fn global_volume_accumulator_pda() -> Pubkey {
let (global_volume_accumulator, _bump) = Pubkey::find_program_address(
&[b"global_volume_accumulator"],
&Pubkey::from_str("pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA").unwrap(),
);
global_volume_accumulator
}

pub fn user_volume_accumulator_pda(user: &Pubkey) -> Pubkey {
let (user_volume_accumulator, _bump) = Pubkey::find_program_address(
&[b"user_volume_accumulator", user.as_ref()],
&Pubkey::from_str("pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA").unwrap(),
);
user_volume_accumulator
}


Typescript PDA logic for each program:
// Pump program
const PUMP_PROGRAM_ID = "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P";

export function globalVolumeAccumulatorPda(
programId: PublicKey = PUMP_PROGRAM_ID,
): [PublicKey, number] {
return PublicKey.findProgramAddressSync(
[Buffer.from("global_volume_accumulator")],
programId,
);
}

export function userVolumeAccumulatorPda(
user: PublicKey,
programId: PublicKey = PUMP_PROGRAM_ID,
): [PublicKey, number] {
return PublicKey.findProgramAddressSync(
[Buffer.from("user_volume_accumulator"), user.toBuffer()],
programId,
);
}

// PumpSwap program
const PUMP_AMM_PROGRAM_ID = "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA";

export function globalVolumeAccumulatorPda(
programId: PublicKey = PUMP_AMM_PROGRAM_ID,
): [PublicKey, number] {
return PublicKey.findProgramAddressSync(
[Buffer.from("global_volume_accumulator")],
programId,
);
}

export function userVolumeAccumulatorPda(
user: PublicKey,
programId: PublicKey = PUMP_AMM_PROGRAM_ID,
): [PublicKey, number] {
return PublicKey.findProgramAddressSync(
[Buffer.from("user_volume_accumulator"), user.toBuffer()],
programId,
);
}


On Devnet, both programs have already been updated to require these 2 new writable accounts on buy. Please test your integrations on Devnet and Mainnet and make sure they both work after adding these 2 new accounts.

The latest IDLs for both programs can be found here: https://github.com/pump-fun/pump-public-docs/tree/main/idl and as part of the Typescript SDKs.

You can start appending these 2 new accounts to the programs from now already. Both our Typescript SDKs have been updated with the latest IDL changes:
- https://www.npmjs.com/package/@pump-fun/pump-sdk
- https://www.npmjs.com/package/@pump-fun/pump-swap-sdk
Hello. We added 2 new instructions to both Pump and PumpSwap programs:
- init_user_volume_accumulator, which allows a payer to fund the user_volume_accumulator account rent-exemption lamports. payer can be any pubkey, not necessarily the user pubkey.
- close_user_volume_accumulator, which allows a signing user to close their user_volume_accumulator account and get their rent-exemption lamports back.

buy instruction in each program still requires and re-creates the user_volume_accumulator if it does not exist already. But a user can now close and claim their rent-exemption lamports from user_volume_accumulator account if they want to by using close_user_volume_accumulator.

The latest Anchor IDLs have been published at https://github.com/pump-fun/pump-public-docs/tree/main/idl, also on chain and in the latest Typescript SDK versions:
- https://www.npmjs.com/package/@pump-fun/pump-sdk?activeTab=versions
- https://www.npmjs.com/package/@pump-fun/pump-swap-sdk?activeTab=versions
Hello! Effective Monday, September 1st, both Pump and PumpSwap programs will require 2 additional readonly accounts for all buy and sell transactions.

Required Changes:

Pump program (6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P):
- Buy instruction: Add accounts at indexes 14 (fee_config) and 15 (fee_program)
- Sell instruction: Add accounts at indexes 12 (fee_config) and 13 (fee_program)

PumpSwap program (pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA):
- Buy instruction: Add accounts at indexes 21 (fee_config) and 22 (fee_program)
- Sell instruction: Add accounts at indexes 19 (fee_config) and 20 (fee_program)

PDA Logic and Fee Program PublicKey:

Typescript reference:

const PUMP_PROGRAM_ID = new PublicKey("6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P");
const PUMP_AMM_PROGRAM_ID = new PublicKey("pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA");
const feeProgram = new PublicKey("pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ");

export function pumpFeeConfigPda(): PublicKey {
return PublicKey.findProgramAddressSync(
[Buffer.from("fee_config"), PUMP_PROGRAM_ID.toBuffer()],
feeProgram,
)[0];
}

export function pumpAmmFeeConfigPda(): PublicKey {
return PublicKey.findProgramAddressSync(
[Buffer.from("fee_config"), PUMP_AMM_PROGRAM_ID.toBuffer()],
feeProgram,
)[0];
}


Rust reference:
let fee_program = pubkey!("pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ");
let pump_program = pubkey!("6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P");
let pump_amm_program = pubkey!("pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA");

let pump_fee_config_pda = Pubkey::find_program_address(
&[b"fee_config", &pump_program],
&fee_program,
).0;

let pump_amm_fee_config_pda = Pubkey::find_program_address(
&[b"fee_config", &pump_amm_program],
&fee_program,
).0;


Pump and Pump Swap Fee Logic:
export function calculateFeeTier({
feeTiers,
marketCap,
}: {
feeTiers: FeeTier[];
marketCap: BN;
}): Fees {
const firstTier = feeTiers[0];

if (marketCap.lt(firstTier.marketCapLamportsThreshold)) {
return firstTier.fees;
}

for (const tier of feeTiers.slice().reverse()) {
if (marketCap.gte(tier.marketCapLamportsThreshold)) {
return tier.fees;
}
}

return firstTier.fees;
}

function getFees({
feeConfig,
isPumpPool,
marketCap,
}: {
feeConfig: FeeConfig;
isPumpPool: boolean;
marketCap: BN;
tradeSize: BN;
}): Fees {
if (isPumpPool) {
return calculateFeeTier({
feeTiers: feeConfig.feeTiers,
marketCap,
});
} else {
return feeConfig.flatFees;
}
}

Where isPumpPool is defined as follow:
- For Pump, it means all coins
- For PumpSwap, it means pools who have graduated from Pump

The latest reference is public and can be found here:
- https://www.npmjs.com/package/@pump-fun/pump-sdk?activeTab=code
- https://www.npmjs.com/package/@pump-fun/pump-swap-sdk?activeTab=code

We have made FeeConfig and FeeProgram optional accounts for now and fallback on current fees configuration, but please add them today as it will be mandatory starting next week.

The current Fee rates can be found here, but the values will be updated on Monday, September 1st.
- Pump Fee Config: https://solscan.io/account/8Wf5TiAheLUqBrKXeYg2JtAFFMWtKdG2BSFgqUcPVwTt#anchorData
- Pump Swap Fee Config: https://solscan.io/account/5PHirr8joyTMp9JMm6nW7hNDVyEYdkzDqazxPD7RaTjx#anchorData

Both our Typescript SDKs have been updated with the latest IDL changes:
- https://www.npmjs.com/package/@pump-fun/pump-sdk
- https://www.npmjs.com/package/@pump-fun/pump-swap-sdk
- https://github.com/pump-fun/pump-public-docs/tree/main/idl
We are in the process of reverting. ETA a few minutes.
Changes have been fully reverted.
Pump Developer Updates
Hello! Effective Monday, September 1st, both Pump and PumpSwap programs will require 2 additional readonly accounts for all buy and sell transactions. Required Changes: Pump program (6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P): - Buy instruction: Add accounts…
Hello. We reverted the program changes from the previous message, but we will re-apply the updates tomorrow at 20:00 UTC.

It's important to note the changes described in the message above still need to be implemented and can be done from now, as they only require appending 2 new accounts on buy / sell instructions in both programs.

The updated programs are already deployed on Devnet. You can check that the same integration code works on Devnet and Mainnet before we re-apply the update from the previous message.

The reason so many integrations had problems with this program update is that they have added unused input accounts to buy / sell instructions at the new indexes. You need to remove those accounts or replace them with the 2 new required ones from the update above. As they are currently not used, they will not break anything.

A common pitfall is that integrations added the accumulator accounts to both buy and sell transactions, even if we have specified adding them ONLY on buy instructions.

The latest IDL for both programs is deployed everywhere (including on chain) and as part of our SDKs:
- https://www.npmjs.com/package/@pump-fun/pump-sdk
- https://www.npmjs.com/package/@pump-fun/pump-swap-sdk
- https://github.com/pump-fun/pump-public-docs/tree/main/idl
Screenshot 2025-08-29 at 3.38.58 PM.png
165.1 KB
Hello. We pushed again the update to both Pump and PumpSwap programs which adds the 2 new additional accounts on buy / sell.

On Monday, September 1, 20:00 UTC, these 2 accounts will become mandatory and the programs fee structure will change from the existing one to a dynamic fee structure depending on the current coin market cap.

The new fee structure code is present in both our Typescript SDKs:
- https://www.npmjs.com/package/@pump-fun/pump-sdk?activeTab=code
- https://www.npmjs.com/package/@pump-fun/pump-swap-sdk?activeTab=code

All technical details about this update can be found here: https://github.com/pump-fun/pump-public-docs/blob/main/docs/FEE_PROGRAM_README.md

We will use the attached fee tiers structure starting from Monday.

In order to avoid possible issues created by the new fee structure, until you make sure it's implemented correctly, you can increase the slippage tolerance on buy / sell instructions as a temporary mitigation.
Pump Developer Updates
Screenshot 2025-08-29 at 3.38.58 PM.png
Hello. We already pushed on Devnet the update which makes the 2 new fee accounts on buy / sell required. This will be pushed to Mainnet on Monday too.
Hi all, today at 20:00 UTC we will deploy a change that makes the two additional accounts for the new fee structure mandatory — these accounts are currently optional. Shortly after verifying that this works we will deploy the fee schedule change outlined above. There will be 1 hour of notice before the fee schedule changes go live.
Pump Developer Updates
Screenshot 2025-08-29 at 3.38.58 PM.png
Hello. The new fee schedule from here has been deployed on Devnet already and can be tested there
The pump bonding curve contract and the pump swap contract were upgraded earlier today at: October 17, 2025 16:47:00 UTC. It was a routine upgrade with no breaking changes.
Hi all, we will be doing a breaking program upgrade on pump swap on Tuesday, 4th November, 14:00 UTC. As part of the change, we require you to mark the pool account at account index 1 in pump swap buys and sells as mutable ( as opposed to readonly ). Please make the changes as soon as possible, your integration will not break if you make it mutable before we do the program upgrade.

IDL change for reference: https://github.com/pump-fun/pump-public-docs/commit/ff9cbf8238b4e459864fed415465cc8163113d1c


SDK version with update: @pump-fun/pump-swap-sdk@1.9.0
The pump bonding curve contract and the pump swap contract were upgraded earlier today at: November 5, 5:02pm UTC. The bonding curve upgrade was a routing upgrade with no breaking changes but Pump swap has breaking changes as mentioned earlier.
Hi all, On 11th November at 12:00 UTC, we will enable 2 new breaking features.
1. New token creation standard with token2022 called create_v2
2. Mayhem Mode

Please refer here for the updated IDLs and IDL types: https://github.com/pump-fun/pump-public-docs

Please note:
1. Any coin created with the usual create instruction and owned by the legacy token program can be traded the same way as before. This is not a breaking change for trading or creating such coins, you can continue to use the same accounts and instruction data.
2. Any new coin created after 11th November at 12:00 UTC with create_v2 will be owned by the Token2022 program. Creating and trading such accounts will need changes as described here: https://github.com/pump-fun/pump-public-docs/blob/main/README.md

Program is updated on devnet for testing with both features enabled.

SDKs for both bonding curve and pump swap are updated

https://www.npmjs.com/package/@pump-fun/pump-sdk
https://www.npmjs.com/package/@pump-fun/pump-swap-sdk
Hi all, Mayhem mode and create v2 will now be enabled on 12th November 12:00 UTC instead of 11th November.
Hi all,

We have pushed a non breaking program upgrade on the bonding curve and pump swap program.
Changes as part of this upgrade:

1. The global_volume_accumulator account on the buy instruction of bonding curve and pump swap do not need to be mutable anymore.
2. New fee recipients for mayhem mode: We have introduced 7 new fee recipients that can be used for the buy and sell instruction that can be used when bonding_curve.is_mayhem_mode = true and pool.is_mayhem_mode = true. They can be found in the global and global_config accounts in bonding curve and pump swap respectively.

Any of the following 8 fee recipients can now be used:
[
'GesfTA3X2arioaHp8bbKdjG9vJtskViWACZoYvxp4twS',
'4budycTjhs9fD6xw62VBducVTNgMgJJ5BgtKq7mAZwn6',
'8SBKzEQU4nLSzcwF4a74F2iaUDQyTfjGndn6qUWBnrpR',
'4UQeTP1T39KZ9Sfxzo3WR5skgsaP6NZa87BAkuazLEKH',
'8sNeir4QsLsJdYpc9RZacohhK1Y5FLU3nC5LXgYB4aa6',
'Fh9HmeLNUMVCvejxCtCL2DbYaRyBFVJ5xrWkLnMH6fdk',
'463MEnMeGyJekNZFQSTUABBEbLnvMTALbT6ZmsxAbAdq',
'6AUH3WEHucYZyC61hqpqYUWVto5qA5hjHuNQ32GNnNxA'
]


Updated IDLs can be found here: https://github.com/pump-fun/pump-public-docs