---
title: "Create address"
method: POST
path: "/api/v2/{coin}/wallet/{walletId}/address"
tags: ["Address"]
---

# Create address

`POST /api/v2/{coin}/wallet/{walletId}/address`

Creates a new receive address for a wallet. If you create a forwarder address, whenever it receives assets, BitGo automatically deploys a forwarder smart contract to flush the balance to the base address. See [Blockchain Reference](https://assets.bitgo.com/coins/agoric) topics to learn more about address management, fees, and consolidations for specific assets.
**Note:** New Ethereum addresses require blockchain confirmation before you can consolidate from them.

## Path parameters

- `coin` string, required — A cryptocurrency symbol or token ticker symbol
- `walletId` string, required

## Request body

- object
  - `type` string
  - `chain` number
  - `forwarderVersion` number — (ETH only) Specify forwarder version to use in address creation. To reduce the cost of creating ETH forwarders, BitGo uses a set of forwarder contracts that deploy as a simple proxy to a single implementation (https://eips.ethereum.org/EIPS/eip-1167). Additionally, forwarders deploy using opcode, CREATE2, enabling them to deploy only when needed (https://eips.ethereum.org/EIPS/eip-1014). These forwarders otherwise operate identically to prior ETH forwarders. Use this flag to specify the forwarder contract version when deploying a forwarder contract. Use 0 for the older forwarder (https://github.com/BitGo/eth-multisig-v2). Use 1 for the new fee-improved forwarder (https://github.com/BitGo/eth-multisig-v4). Use 2 for NFT-supported forwarders and version 2 wallets. Use 3 for MPC wallets. Use 4 for forwarders with the same functionality as v2 but with some changes. v4 is applicable for Arbitrum, Optimism, ZkSync, and other EVM-compatible chains that we will onboard in the future. Use 5 for new MPC based wallets with wallet-version 6
  - `evmKeyRingReferenceAddress` string
  - `onToken` string — Create an address for the given token
  - `label` string — A human-readable label for the address
  - `lowPriority` boolean — Whether the deployment of the address forwarder contract should use a low priority fee key (ETH only)
  - `gasPrice` union — Explicit gas price to use when deploying the forwarder contract (ETH only). If not given, defaults to the current estimated network gas price.
    - string
    - number
  - `eip1559` object — (ETH forwarderVersion: 0 wallets only) Specify eip1559 fee parameters in forwarder creation transactions.
    - `maxFeePerGas` number, required
    - `maxPriorityFeePerGas` number, required
  - `format` string — Format to use for the new address, if the coin which supports multiple formats for an address. Currently, Bitcoin Cash is the only coin which has support for multiple address formats. For Bitcoin Cash, BitGo supports both the base58 (legacy) address format, as well as the newer CashAddr format. The default address format is base58. To request a CashAddr formatted address instead, use the value 'cashaddr' as the format.

## Response `200`

OK

- union
  - WalletAddress
    - `coin` string, required — A cryptocurrency symbol or token ticker symbol
    - `wallet` string, required
    - `chain` 0 | 1 | 10 | 11 | 20 | 21 | 30 | 31 | 40 | 41, required
    - `index` number, required
    - `id` string — Platform public ID for an address
    - `address` string
    - `balance` TrimmedBalance
      - `balanceString` string, required — String representation of the balance. Guaranteed to not lose precision.
      - `confirmedBalanceString` string, required — The total balance of confirmed transactions for the address (in the chain's base unit). Guaranteed to not lose precision.
      - `spendableBalanceString` string, required — The total balance of the address (in the chain's base unit) which may be used as inputs for creating new transactions in string representation. Guaranteed to not lose precision.
      - `updated` union — The last time a transaction affected the balance of this address
        - string, date-time
        - string, date
      - `balance` number
      - `lockedBalanceString` string
      - `reservedBalanceString` string
      - `totalReceived` number — The total amount received on this address (in the chain's base unit)
      - `totalSent` number — The total amount sent from this address (in the chain's base unit)
      - `transferCount` number
      - `tokens` object
      - `nfts` object
      - `unsupportedNfts` object
      - `type` unknown
      - `metadata` unknown
    - `coinSpecific` union
      - AlgorandAddress
        - `rootAddress` string, required
        - `trustedTokens` object[]
          - `state` 'pending' | 'active'
          - `limit` string
          - `token` string
        - `addressVersion` number
        - `threshold` number
        - `bitgoKey` unknown
        - `bitgoPubKey` string
      - AtomAddress
        - `rootAddress` string, required
        - `memoId` string, required
      - AvaxPAddress
        - `threshold` number, required
        - `addresses` string[], required
      - UtxoAddress
        - `redeemScript` string
        - `witnessScript` string
      - BitcoinCashAddress
        - `format` 'cashaddr' | 'base58'
        - `redeemScript` string
        - `witnessScript` string
      - CasperAddress
        - `accountHash` string, required
        - `rootAddress` string, required
        - `transferId` string, required
      - DotAddress
        - `rootAddress` string, required
        - `nonceTracker` object, required
          - `lastReservedNonce` number, required
          - `lastExecutedNonce` number, required
          - `detectedMissingNonces` object[], required
            - `nonce` number, required
            - `isNonceLocked` boolean, required
            - `nonceLockExpireTime` string, date
          - `detecMissingNoncesData` object[], required
            - `nonce` number, required
            - `isNonceLocked` boolean, required
            - `nonceLockExpireTime` string, date
      - EosAddress
        - `rootAddress` string, required
        - `memoId` string, required
      - EthereumAddress
        - `creationFailure` string[], required
        - `forwarderVersion` number, required
        - `nonce` number, required
        - `feeAddress` string, required
        - `pendingChainInitialization` boolean, required
        - `pendingDeployment` boolean, required
        - `txCount` number, required
        - `updateTime` string, date, required
        - `hopTxid` string
        - `salt` string
        - `usdtBug` boolean
        - `isTss` boolean
        - `isNonceLocked` boolean
        - `nonceLockExpireTime` string, date
        - `previousLowBalanceEmailSentAt` string, date
      - Ethereum2Address
        - `feeAddress` string
      - FiatAddress
        - `bankAccountId` string
        - `faBankAccountId` string
        - `bankAccount` BankAccountJson
          - `accountNumber` string, required
          - `address1` string, required
          - `name` string, required
          - `owner` object, required
            - `name` string, required
            - `address1` string, required
            - `address2` string
            - `address3` string
          - `idHash` string, required
          - `verificationState` string, required
          - `address2` string
          - `address3` string
          - `enterpriseId` string
          - `id` string
          - `routingNumber` string
          - `shortCountryCode` string
          - `swiftCode` string
          - `type` string
      - HederaAddress
        - `baseAddress` string, required
        - `memoId` string, required
      - OffchainAddressSubdocument
      - SolAddress
        - `rootAddress` string, required
        - `minimumFunding` number, required
        - `pendingChainInitialization` boolean, required
        - `trustedTokens` object[], required
          - `state` 'pending' | 'active'
          - `limit` string
          - `token` string
        - `nonceExpiresAt` string, date
        - `nonceTxRequestid` string
        - `type` string
      - StacksAddress
        - `baseAddress` string, required
        - `memoId` string, required
      - StellarAddress
        - `memoId` string, required
        - `rootAddress` string, required
      - TestcoinAddress
      - TezosAddress
        - `counter` number, required
        - `updateTime` string, date, required
        - `txCount` number, required
        - `pendingChainInitialization` boolean, required
        - `pendingPublicKeyRevelation` boolean, required
        - `creationFailure` string[], required
        - `delegate` string
        - `previousLowBalanceEmailSentAt` string, date
      - TronAddress
        - `rootPub` string, required
      - XRPAddress
        - `nonceTracker` object, required
          - `detectedMissingNonces` object[], required
            - `nonce` number, required
            - `isNonceLocked` boolean, required
            - `nonceLockExpireTime` string, date
          - `detectedMissingNoncesData` object[], required
            - `nonce` number, required
            - `isNonceLocked` boolean, required
            - `nonceLockExpireTime` string, date
      - TonAddress
        - `addresses` string[], required
    - `label` string — A human-readable label for the address
    - `lastNonce` number
    - `token` string
    - `proof` string
    - `signature` string
    - `lastConsolidatedTime` string, date
    - `needsConsolidation` boolean
    - `tokenConsolidationState` unknown
    - `tokenAddress` unknown
  - LightningWalletAddress
    - `coin` string, required — A cryptocurrency symbol or token ticker symbol
    - `wallet` string, required
    - `id` string — Platform public ID for an address
    - `address` string
    - `balance` TrimmedBalance
      - `balanceString` string, required — String representation of the balance. Guaranteed to not lose precision.
      - `confirmedBalanceString` string, required — The total balance of confirmed transactions for the address (in the chain's base unit). Guaranteed to not lose precision.
      - `spendableBalanceString` string, required — The total balance of the address (in the chain's base unit) which may be used as inputs for creating new transactions in string representation. Guaranteed to not lose precision.
      - `updated` union — The last time a transaction affected the balance of this address
        - string, date-time
        - string, date
      - `balance` number
      - `lockedBalanceString` string
      - `reservedBalanceString` string
      - `totalReceived` number — The total amount received on this address (in the chain's base unit)
      - `totalSent` number — The total amount sent from this address (in the chain's base unit)
      - `transferCount` number
      - `tokens` object
      - `nfts` object
      - `unsupportedNfts` object
      - `type` unknown
      - `metadata` unknown
    - `coinSpecific` union
      - AlgorandAddress
        - `rootAddress` string, required
        - `trustedTokens` object[]
          - `state` 'pending' | 'active'
          - `limit` string
          - `token` string
        - `addressVersion` number
        - `threshold` number
        - `bitgoKey` unknown
        - `bitgoPubKey` string
      - AtomAddress
        - `rootAddress` string, required
        - `memoId` string, required
      - AvaxPAddress
        - `threshold` number, required
        - `addresses` string[], required
      - UtxoAddress
        - `redeemScript` string
        - `witnessScript` string
      - BitcoinCashAddress
        - `format` 'cashaddr' | 'base58'
        - `redeemScript` string
        - `witnessScript` string
      - CasperAddress
        - `accountHash` string, required
        - `rootAddress` string, required
        - `transferId` string, required
      - DotAddress
        - `rootAddress` string, required
        - `nonceTracker` object, required
          - `lastReservedNonce` number, required
          - `lastExecutedNonce` number, required
          - `detectedMissingNonces` object[], required
            - `nonce` number, required
            - `isNonceLocked` boolean, required
            - `nonceLockExpireTime` string, date
          - `detecMissingNoncesData` object[], required
            - `nonce` number, required
            - `isNonceLocked` boolean, required
            - `nonceLockExpireTime` string, date
      - EosAddress
        - `rootAddress` string, required
        - `memoId` string, required
      - EthereumAddress
        - `creationFailure` string[], required
        - `forwarderVersion` number, required
        - `nonce` number, required
        - `feeAddress` string, required
        - `pendingChainInitialization` boolean, required
        - `pendingDeployment` boolean, required
        - `txCount` number, required
        - `updateTime` string, date, required
        - `hopTxid` string
        - `salt` string
        - `usdtBug` boolean
        - `isTss` boolean
        - `isNonceLocked` boolean
        - `nonceLockExpireTime` string, date
        - `previousLowBalanceEmailSentAt` string, date
      - Ethereum2Address
        - `feeAddress` string
      - FiatAddress
        - `bankAccountId` string
        - `faBankAccountId` string
        - `bankAccount` BankAccountJson
          - `accountNumber` string, required
          - `address1` string, required
          - `name` string, required
          - `owner` object, required
            - `name` string, required
            - `address1` string, required
            - `address2` string
            - `address3` string
          - `idHash` string, required
          - `verificationState` string, required
          - `address2` string
          - `address3` string
          - `enterpriseId` string
          - `id` string
          - `routingNumber` string
          - `shortCountryCode` string
          - `swiftCode` string
          - `type` string
      - HederaAddress
        - `baseAddress` string, required
        - `memoId` string, required
      - OffchainAddressSubdocument
      - SolAddress
        - `rootAddress` string, required
        - `minimumFunding` number, required
        - `pendingChainInitialization` boolean, required
        - `trustedTokens` object[], required
          - `state` 'pending' | 'active'
          - `limit` string
          - `token` string
        - `nonceExpiresAt` string, date
        - `nonceTxRequestid` string
        - `type` string
      - StacksAddress
        - `baseAddress` string, required
        - `memoId` string, required
      - StellarAddress
        - `memoId` string, required
        - `rootAddress` string, required
      - TestcoinAddress
      - TezosAddress
        - `counter` number, required
        - `updateTime` string, date, required
        - `txCount` number, required
        - `pendingChainInitialization` boolean, required
        - `pendingPublicKeyRevelation` boolean, required
        - `creationFailure` string[], required
        - `delegate` string
        - `previousLowBalanceEmailSentAt` string, date
      - TronAddress
        - `rootPub` string, required
      - XRPAddress
        - `nonceTracker` object, required
          - `detectedMissingNonces` object[], required
            - `nonce` number, required
            - `isNonceLocked` boolean, required
            - `nonceLockExpireTime` string, date
          - `detectedMissingNoncesData` object[], required
            - `nonce` number, required
            - `isNonceLocked` boolean, required
            - `nonceLockExpireTime` string, date
      - TonAddress
        - `addresses` string[], required
    - `label` string — A human-readable label for the address
    - `lastNonce` number
    - `token` string
    - `proof` string
    - `signature` string
    - `lastConsolidatedTime` string, date
    - `needsConsolidation` boolean
    - `tokenConsolidationState` unknown
    - `tokenAddress` unknown

## Other responses

- `400` — Bad Request

---

[API](https://skmtc.net/bitgo/apis/bitgo-api.md) · [All operations](https://skmtc.net/bitgo/apis/bitgo-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/bitgo/bitgo-api/revisions/e445c15e5bee/schema)
