# Create Addresses

Source: https://developers.bitgo.com/docs/wallets-create-addresses

## Overview

To enhance your privacy, you can create a new receive address for every transaction. There's no limit to the number of addresses you can create, but there may be asset-specific differences. For more details, see [Blockchain References](https://assets.bitgo.com/coins/agoric).

If you have multiple receive addresses for a wallet, consider the following:

* Account-based assets can withdraw only from the base address of a wallet. If you have multiple receive addresses, you must periodically consolidate the balances to the base address to get the maximum spendable amount. To learn more, see [Consolidate Account Balance](/docs/wallets-consolidate).
* UTXO-based assets can withdraw from any address of a wallet, and therefore don't require periodic consolidation to access the maximum spendable balance.

## 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="create-addresses" title="Create Addresses" />

## Create Address

```js SDK
const { BitGo } = require('bitgo');

// Fill in with actual access token
const accessToken = '<your_actual_access_token>';

// Initialize the SDK
const bitgo = new BitGo({
  accessToken: accessToken,
  env: 'custom',
  customRootURI: 'https://app.bitgo.com',
});

// Create the wallet
const { wallet } = await bitgo.coin('tbtc4').wallets().generateWallet({
  label: 'my hot Wallet',
  passphrase: 'VerySecurePassword1234',
  enterprise: '5612c2beeecf83610b621b90964448cd'
});

// Or Alternatively you can get an existing wallet
const walletId = '63bc8506e014900008265c65363245f4'
const existingWallet = await bitgo.coin('tbtc4').wallets().get({ id: walletId });

// use the appropriate wallet instance to create new address
const address = await wallet.createAddress();
console.log(JSON.stringify(address, undefined, 2));
```
```json API
POST /api/v2/{coin}/wallet/{walletId}/address
```

> 📘 **Note**
>
> Some networks, such as Ethereum, don't immediately return a new multisignature address, since creating a new address requires a blockchain transaction. The blockchain must confirm this transaction before you can use the address. The parameter `pendingChainInitialization` identifies if an address is awaiting confirmation.
>
>You can save the wallet ID in the response, then wait for the blockchain to confirm the address before using it.

#### Step Result

```json
{
    "id": "631283e10e052800066295e210da142a",
    "address": "2N9wCEV3KGEFsyo9xoUGjVYaSVwjSueutjz",
    "chain": 10,
    "index": 2,
    "coin": "tbtc4",
    "wallet": "6312824bf3281c0006fedaad1d667e67",
    "coinSpecific": {
        "witnessScript": "5221031a4b6c3d9e8f2a5b7c0d1e4f7a2b5c8d3e6f9a0b1c4d7e0f3a6b9c2d5e8f1a4b7c021039d2e7f4a1b8c5d0e3f6a9b2c5d8e1f4a7b0c3d6e9f2a5b8c1d4e7f0a3b6c9d2e5f8a210453f8e2b9c6d3a0f7e4b1c8d5a2f9e6b3c0d7a4f1e8b5c2d9a6f3e0b7c4d1a8f5e2b9c6d3a053ae"
    }
}
```

## Next

[Create Whitelists](/docs/wallets-whitelists-create)

## See Also

* [API Reference: Create Address](/reference/v2walletnewaddress)
* [Consolidate Account Balance](/docs/wallets-consolidate)
