Skip to main content
After creating a vault, the admin can update several configuration parameters such as fees, cap, withdrawal settings, and manager authority.
Managers: the sdk-scripts CLI updates one field per call with vault:update-config and handles the extra-account wiring for you. This page shows the programmatic SDK path for embedding config updates in your own code.

What Can Be Updated

ParameterUpdatableUpdated By
Max capYesAdmin
Locked profit degradation durationYesAdmin
Withdrawal waiting periodYesAdmin
Performance feesYesAdmin
Management feesYesAdmin
Issuance feeYesAdmin
Redemption feeYesAdmin
ManagerYesAdmin
Vault nameNo
Vault descriptionNo
Asset mintNo

Update Via UI

The simplest path is the Voltr manage page:
https://voltr.xyz/manage/<VAULT_PUBKEY>

Update Via SDK

The v2 SDK uses getUpdateVaultConfigInstructionAsync, one field at a time.
import fs from "fs";
import { createKeyPairSignerFromBytes } from "@solana/kit";
import {
  getUpdateVaultConfigInstructionAsync,
  findVaultLpMintPda,
  VaultConfigField,
} from "@voltr/vault-sdk";

const adminSigner = await createKeyPairSignerFromBytes(
  Uint8Array.from(JSON.parse(fs.readFileSync("/path/to/admin.json", "utf-8")))
);
const vault = "YOUR_VAULT_ADDRESS" as const;

Update A u64 Field

const data = new Uint8Array(Buffer.alloc(8));
Buffer.from(data).writeBigUInt64LE(18_446_744_073_709_551_615n, 0);

const updateIx = await getUpdateVaultConfigInstructionAsync({
  admin: adminSigner,
  vault,
  field: VaultConfigField.MaxCap,
  data,
});

Update A Fee Field

const feeData = new Uint8Array(Buffer.alloc(2));
Buffer.from(feeData).writeUInt16LE(1_500, 0);

const updateIx = await getUpdateVaultConfigInstructionAsync({
  admin: adminSigner,
  vault,
  field: VaultConfigField.ManagerPerformanceFee,
  data: feeData,
});

Management Fee Special Case

For ManagerManagementFee and AdminManagementFee, append the vault LP mint account to the final instruction accounts:
const [vaultLpMint] = await findVaultLpMintPda({ vault });
The vault:update-config command in the sdk-scripts CLI handles this extra-account pattern for you — run it with --mode print to inspect the exact accounts before executing. See CLI & Scripts.

Update Manager

Manager and pending-admin changes use a 32-byte encoded address as the payload.

Serialization Reference

Field TypeEncoding
u648 bytes, little-endian
u162 bytes, little-endian
address32-byte encoded address
Be careful when changing manager authority. Once moved, the old manager key can no longer operate the vault.