> ## Documentation Index
> Fetch the complete documentation index at: https://docs.voltr.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Fees & Accounting

> Understanding vault fee structures, high water marks, and profit tracking

Fee parameters are configured at vault creation and can later be updated by the admin. See [Vault Configuration Updates](/vault-owners/initialization/update-configuration).

## Core Concepts

### Locked Profit

Realized profit is not always immediately available. It decays over the configured locked-profit window to reduce extraction and timing risk.

### High Water Mark

Performance fees only apply to profit above the historical peak asset-per-LP ratio. The first successful deposit seeds that high water mark.

### Fee Split

Eligible fees are divided across manager, admin, and protocol fee buckets according to the configured basis points.

## SDK Helpers

### Harvest Accumulated Fees

```typescript theme={null}
import {
  fetchProtocol,
  findProtocolPda,
  getHarvestFeeInstructionAsync,
} from "@voltr/vault-sdk";

const [protocolAddress] = await findProtocolPda();
const protocol = await fetchProtocol(rpc, protocolAddress);

const harvestIx = await getHarvestFeeInstructionAsync({
  harvester: harvesterSigner,
  vaultManager: vaultManagerAddress,
  vaultAdmin: vaultAdminAddress,
  protocolTreasury: protocol.data.treasury,
  vault: vaultAddress,
});
```

### Calibrate High Water Mark

```typescript theme={null}
import { getCalibrateHighWaterMarkInstructionAsync } from "@voltr/vault-sdk";

const calibrateIx = await getCalibrateHighWaterMarkInstructionAsync({
  admin: adminSigner,
  vault: vaultAddress,
});
```

### Read Fee State

```typescript theme={null}
import {
  getAccumulatedAdminFeesForVault,
  getAccumulatedManagerFeesForVault,
  getCurrentAssetPerLpForVault,
  getHighWaterMarkForVault,
  getVaultLpSupplyBreakdown,
} from "@voltr/vault-sdk";

const adminFees = await getAccumulatedAdminFeesForVault(rpc, vaultAddress);
const managerFees = await getAccumulatedManagerFeesForVault(rpc, vaultAddress);
const hwm = await getHighWaterMarkForVault(rpc, vaultAddress);
const assetPerLp = await getCurrentAssetPerLpForVault(rpc, vaultAddress);
const lpBreakdown = await getVaultLpSupplyBreakdown(rpc, vaultAddress);
```

These helpers are the preferred replacement for older `VoltrClient` fee methods.
