> For the complete documentation index, see [llms.txt](https://safe-staker.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://safe-staker.gitbook.io/docs/features-and-configuration/holder-verification.md).

# Holder Verification

Server Mangers can use the /holder-verification command to set up/add/remove holder verification

The Holder Verification system allows server admins to configure NFT-based role assignment for users. Users can receive or lose special roles based on the number of NFTs they are staking. The system is managed via slash commands and interactive UI buttons.

***

### Admin Setup Commands

#### `/holder-verification add <role> <nfts_needed>`

* **Description:** Add a new holder verification role. Users who stake at least `nfts_needed` NFTs will be eligible for this role.
* **Arguments:**
  * `role`: The Discord role to assign.
  * `nfts_needed`: The minimum number of NFTs required to receive the role (1-50).
* **Notes:**
  * You can have up to 5 holder roles per server.
  * The bot must have permission to manage roles and the role must be below the bot's top role.

#### `/holder-verification remove <role>`

* **Description:** Remove a previously added holder verification role from the configuration.
* **Arguments:**
  * `role`: The Discord role to remove from holder verification.

#### `/holder-verification view`

* **Description:** View all currently configured holder roles and their NFT requirements.
* **Behavior:**
  * If any configured roles have been deleted from the server, they will be automatically removed from the config and database, and a notice will be shown.

#### `/holder-verification ui`

* **Description:** Post the Holder Verification UI in the current channel. This UI allows users to:
  * Link their wallet
  * Request their holder role
  * View configured holder roles
* **Behavior:**
  * The UI will only work if at least one holder role is configured and NFT staking is enabled.

<figure><img src="https://3098633618-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSyR57ToGMWWsDPrREBU%2Fuploads%2Fjxdy2QerKWlpxqNaMvqw%2Fimage.png?alt=media&amp;token=6fd00f5e-857e-4c0c-86f0-b9dbef0ebe59" alt="" width="563"><figcaption></figcaption></figure>

***

### User Interactions

#### `Get Holder Role` Button

* **Description:** Users can click this button to request the appropriate holder role based on their staked NFTs.
* **Requirements:**
  * The user must have a linked wallet.
  * The user must be staking at least one NFT.
  * The user will only receive the highest role they qualify for (if multiple roles are configured).
  * If the user no longer qualifies for any role, all holder roles will be removed.

<figure><img src="https://3098633618-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSyR57ToGMWWsDPrREBU%2Fuploads%2FN8UBUerPYg9hlPg2GziJ%2Fimage.png?alt=media&amp;token=5a64d2d9-d498-4133-9fd7-d9b599b5f669" alt=""><figcaption></figcaption></figure>

#### `View Added Holder Roles` Button

* **Description:** Users can view all currently configured holder roles and their NFT requirements.

<figure><img src="https://3098633618-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSyR57ToGMWWsDPrREBU%2Fuploads%2FFHTaoBDmnREGoUnsOPn3%2Fimage.png?alt=media&amp;token=b7d9b2d9-1ce5-40fa-b39a-6d36488ebd48" alt="" width="563"><figcaption></figcaption></figure>

***

### Automatic Role Sync

* Remove holder roles from users who no longer qualify (e.g., unstaked or transferred NFTs).
* Remove any roles from the config that have been deleted from the server.
* **Note:** The bot does not automatically add roles during the sync; roles are only added when users stake NFTs or use the UI button.

***

### Error Handling & Permissions

* The bot will notify users/admins if:
  * They try to add more than 5 holder roles.
  * The bot lacks permission to manage roles.
  * The role is above the bot's top role in the server hierarchy.
  * NFT staking is not enabled.
  * The user is not staking any NFTs or has not linked a wallet.

***

### Example Workflow

1. Admin configures holder roles using `/holder-verification add`.
2. Admin posts the UI with `/holder-verification ui`.
3. User links their wallet and stakes NFTs.
4. User clicks `Get Holder Role` to receive the correct role.
5. If the user unstakes or transfers NFTs, the role is removed automatically during the next sync.
6. Admin can view or clean up roles with `/holder-verification view`.
