How it works
From a pump.fun trade to a payout: distribute, settle, cranks, keeper.
Three transactions put a coin on Feebric: one creates the vault with its rules, one (signed by the coin creator) points pump.fun at it, and from then on every trade's creator fee follows the rules. This page follows the money.
1. pump.fun pays the vault
pump.fun collects creator fees on every trade of a coin, on the bonding curve and later on the PumpSwap pool. Who receives them is defined by the coin's fee sharing config: a list of up to ten shareholders with basis-point shares. The coin creator sets the vault as the single 100% shareholder with pump.fun's update_fee_shares_v2.
Two things to know about pump.fun's side of this:
update_fee_shares_v2is one-shot. After it, pump.fun's shareholder list for that coin can never change again. Fees go to the vault forever, and only the vault's rules decide where they end up. This is pump.fun's design, not ours; the Feebric wizard warns about it before you sign.- Distribution is permissionless. pump.fun's
distribute_creator_fees_v2moves accrued fees from the coin's creator vault to the shareholders. The Feebric keeper calls it whenever fees are pending; anyone else can too.
For SOL-quoted coins the fees arrive as lamports on the vault address. For token-quoted coins (USDC pairs, pump-coin pairs, xStocks) they arrive in the vault's token account for that quote mint. The vault never converts between assets: payouts are in whatever the coin trades against.
2. Settlement splits the inflow
settle is a permissionless instruction. It measures what arrived since the last settlement and books it into buckets:
inflow = balance available − sum of existing buckets
fee = inflow × 10% → treasury_pending
R = inflow − fee + carry
bucket_i += R × bps_i / 10 000 for every rule i
carryis money released when a manager changes the rules of an unlocked vault: the old buckets flow back and are redistributed by the new shares at the next settlement, without a second fee.- Rounding dust goes to rule 0.
- A rule of kind Forward (an expired social escrow) pushes its share straight into its target rule.
After settlement the vault's accounting invariant holds: sum_buckets = Σ rule.balance + treasury_pending. Lifetime totals (total_inflow, total_fee, total_paid) are updated and shown on the token page.
3. Payout cranks move the buckets
Every payout is its own permissionless instruction, so the keeper can run them one by one and anyone can audit them:
| crank | what it does |
|---|---|
pay_wallet(idx) | sends a Wallet rule's whole bucket to its address (SOL) or its token account (created on the fly if missing) |
pay_treasury | sends treasury_pending to the Feebric treasury |
drip(idx) | pays holders pro-rata from a Dump Shield rule's epoch budget, in batches |
buyback(idx, …) | buys the coin on pump.fun with part of the bucket and burns everything received, in the same transaction |
claim_social(idx, …) | releases a social escrow to the recipient named in a verifier attestation and turns the rule into a Wallet rule |
expire_social(idx) | after the deadline, turns an unclaimed escrow into its fallback (a wallet or another rule) |
The rule pages describe the conditions each crank checks: Rules.
4. The keeper
Feebric runs a reference keeper that loops over every vault about once a minute: distribute on pump.fun if fees are pending, settle, pay wallets and the treasury, run drips and buybacks, expire overdue escrows. It also indexes every program transaction into the payout history shown on token pages, including transactions it did not send. Details and the read API: Keeper & API.
5. Two signatures to start
From the creator's point of view the whole setup is:
- Create the vault with rules and, optionally, a lock. One transaction, signed by whichever wallet will manage the vault. It pays the rent (about 0.015 SOL).
- Wire pump.fun. One transaction signed by the coin creator:
create_fee_sharing_configif the coin has none, thenupdate_fee_shares_v2with the vault as the 100% shareholder. Unswept creator fees are swept to the creator first in the same transaction.
The manager and the coin creator can be different wallets. Step-by-step with the app: For creators.
