Fee model

Northstake vaults charge two separate fees:

  1. Lido protocol fees: paid to the Lido DAO treasury.
  2. Node-operator fees: paid to the staking provider running your validators.

They're tracked, settled, and authorized through different mechanisms.

Side-by-side

Lido protocol feesNode-operator fees
RecipientLido DAO treasuryThe vault's node operator
API fieldvaultData.obligations.feesToSettlevaultData.accruedFee
How it's computedVault hub against periodic vault reportsContinuous accrual based on the configured fee rate
Settlement callPOST /v1/lidov3/staking-vaults/{id}/settle-lido-feesPOST /v1/lidov3/staking-vaults/{id}/disburse-fee
Who authorizesVault owner / adminNode operator
Configurable rate?Set by Lido protocol governanceYes: nodeOperatorFeeBP in basis points

Both are claimable rather than auto-deducted. The vault accrues the obligation; an explicit on-chain call moves the ETH.

Lido protocol fees

The Lido vault hub publishes periodic reports for each vault. When a report increases the protocol-fee obligation, the new total appears in vaultData.obligations.feesToSettle. The vault owner (or any address holding the required role) settles by calling settle-lido-fees.

A non-zero feesToSettle is a soft obligation: the vault remains operational, but the obligation must eventually be cleared. The Vault page in SVM shows the outstanding amount on the Operations tab and warns when it's overdue.

If the report is stale at submission time, settle-lido-fees fails with a "vault report stale" error. The fix is to wait for the next report: you can't force a refresh from the SVM side. This is exactly what the report_update_available webhook event is for.

Node-operator fees

The vault accrues a fee for the node operator continuously, as a function of the configured rate. The accrued amount appears as vaultData.accruedFee. The node operator (or any address holding the appropriate role) disburses by calling disburse-fee.

Setting the rate

The fee rate is stored as nodeOperatorFeeBP: basis points (1 bp = 0.01%). Range: 0 to 10000 (0% to 100%). Pro accounts can change the rate via POST /v1/lidov3/staking-vaults/{id}/set-fee-rate. The new rate applies prospectively: already-accrued fees keep the rate that was in effect when they accrued.

Exempting specific stakes

If you want a particular ETH inflow not to be subject to the node-operator fee (e.g. a treasury reload, an internal rebalance) grant the depositing address NODE_OPERATOR_FEE_EXEMPT_ROLE before the deposit. The increase in stake that follows is exempted from accrual.

Operationally: who sees what

SVM. The vault owner sees only Lido protocol fees; the node operator settles operator fees on their own. The Settle Fees modal shows whichever single action the user is authorized to perform.

SVM Pro. The owner sees both flows. The Settle Fees modal lets them choose between:

  • settleLido: pay the outstanding Lido protocol obligation
  • disburseOperator: disburse the accrued node-operator fee

Pro accounts also see the Change Fee Rate flow on the Operations tab, which writes the new nodeOperatorFeeBP to the Dashboard contract.

Related