Launch Types
Creator Fees on the Genesis Bonding Curve
Last updated April 9, 2026
Creator fees are an optional per-swap fee on the Genesis Bonding Curve that accrue to a configured wallet on every buy and sell.
What You'll Learn
- Configuring a creator fee wallet at launch
- Redirecting fees to a specific wallet or agent PDA
- Checking how much has accrued in the bucket
- Claiming accrued fees during the active curve
- Claiming post-graduation fees from the Raydium CPMM pool
Summary
A creator fee is an optional per-swap fee on the Genesis Bonding Curve, applied to the SOL side of every buy and sell. Fees accrue in the bucket account (creatorFeeAccrued) rather than being transferred immediately — collect them via two permissionless instructions.
- Configuration — set
creatorFeeWalletin thelaunchobject at curve creation; defaults to the launching wallet if omitted - Accrual —
creatorFeeAccruedincrements on every swap; fees are not transferred per-swap - Active curve claiming —
claimBondingCurveCreatorFeeV2collects accrued fees while the curve is live - Post-graduation claiming —
claimRaydiumCreatorFeeV2collects fees from the Raydium CPMM pool after the curve graduates
For how creator fees interact with swap pricing and the protocol swap fee, see Theory of Operation — Fee Structure.
Quick Start
Jump to: Configure at Launch · Redirect to Wallet · Agent PDA · Combine with First Buy · Check Accrued · Claim During Curve · Claim After Graduation
- Set
creatorFeeWalletin thelaunchobject when callingcreateAndRegisterLaunch - After launch, read
bucket.creatorFeeAccruedto monitor accumulated fees - Call
claimBondingCurveCreatorFeeV2to collect fees while the curve is active - After graduation, call
claimRaydiumCreatorFeeV2to collect Raydium LP fees
Prerequisites
@metaplex-foundation/genesisSDK installed- A Umi instance configured with your keypair identity — see Launching a Bonding Curve via the Metaplex API
- A funded Solana wallet for transaction fees
Configuring a Creator Fee at Launch
Creator fees are configured in the launch object passed to createAndRegisterLaunch (or createLaunch). The creatorFeeWallet field is optional — if omitted, the launching wallet receives all fees by default. For the full launch flow, see Launching a Bonding Curve via the Metaplex API.
Redirecting Creator Fees to a Specific Wallet
Set creatorFeeWallet to direct accrued fees to any wallet address other than the launching wallet.
1import { createAndRegisterLaunch } from '@metaplex-foundation/genesis/api';
2
3const result = await createAndRegisterLaunch(umi, {}, {
4 wallet: umi.identity.publicKey,
5 launchType: 'bondingCurve',
6 token: {
7 name: 'My Token',
8 symbol: 'MTK',
9 image: 'https://gateway.irys.xyz/your-image-id',
10 },
11 launch: {
12 creatorFeeWallet: 'FeeRecipientWalletAddress...',
13 },
14});
The creator fee wallet is set at curve creation and cannot be changed after the curve is live.
Agent Launches — Automatic PDA Routing
When launching on behalf of a Metaplex agent, the creator fee is automatically routed to the agent's PDA without setting creatorFeeWallet manually. For the full agent launch flow — Core execute wrapping and setToken association — see Create an Agent Token.
Combining Creator Fees with a First Buy
You can configure a creator fee wallet and a first buy together. The first buy is always fee-free — no protocol fee or creator fee applies to that initial purchase. All subsequent swaps pay the normal creator fee.
launch: {
creatorFeeWallet: 'FeeRecipientWalletAddress...',
firstBuyAmount: 0.5, // 0.5 SOL, fee-free for the first buyer
},
Checking Accrued Creator Fees
The creatorFeeAccrued field on the BondingCurveBucketV2 account tracks the total SOL accumulated since the last claim. Read it using fetchBondingCurveBucketV2:
1import {
2 findBondingCurveBucketV2Pda,
3 fetchBondingCurveBucketV2,
4} from '@metaplex-foundation/genesis';
5import { isSome, publicKey } from '@metaplex-foundation/umi';
6
7const genesisAccount = publicKey('YOUR_GENESIS_ACCOUNT_PUBKEY');
8const baseMint = publicKey('TOKEN_MINT_PUBKEY');
9
10const [bucketPda] = findBondingCurveBucketV2Pda(umi, {
11 genesisAccount,
12 bucketIndex: 0,
13});
14
15const bucket = await fetchBondingCurveBucketV2(umi, bucketPda);
16console.log('Creator fees accrued (lamports):', bucket.creatorFeeAccrued);
17console.log('Creator fees claimed to date (lamports):', bucket.creatorFeeClaimed);
18
19// Read the configured creator fee wallet from the bucket extension
20const creatorFeeExt = bucket.extensions.creatorFee;
21const creatorFeeWallet = isSome(creatorFeeExt) ? creatorFeeExt.value.wallet : null;
22console.log('Creator fee wallet:', creatorFeeWallet?.toString() ?? 'none configured');
Claiming Creator Fees During the Active Curve
claimBondingCurveCreatorFeeV2 transfers all accrued creator fees from the bucket to the configured creator fee wallet. Call it at any time while the curve is active.
1import { claimBondingCurveCreatorFeeV2 } from '@metaplex-foundation/genesis';
2import { isSome } from '@metaplex-foundation/umi';
3
4// Read the creator fee wallet from the bucket extension before claiming.
5const creatorFeeExt = bucket.extensions.creatorFee;
6if (!isSome(creatorFeeExt)) throw new Error('No creator fee configured on this bucket');
7const creatorFeeWallet = creatorFeeExt.value.wallet;
8
9const result = await claimBondingCurveCreatorFeeV2(umi, {
10 genesisAccount,
11 bucket: bucketPda,
12 baseMint,
13 creatorFeeWallet,
14}).sendAndConfirm(umi);
15
16console.log('Creator fees claimed:', result.signature);
claimBondingCurveCreatorFeeV2 is permissionless — any wallet can call it, but the SOL is always sent to the configured creator fee wallet, not the caller.
Claiming Creator Fees After Graduation
After the bonding curve graduates, liquidity migrates to a Raydium CPMM pool and creator fees continue to accrue from LP trading activity. The RaydiumCpmmBucketV2 account exposes creatorFeeAccrued and creatorFeeClaimed fields analogous to those on BondingCurveBucketV2. Collect post-graduation fees with claimRaydiumCreatorFeeV2.
1import { claimRaydiumCreatorFeeV2 } from '@metaplex-foundation/genesis';
2
3const result = await claimRaydiumCreatorFeeV2(umi, {
4 genesisAccount,
5 // ... Raydium pool accounts
6}).sendAndConfirm(umi);
Like its bonding curve counterpart, claimRaydiumCreatorFeeV2 is permissionless — any wallet can trigger the claim, but the SOL is always sent to the configured creator fee wallet.
Notes
- Creator fees are accrued in the bucket (
creatorFeeAccrued) on each swap, not transferred immediately — explicitly call the claim instructions to receive them;creatorFeeClaimedtracks the cumulative total claimed to date - Both claim instructions are permissionless: any wallet can trigger them, but the SOL always goes to the configured creator fee wallet, not the caller
creatorFeeWalletdefaults to the launching wallet if not set; it cannot be changed after the curve is created- The first buy mechanism waives all fees (protocol and creator) for the designated initial purchase only; all subsequent swaps pay the normal creator fee
- Creator fees apply to the SOL side of every swap regardless of direction (buy or sell); they do not compound with the protocol swap fee
- For current fee rates, see the Genesis Protocol Fees page
- For swap-side context — reading bucket state, computing quotes, and executing trades — see Bonding Curve Swap Integration
FAQ
What is the default creator fee wallet if creatorFeeWallet is not set?
The default creator fee wallet is the launching wallet — the wallet that signed the createLaunch call. Set creatorFeeWallet explicitly in the launch object to redirect fees to any other address.
Are creator fees transferred on every swap?
No. Creator fees are accrued in the bucket (creatorFeeAccrued) on each swap but are not transferred immediately. Call claimBondingCurveCreatorFeeV2 to collect them during the active curve, and claimRaydiumCreatorFeeV2 after graduation.
Can anyone call claimBondingCurveCreatorFeeV2?
Yes. Both claimBondingCurveCreatorFeeV2 and claimRaydiumCreatorFeeV2 are permissionless — any wallet can trigger the claim, but the SOL is always sent to the configured creator fee wallet, not the caller.
Does the first buy pay creator fees?
No. When a first buy is configured, all fees — protocol swap fee and creator fee — are waived for that one initial purchase. All subsequent swaps pay the normal creator fee.
How do I check how much creator fee has accrued?
Read the creatorFeeAccrued field from the bucket account using fetchBondingCurveBucketV2. See Checking Accrued Creator Fees.
Can I change the creator fee wallet after launch?
No. The creator fee wallet is set at curve creation and cannot be changed after the curve is live.
