# Add Wallet Users

Source: https://developers.bitgo.com/docs/wallets-users-add

## Overview

Wallet admins can send wallet-user invitations to people in their enterprise who have a BitGo account. When you share a wallet with users in your enterprise, you can designate them with one or more of the following permissions:

* **Admin** - Able to manage wallet policies, users, and pending approvals with the ability to generate new receive addresses.
* **Freeze** - Able to freeze a wallet, which will disable all withdrawals.
* **Spend** - Able to initiate withdrawals and generate new receive addresses.
* **Trade** - Able to initiate trades for a [Go Account](/docs/go-network-overview).
* **View** - Able to view wallet balances, transactions, and wallet metadata (such as other wallet users).

## Prerequisites

* [Get Started](/docs/get-started-intro)
* [Create Wallets](/docs/wallets-create-wallets)

## Cookbook

Need just the steps? Expand the cookbook below to get started:

<Cookbook slug="add-wallet-users" title="Add Wallet Users" />

## Create Wallet Share

>Endpoint: [Create a wallet share](/reference/v2walletsharingcreateshare)

```shell cURL
export COIN="<ASSET_ID>"
export WALLET_ID="<YOUR_WALLET_ID>"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export MESSAGE="<MESSAGE_TO_THE_INVITEE>"
export USER="<INVITEE_USER_ID>"

curl -X POST \
  https://app.bitgo-test.com/api/v2/$COIN/wallet/$WALLET_ID/share \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -d '{
    "permissions": "spend,view",
    "message": "'"$MESSAGE"'",
    "user": "'"$USER"'",
    "keychain": {        # Enables the wallet spender to sign with their passphrase
      "pub": "string",
      "encryptedPrv": "string",
      "fromPubKey": "string",
      "toPubKey": "string",
      "path": "m/1234/1/1"
  }
}'
```
```js JavaScript
import { BitGoAPI } from '@bitgo/sdk-api';
import { Btc, Tbtc4 } from '@bitgo/sdk-coin-btc';

const bitgo = new BitGoAPI({
  accessToken: '<access_token>',
  env: 'test',
});

const coin = 'tbtc4';
bitgo.register(coin, Tbtc4.createInstance);

// Set the id of the wallet to share.
const walletId = null;

// Set BitGo account email of wallet share recipient.
const recipient = null;

// Set share permissions as a comma-separated list (e.g. 'view,spend').
// Valid permissions to choose from are: view, spend, manage, admin.
const perms = 'view';

// Provide the passphrase for the wallet being shared
const passphrase = null;

async function main() {
  const wallet = await bitgo.coin(coin).wallets().get({ id: walletId });

  const shareResult = await wallet.shareWallet({
    email: recipient,
    walletPassphrase: passphrase,
    permissions: perms,
  });

  console.log('Wallet was shared successfully');
  console.dir(shareResult);
}

main().catch(error => console.log(error))
```

#### Step Result

```json
{
  "id": "6b4e821af392dc17e00834b1f7c209a4",
  "coin": "tbtc4",
  "wallet": "6a3ad38ed8f6eb1bf6e4015c0095bf27",
  "walletLabel": "Ops Wallet",
  "fromUser": "6a35b719cc4690701a2f673da1e9931e",
  "toUser": "6b2c104f88340a71e2df891b50c3a7e2",
  "permissions": ["view"],
  "message": "Please accept this wallet share",
  "state": "active",
  "enterprise": "6a35b71ccc4690701a2f678264effb83",
  "keychainOverrideRequired": false,
  "userMultiKeyRotationRequired": false,
  "isUMSInitiated": false,
  "updatedAt": "2026-07-15T09:22:41.000Z"
}
```

## See Also

* [API Reference: Create a Wallet Share](/reference/v2walletsharingcreateshare)
* [API Reference: Resend a Wallet Share Invitation Email](/reference/v2walletsharingresendemail)
