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

# Members and roles

> The people who administer a business account and the roles that decide what they can do.

> [!NOTE]
>
> Business Accounts are in **early access**. See [Business Accounts](https://docs.dynamic.xyz/docs/business-accounts/accounts.md) for the model.

**Members** are the Dynamic users who administer a business account. Each member is identified by a user ID. You add a member by user ID, or by an identifier such as an email address that Dynamic resolves to a user. The person who creates the account becomes its first member, with the `owner` role. Each member holds one role, which is either a built-in role or a [custom role](#custom-roles), and the role decides which account actions the member can take.

| Action | `owner` | `admin` | `viewer` |
| - | - | - | - |
| Add or remove a member | Yes | Yes | No |
| Change a member's role | Yes | Yes | No |
| Transfer ownership | Yes | No | No |
| Add or remove a signer, or link a wallet | Yes | Yes | No |
| Define or delete a custom role | Yes | Yes | No |

A `viewer` has read-only access to the account. The owner cannot be removed or have its role changed. To give ownership to another member, transfer ownership, which makes the current owner an `admin`.

An account can hold up to 10 members by default, and the owner counts as one of them. See [Limits](https://docs.dynamic.xyz/docs/business-accounts/accounts.md#limits) for the configurable caps.

## Custom roles

An account can also define custom roles. A custom role is a name your product recognizes, such as `cfo` or `treasurer`, and it always inherits the permissions of `admin` or `viewer`. A custom role cannot inherit `owner`, and its name cannot reuse `owner`, `admin` or `viewer`. A member with a custom role has exactly the permissions of the role it inherits.

Owners and admins define and delete custom roles. Assign a custom role the same way as a built-in role, by passing its name as the role when you add a member or update a member's role. Deleting a custom role does not remove its holders, who keep the permissions of the role they inherit.

[Approval requirements](https://docs.dynamic.xyz/docs/business-accounts/approvals.md#requirements-and-roles) can name a custom role as an eligible approver or as an initiator. The initiator is the member who starts an action.

Define, list, assign, and delete custom roles with the SDK: see [Custom roles](https://docs.dynamic.xyz/docs/javascript/reference/business-accounts/custom-roles.md) in the JavaScript reference.

> [!WARNING]
>
> Every active signer is also a member. When a signer becomes active, they are added as a `viewer`, the read-only built-in role, if they are not already a member. Otherwise, members and signers are independent. Being an admin does not let someone sign, and being a signer does not grant admin rights.

## Changing membership

Adding a member, removing a member, changing a member's role, and transferring ownership are account changes. All four require [step-up authentication](https://docs.dynamic.xyz/docs/business-accounts/step-up-auth.md) when step-up is enabled for the environment. The caller must then verify their identity again just before the change, and without that verification the call fails with a `403` error.

If the account has an [approval](https://docs.dynamic.xyz/docs/business-accounts/approvals.md) requirement for the change, the change waits as a proposal until enough eligible members approve it. It then applies automatically, unless the initiator turned off auto-execute.

Removing a member, demoting them through an ownership transfer, or changing their role revokes the approvals they had given on still-open proposals and vetoes the open proposals they initiated, so consent and signed intents recorded under their old standing cannot complete a proposal after the change.

Removing a member also removes that member's [signer](https://docs.dynamic.xyz/docs/business-accounts/wallets-and-signers.md) records on every wallet they signed for, so they can no longer sign for those wallets. Dynamic refuses to remove the last active signer of a wallet, because the wallet would become inaccessible. Add another signer before you remove the only signer of a wallet.

## Next steps

Pick your SDK under **Implement** in the sidebar to add members, change roles, and transfer ownership.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.