One protocol fee, one keeper bounty, the usual Solana tx fee. No subscription, no admin-mutable rates.

Protocol fee — 20 bps

On execute_commitment, the program skims 20 basis points (0.20%) off the payment leg to the treasury ATA before the Jupiter swap runs. The remaining 99.80% of the payment is what Jupiter trades into target tokens.

The treasury address is a hardcoded constant in the program — a Squads v4 multisig (3-of-5 hardware-keyed). There is no admin function to change it after deploy.

Keeper bounty

Each commitment specifies a keeper_bounty in lamports that the keeper receives on successful execution. Defaults to 0.001 SOL in the UI; min 0.0001, max 1 SOL (program-enforced bounds).

The bounty is deposited as extra lamports on the Commitment account at create time and transferred directly to the keeper's wallet as part of execute_commitment. On cancel or expire, the bounty refunds to the owner along with the escrowed payment.

Rent + tx fees

The Solana platform fees for one full commitment lifecycle:

Commitment PDA rent~0.00242 SOL (~220 bytes)
Payment vault ATA rent~0.00204 SOL (165 bytes)
Wallet wSOL ATA rent (if wSOL payment)~0.00204 SOL
Tx fee, create~0.00008 SOL
Tx fee, execute~0.00008 SOL (paid by keeper)
Tx fee, cancel~0.00005 SOL

Rent is refundable: on cancel/expire/execute, the program closes the commitment + vault accounts and returns rent to the owner. Worst-case net cost if you create and immediately cancel: tx fees only, ~0.0001 SOL.

No hidden charges
fillr does not charge a fee on cancel or expire. The treasury only sees revenue from successful fills.

Concrete example

0.1 SOL commitment, filled by a keeper:

You commit0.1 SOL
Protocol fee (20 bps)0.0002 SOL → treasury
Swapped via Jupiter0.0998 SOL → target tokens
You receivetarget tokens at ≤ max_price
Keeper earns0.001 SOL bounty (minus their tx fee)
Your rent refund~0.00446 SOL on close