Skip to main content
A policy template stores reusable configuration for creating wallets. It does not set or update permissions directly on an existing wallet. The Developer Portal lists these under Wallet templates. Each template defines an initial wallet user and can store additional users with their own allowed actions. Pass its policy ID when you Create Wallets. An API key authenticates your server’s requests. The template supplies wallet configuration; your application still signs and submits the prepared transactions.

Initial user and additional users

The portal’s initial wallet user receives full root access (All). Choose an authority you trust to administer the wallet. The portal form does not provide a spending-limit editor for this initial user. Additional wallet users have separate authorities and allowed actions. Use Permissions to understand those grants. The reference describes the Developer SDK’s complete action list; the portal provides a smaller set of controls for common configurations.
The Developer SDK’s template-based wallet creation prepares the initial user. Additional users saved in the template are not automatically added by this flow. After wallet creation confirms, use Add Roles for each additional authority and verify its on-chain actions.

Create a template

Open Wallet templates in your project in the Developer Portal and select New template.
1

Name the template and set the initial user

Enter a template name and an optional description. Choose how to provide the initial user’s public key:
  • Provided at wallet creation: your application supplies the authority through initialUser in TypeScript or initial_user in Python.
  • Set a key now: choose the key type and save a public key in the template. This authority is reused for wallets created from it.
Both choices give the initial user full root access.
2

Review recovery availability

The portal currently marks Enable recovery guardian as Coming soon and disables it. See Guardian recovery for scoped key replacement and the additional integration required for single-guardian and multiple-approval recovery.
3

Save other wallet users if needed

Additional users must have a public key set in the template. Choose each user’s key type, public key, and allowed actions. Each additional user needs at least one action.These entries are saved in the template. Provision them separately with the Developer SDK’s add-role flow after creating the wallet.For spending limits or program access, review the selected fields against Permissions. The portal’s SOL amount input uses SOL; the SDK’s action inputs use lamports.
4

Review and create

Check the initial user’s root access and each additional user’s authority and actions, then select Create template. Save the resulting policy ID for your server integration.

Add a role with a spending limit

For a concrete limited-transfer example, create the wallet, then follow Add Roles. That example gives a separate authority access to the System Program and a total allowance of 1,000,000 lamports. It grants only program and solLimit to the new role; the wallet’s initial root authority keeps its existing power. After submitting the add-role transaction, read the wallet’s roles to verify that the new authority has the intended actions. A template’s stored metadata and a wallet’s confirmed on-chain roles are separate records.

Read and use a template

Use Read Policy Templates to inspect saved template metadata. Use Create Wallets to prepare a wallet from the policy ID, then sign and submit its transactions. To change access on an existing wallet, use the wallet’s authority-management operations, such as Add Roles. Editing or deleting a saved template does not rewrite roles already on-chain.