Create Wallets - Multisignature

Generate a self-custody multisignature hot wallet with BitGo. See the Guide.

  1. Generate a self-custody multisignature hot wallet and keys in one step. When you generate a wallet, BitGo creates a user keychain locally on your machine, a backup keychain, and a BitGo keychain on a hardware-security module (HSM), then creates a wallet on the blockchain with these 3 public keys.

    This response contains critical key material. Save it in a secure place.

    Prerequisites: You must have a BitGo account. See Get Started.

    API Reference

// 1. Create Wallet
export BITGO_EXPRESS_HOST="<YOUR_LOCAL_HOST>"
export COIN="<ASSET_ID>"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export ENTERPRISE_ID="<YOUR_ENTERPRISE_ID>"
export WALLET_PASSPHRASE="<YOUR_BITGO_LOGIN_PASSPHRASE>"
export LABEL="<YOUR_WALLET_NAME>"

curl -X POST \
  http://$BITGO_EXPRESS_HOST/api/v2/$COIN/wallet/generate \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -d '{
    "enterprise": "'"$ENTERPRISE_ID"'",
    "passphrase": "'"$WALLET_PASSPHRASE"'",
    "label": "'"$LABEL"'",
    "multisigType": "onchain",
    "type": "hot"
}'
Response
// 1. Create Wallet Response
{
  "wallet": {
    "id": "6849948ac0623f81f74f63dbd8351d4f",
    "users": [
      {
        "user": "62ab90e06dfda30007974f0a52a12995",
        "permissions": ["admin", "spend", "view"]
      }
    ],
    "coin": "tbtc4",
    "label": "TBTC4 Self-Custody Wallet",
    "m": 2,
    "n": 3,
    "keys": [
      "68499487e6c77351bd3bbf04281fa8bb",
      "68499487cd07fc57de18f6481baa1903",
      "6849948902be620840a384c148d19979"
    ],
    "keySignatures": {
      "backupPub": "204119cfa9a1d0a00bd0e30b2c43d535dff36af557d1846385df7d47dc1a0092cc1eefbdc41b9f619f6d89d3597656c5e3f6b1ccc4b1f4331861c6b0993296eab9",
      "bitgoPub": "20784ad236269cd93ba6b922831cc102fdfba193e6be5e88ba6234de1e5232b4ba65db1a0e47f1fd8d038bd23878632e4c376b475b36e4a0d9516797c12630963b"
    },
    "enterprise": "62c5ae8174ac860007aff138a2d74df7",
    "organization": "62c5ae8174ac860007aff1555ffb960d",
    "bitgoOrg": "BitGo Trust",
    "tags": [
      "6849948ac0623f81f74f63dbd8351d4f",
      "62c5ae8174ac860007aff138a2d74df7"
    ],
    "disableTransactionNotifications": false,
    "freeze": {},
    "deleted": false,
    "approvalsRequired": 1,
    "isCold": false,
    "coinSpecific": {},
    "admin": {
      "policy": {
        "date": "2025-06-11T14:36:58.035Z",
        "id": "6849948a8f2bc3e1d74f63f3a91e00b2",
        "label": "default",
        "rules": [],
        "version": 0,
        "latest": true
      }
    },
    "clientFlags": [],
    "walletFlags": [],
    "allowBackupKeySigning": false,
    "recoverable": false,
    "startDate": "2025-06-11T14:36:58.000Z",
    "type": "hot",
    "buildDefaults": {},
    "customChangeKeySignatures": {},
    "hasLargeNumberOfAddresses": false,
    "multisigType": "onchain",
    "hasReceiveTransferPolicy": false,
    "creator": "62ab90e06dfda30007974f0a52a12995",
    "walletFullyCreated": true,
    "config": {},
    "balance": 0,
    "balanceString": "0",
    "rbfBalance": 0,
    "rbfBalanceString": "0",
    "confirmedBalance": 0,
    "confirmedBalanceString": "0",
    "spendableBalance": 0,
    "spendableBalanceString": "0",
    "unspentCount": 0,
    "receiveAddress": {
      "id": "6849948ac0623f81f74f63ead377af97",
      "address": "tb1q8n3p7dvqlhln5ek28aw9wjrp4y9avft2ta33km6790kupwx924xqn9ftsn",
      "chain": 20,
      "index": 0,
      "coin": "tbtc4",
      "wallet": "6849948ac0623f81f74f63dbd8351d4f",
      "coinSpecific": { "witnessScript": "5221024f5a8e9b7c6d3f2a1e0b4d8c7f6e5a4b3c2d1e0f9a8b7c6d5e4f3a2b1c0d9e8f21034a8c7b6d5f2e1a0c9b8d7f6e5a4b3c2d1e0f9a8b7c6d5e4f3a2b1c0d9e8f7a6b21029f8b7a6c5d4e3f2a1b0c9d8e7f6a5b4c3d2e1f0a9b8c7d6e5f4a3b2c1d0e9f8a53ae" }
    },
    "pendingApprovals": []
  },
  "userKeychain": {
    "id": "68499487e6c77351bd3bbf04281fa8bb",
    "pub": "xpub661MyMwAqRbcEst4tb4F36AfvoFtAy7U9viB7zapRqNnXhPknsPwNqhxpD1CqMGSGhq3hDMKQR1Br8gGxYygoR6SGic3XdJoTEzM5v9wyFy",
    "ethAddress": "0x944b592f950d24dd12dc405527e355d3d3922856",
    "source": "user",
    "type": "independent",
    "encryptedPrv": "{\"v\":2,\"m\":65536,\"t\":3,\"p\":4,\"salt\":\"Xh7fKpLqN3mVwT9sBzC1Rg==\",\"iv\":\"LFGqTPsYGT8+wFDD\",\"ct\":\"kP3n7Xq2Rf8A9PD/7SjttGlGW4YvSitFtJNGn+LJdRLtLTKQZt3Eo8A1mJtE7pJTd1S0APpPCyQPUsVro6SDxYAbPeBBaWQ7YlOiDbWkTqa8XYXeJghvJufVdANNBqEGanMy8WI/ZIv6xItCkk2mExaMtcEotpj26N70VrhIuA==\"}",
    "prv": "xprv9s21ZrQH143K2PobnZXEfxDwNmRPmWPcnhnaKcBCsVqoeu4cFL5gq3PUxv8jZXassaVMAxdrZAi91kyY2RVRkoNW2x5JKSBnozsB4Nc4m5H"
  },
  "backupKeychain": {
    "id": "68499487cd07fc57de18f6481baa1903",
    "pub": "xpub661MyMwAqRbcEfnfBkVRk9BB1SrYaFR884ndYpmNXnci6U2wrAQCsFiD21c49Aq7EvtK6QFzDzMwmFKVqi1bTL7kmuCEJ78bFn9Rq6NyLDV",
    "ethAddress": "0x1907355a7022491140d0e7e3447303c94c2be0f1",
    "source": "backup",
    "type": "independent",
    "encryptedPrv": "{\"v\":2,\"m\":65536,\"t\":3,\"p\":4,\"salt\":\"Rk4jH2nLmQpWsT7vBxC9Yw==\",\"iv\":\"fpzCzHLb7307IeTW\",\"ct\":\"mL9p4Wt6Sg1CzE5s1phuRSEcoxdv4pUeqqpL0iDLpKWQ/Uz+HUrmLX1wE+WpkTTqLVF+hqQwj8f4f3LRTpiAtpvRrrmBmLJ4gP0SlVgz9ELHdR96U14UXmfozmTggJFmaQmnVsary/a4fCBClSEDTJg3EH5xMQW7QExlahRClQ==\"}",
    "prv": "xprv9s21ZrQH143K2BiC5ixRP1ESTR24AnhGkqs2kSMkyT5jDfhoJd5xKTPjAkMwgvkHDmvBTMq6ck679XNTtdd1fz1DmxifzPi8HkkP7GjKyfj"
  },
  "bitgoKeychain": {
    "id": "6849948902be620840a384c148d19979",
    "pub": "xpub661MyMwAqRbcGCXsEAmctkLstGa92f5ugiD3hvCL3Wyt8BqHYGCVsL2x6PgNgJeq8Aabtz92sMzq4Ezac459QkDmxowKqoL35gNJXEJDdeo",
    "ethAddress": "0x92f48893ab51470c2253a97aea8071da70bbd461",
    "source": "bitgo",
    "type": "independent",
    "isBitGo": true,
    "isTrust": false,
    "hsmType": "institutional"
  },
  "responseType": "WalletWithKeychains",
  "warning": "Be sure to backup the backup keychain -- it is not stored anywhere else!"
}