Fees and the 25/75 split
The fee F
When launching, the creator picks the total zk-pad fee F, anywhere from 1% to 5% (10,000 to 50,000 pips, where 1,000,000 pips = 100%).
- F can be set separately for each direction:
pairedFeeapplies to buys (the quote token goes in) andtokenFeeapplies to sells (the launched token goes in). Each must be in [1%, 5%]. - F can never be raised. The coin's token admin may lower it with
lowerFees, but never below 1%. A token admin ofaddress(0)(renounced) means the fee is frozen forever.
Where the fee goes
| Share of F | Recipient | Paid in |
|---|---|---|
| 75% (the LP fee) | The coin's beneficiary, through the locked positions, the locker and the FeeVault | The quote token by default. Fees earned in the launched token (on sells) are converted to the quote token when collected. |
| 25% (the hook protocol fee) | The zk-pad protocol treasury (teamFeeRecipient) | The quote token |
| There is no creator share |
A creator who wants revenue from their own coin sets themselves as the (stealth) beneficiary.
PancakeSwap's protocol fee is on top. PancakeSwap Infinity charges its own protocol fee on dynamic-fee pools, by default 0.03% (300 pips; PancakeSwap governance can set it up to 0.4%). It is charged in addition to F, not taken out of it. A trader therefore pays roughly F + 0.03%.
How the split is implemented
The hook sets the pool's LP fee for each swap (lpFeeOverride), so it accrues to the locked
positions, and separately takes a protocol fee in the paired (quote) token sized at one third
of the LP fee the positions actually receive (net of PancakeSwap's cut). That makes protocol to
beneficiary 25:75 of everything zk-pad captures, up to rounding. Clanker v4 uses the same
mechanism with "20% of the LP fee"; zk-pad changes the constant to 1/3.
- Buys are measured on the trader's gross input. The protocol fee comes off the input
before the pool charges its LP fee, so the buy LP fee is raised slightly,
ceil(0.75·F / (1 − 0.25·F·(1 − pcs))), which makes protocol + LP exactlyF·(1 − pcs)of what the trader pays in (pcsis PancakeSwap's protocol fee). - Sells earn the LP fee (
0.75·F) in the launched token. The protocol fee is charged at the swap's execution price, like Clanker. The part of it above the LP fee's value at the post-swap price is split 25:75 again and 75% of it is donated back to the positions (ProtocolFeeRebated), so the split holds after the beneficiary's tokens are converted. When that conversion later realizes more than the reference value, the locker tops the protocol up to 25% of what was realized (ProtocolFeeTopUp). Where the price ends therefore cannot shrink what a seller pays, even with a flash-borrowed overshoot into a thin band. A sell that ends with no in-range liquidity keeps the whole execution-value fee for the protocol.
The same 25/75 split applies to the anti-sniper surcharge.
Worked examples
All figures ignore price impact and rounding.
A buy with F = 1%
A trader buys with 1 BNB (WBNB-paired coin, F = 1%).
| Item | Amount |
|---|---|
| zk-pad fee F | 0.01 BNB |
| → beneficiary (75%) | 0.0075 BNB |
| → protocol (25%) | 0.0025 BNB |
| PancakeSwap protocol fee (~0.03%) | ~0.0003 BNB |
| Swapped into the coin | ~0.9897 BNB |
A sell with F = 5%
A trader sells coins worth 1,000 USDT (USDT-paired coin, F = 5%).
| Item | Amount |
|---|---|
| zk-pad fee F | ~50 USDT worth |
| → beneficiary (75%) | ~37.50 USDT worth. It accrues in the coin itself and is converted to USDT when collected. |
| → protocol (25%) | ~12.50 USDT, taken from the USDT output |
| PancakeSwap protocol fee (~0.03%) | ~0.30 USDT worth |
| Trader receives | ~949.70 USDT |
Daily volume
A coin with F = 2% trades $100,000 in a day.
| Item | Per day |
|---|---|
| Total zk-pad fee (2%) | $2,000 |
| Beneficiary (75%) | $1,500 |
| Protocol (25%) | $500 |
| PancakeSwap (~0.03%) | ~$30 |
Quick reference
| F | Beneficiary share of volume | Protocol share of volume | Trader pays (with PancakeSwap) |
|---|---|---|---|
| 1% | 0.75% | 0.25% | ~1.03% |
| 2% | 1.50% | 0.50% | ~2.03% |
| 3% | 2.25% | 0.75% | ~3.03% |
| 4% | 3.00% | 1.00% | ~4.03% |
| 5% | 3.75% | 1.25% | ~5.03% |
Fee-exempt swaps
The locker's own fee-conversion swaps (turning token-side LP fees into the quote token) pay no zk-pad fee. Charging the beneficiary's fees a second time would push the protocol share above 25%. To keep the exemption from becoming a fee-free route, the locker only ever converts fees that fee-paying swaps earned (the hook records them); tokens that reach the positions any other way are credited to the beneficiary as they are.
How fees reach the beneficiary
- LP fees accrue in the locked positions on every swap.
- Before the next swap, the hook calls the locker, which "pokes" the positions to collect the
fees, swaps the token-side part to the quote token in the same pool (by default,
FeeIn.Paired), and callsFeeVault.depositFromLaunch(token, beneficiaryId, quote, amount), which also books the amount as that launch's credit (the bound on its creator's consolidation rights). - The balance sits in the
FeeVaultunder the opaque beneficiary id until the beneficiary claims it.
Because collection runs on every swap, only the previous swaps' fees are ever exposed to the
conversion swap, which limits sandwich risk. The conversion also never runs at a price that a
swap earlier in the same block pushed against it: the locker then defers collection to a later
block (RewardsDeferred), so a seller cannot sell the price down and have the beneficiary's fees
converted into its own buy-back within one transaction or bundle.
A launch can opt out of conversion (FeeIn.Both or Token), but then the beneficiary is paid
partly in the launched token, which relayers cannot price and consolidation cannot route: that
balance needs a self-funded claim from a wallet holding BNB.
Fees are credited in the asset they were collected in, usually the quote token. Turning them into USDT (the settlement asset) is a separate, on-demand step. See consolidation and shielding.