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
initialUserin TypeScript orinitial_userin 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.
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 onlyprogram 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.

