> ## 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.

## Hedera HTS tokens

When you enable a new Hedera Token Service (HTS) token in a new vault, select one of the following funding options:

1. **First sender covers the fee:** The storage fee is deducted when the first incoming transaction occurs. No upfront action is required.
2. **Fund from the vault HBAR balance:** The storage fee is deducted from the vault's HBAR balance immediately after wallet creation. This option requires transaction signing.

Set `blockchainWalletType` to `"Unassociated"` for the first option and `"Associated"` for the second option.

### 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': ''
}
```
