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

# Create Vault Wallets

Fireblocks vault accounts contain vault wallets. For each vault wallet, there are one or more deposit addresses.

# Address generation

## Account-based wallets

For account-based assets, there are two address-generation options:

1. Account-based assets *without* tag/memo/note support, such as ETH, can only generate one deposit address, making each vault account unique per vault wallet. This allows you to manage one deposit address per asset, per vault account. This requires you to create additional vault accounts when more than one deposit address of the same asset is required.
2. Account-based assets *with* tag/memo/note support, such as XRP, can generate one or more deposit addresses. Each deposit address has the same on-chain address. However, they are differentiated by their tag/memo.

## UTXO wallets

UTXO-based assets, such as Bitcoin, can hold multiple wallet addresses. This allows you to manage deposits in a single vault account.

### Create Vault Wallet code example:

```javascript theme={"system"}
(async() => {

  try {
    const vaultWallet = await fireblocks.vaults.createVaultAccountAsset({
      vaultAccountId: "148",
      assetId: "BTC"
    })

    console.log(JSON.stringify(vaultWallet, null, 2))
  } catch(e){
    console.log(e)
  }
})();
```

```python theme={"system"}
vault_wallet = fireblocks.create_vault_asset(
    vault_account_id="148",
    asset_id="BTC"
)
pprint.pprint(vault_wallet)
```

### Response example

```json theme={"system"}
{
 'address': 'bc1q8q87uy8h2mru0q5gc7u680w76dz350s6sx5u8a',
 'id': '148',
 'legacyAddress': '167RvaKttzN2wRrJwmYEwjKG7kvdjwhKfq',
 'tag': ''
}
```

### Create Deposit Address for UTXO and Tag/Memo based assets:

```javascript theme={"system"}
(async() => {

  try {

    const depositAddress = await fireblocks.vaults.createVaultAccountAssetAddress({
      assetId: "BTC",
      vaultAccountId: "148",
      createAddressRequest: {
        description: "EndUserA"
      }
    })

    console.log(JSON.stringify(depositAddress, null, 2))
  } catch(e){
    console.log(e)
  }
})();
```

```python theme={"system"}
deposit_address= fireblocks.generate_new_address(
    vault_account_id='148',
    asset_id='BTC',
    description='EndUserA'
)

pprint.pprint(deposit_address)
```

### Response Example:

```json theme={"system"}
{
  'address': 'bc1qkwxyzs68a3nsulhe4eavfm5dzuucf25jjnefex',
 	'bip44AddressIndex': 1,
 	'legacyAddress': '1HNMyRRzt4beCDnYLRwQKEbPAwTgmKjwrJ',
 	'tag': ''
}
```
