Overview
Umbra charges three distinct fees depending on the operation:- Protocol fee — a percentage of the SPL token amount, collected by the protocol on most operations.
- Relayer fee — a percentage of the SPL token amount, collected by the relayer on burn operations. Currently 0.
- Stealth Pool SOL fee — a fixed SOL amount paid when writing a Stealth Pool Note, used to pre-fund the eventual burn so neither the recipient nor the relayer pays SOL out of pocket at burn time.
Protocol Fee
The protocol fee is deducted from the SPL or Token-2022 token amount involved in each operation. Current rates:- Fixed base: 0 token micro-units
- Proportional: 35 bps
2^14 = 16,384) rather than the traditional 10,000. This means 35 bps corresponds to 35 / 16,384 ≈ 0.2136%.
Example — 1,000 USDC ETA → ATA withdrawal
Estimating programmatically
Relayer Fee
The relayer submits burn transactions on your behalf so your wallet never appears on-chain as the fee payer. In exchange, relayers can charge a base SPL fee plus a BPS rate on the burned amount. Current rates: both are set to 0. Burning a Stealth Pool Note incurs no SPL relayer fee today. When relayer fees are non-zero, they are applied on top of the protocol fee and deducted from the same token amount:Stealth Pool SOL Fee
When you write a Stealth Pool Note into the mixer tree, you pay a one-time SOL fee upfront. This pre-funds the eventual burn so neither the recipient nor the relayer pays SOL out of pocket at burn time. The SOL fee covers two costs:- Treap node rent — Solana requires a minimum SOL balance to keep the nullifier account (a
TreapNode) rent-exempt on-chain. Roughly the minimum rent for a 48-byte account at current Solana rates. - Costliest burn path — enough SOL to cover the on-chain compute and transaction costs of the most expensive possible burn route out of the pool.
The Stealth Pool SOL fee is denominated in SOL (lamports), not in the token being transferred. It is separate from and in addition to the protocol fee and relayer fee, which are denominated in the transferred token.
Which Operations Carry Which Fees
EncryptedTokenAccount operations:- Self-deposit (ATA → own ETA): 0 protocol fee for standard self-shielding.
- Withdrawal (ETA → ATA): protocol fee applies.
- Conversion (MXE-only → Shared): protocol fee applies on the converted balance.
- Note creation (ETA → Stealth Pool Note): protocol fee on SPL amount + Stealth Pool SOL fee.
- Note creation (ATA → Stealth Pool Note): protocol fee on SPL amount + Stealth Pool SOL fee.
- Burn (note → ETA): protocol fee applies, relayer fee applies (currently 0).
- Burn (note → ATA): protocol fee applies, relayer fee applies (currently 0). (Only the self-burnable → ATA variant is shipped; receiver-burnable → ATA is on-chain but not yet exposed in the SDK.)
Token-2022 Transfer Fees
If the token mint has a Token-2022 transfer fee extension configured, that fee is deducted by the SPL program before tokens reach the Umbra pool. Umbra then measures the actual amount received and applies its protocol fee on top of that — it never charges protocol fees on the portion taken by the Token-2022 mechanism.Fee Configuration
Protocol and relayer fee rates are stored in on-chainProtocolFeesConfiguration and RelayerFeesConfiguration accounts, configurable by the pool admin and relayer operators respectively. The values above reflect the current live configuration.
If you are building a production integration and need exact fee amounts for display or pre-flight checks, fetch the on-chain fee configuration accounts directly rather than hardcoding the SDK defaults.