The short version
There are two separate fee systems:- A deposit on Solana. You fund this deposit when you delegate an account. When you undelegate, MagicBlock takes the session and commit charges from it and returns anything left over.
- A live commit limit inside the ER. Without a delegated fee payer, an account can commit 10
times. For a longer session, add a delegated fee payer and
magic_fee_vault. This removes the 10-commit stop. The fee payer starts paying an extra live fee on commit 26.
The values on this page were checked against the source on August 20, 2026.
Current prices
One SOL contains 1 billion lamports.
Normal ER transactions cost
0 in the current release. Solana transaction fees are separate from
the prices above.
1. The deposit you fund on Solana
Delegating an account creates two small Solana accounts: a delegation record and delegation metadata. The delegation payer funds both accounts so they are rent-exempt. Think of that money as a refundable balance, not a one-time fee that buys unlimited commits. When you undelegate, MagicBlock calculates the charge:rent_payer when the account was delegated.
In practical terms:
- even a session with no commit can use up to
300,000lamports from the deposit; - commit 1 adds no commit charge;
- commits 2, 3, 4, and so on add
100,000lamports each; - if the calculated charge is larger than the deposit, MagicBlock takes the deposit but does not create a debt or fail undelegation;
- any money left in the deposit is refunded.
2. Committing without a fee payer
- Commits 1 through 10 are accepted.
- Commit 11 fails with custom error
0xA0000000. - The accepted commits are still included in the deposit charge when you undelegate.
3. Committing with a fee payer
For a longer session, provide:- a delegated account that will pay the fees; and
- the
magic_fee_vaultthat belongs to the ER validator you are using.
- commits 1 through 25 have no extra live commit fee;
- commit 26 is the first live commit fee;
- commit 26 and every later commit cost
100,000lamports per committed account.
200,000 lamports in live commit fees.
If the fee payer cannot cover the full charge, the instruction fails with InsufficientFunds. No
partial payment is taken.
The committed account and the fee payer do not have to be the same account. If your app pays for
users, set spending limits and rate limits so one user cannot drain the shared payer.
Worked examples
The examples below do not include normal Solana transaction fees.D means the deposit balance just
before undelegation.
One commit, then undelegate
Ten simple commits, then undelegate
Twenty-six commits with a delegated fee payer
Keeping the fee payer funded
UselamportsDelegatedTransferIx to add lamports to a delegated fee payer. You submit the top-up
transaction on Solana, and the Ephemeral SPL Token program moves the balance into the ER.
See the top-up example.
Include these costs in your budget:
- the lamports you are transferring;
- the top-up helper’s current
300,000-lamport setup charge; - the normal Solana transaction fee.
300,000-lamport delegation session charge are different charges.
They currently happen to have the same value.
Base Actions and callbacks
A Base Action is an instruction that the ER asks MagicBlock to execute on Solana after a commit. On the fee-payer path, its price depends on the compute units requested by the action:- one action requesting
200,000compute units costs10,000lamports; - two such actions cost
20,000lamports.
5,000 lamports. The callback’s requested compute units are not
included in the Base Action calculation above.
Refundable Ephemeral Account storage
Ephemeral Accounts exist only inside the ER and never commit to Solana. They use a separate, refundable storage balance:- an account with no data reserves
1,920lamports; - an account with 1,000 bytes of data reserves
33,920lamports.
Other balance movements that are not app fees
When a commit changes an account’s lamport balance, MagicBlock must make the ER balance and Solana balance match. Lamports may move between the account and the validator during this settlement. This is balance reconciliation, not an extra fixed or percentage fee. The older two-step commit path also uses temporary Solana accounts. The validator funds them and gets the unused balance back after finalization. These are validator operating costs, not additional app fees. Validators also pay Solana priority fees when submitting commit transactions. Those operator costs are separate from the Base Action price charged to an app. If a delegated account has no data and no lamports, the Delegation Program may add890,880 lamports
to keep it rent-exempt. That money funds the account; it is not protocol revenue.
Common errors
Where the fees go
When the deposit is settled, about 10% of the collected amount goes to the protocol fee vault and about 90% goes to the validator fee vault. Small rounding differences are possible. When a validator later withdraws its accumulated fees, 10% of that withdrawal goes to the protocol and the validator receives the rest. Validators wait until their vault balance is above100,000,000 lamports before automatically withdrawing. This threshold is only for batching; it is
not an app fee.

