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_v2 is 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_v2 moves 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
  • carry is 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:

crankwhat 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_treasurysends 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:

  1. 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).
  2. Wire pump.fun. One transaction signed by the coin creator: create_fee_sharing_config if the coin has none, then update_fee_shares_v2 with 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.