# Withdraw from Advanced Wallet

Source: https://developers.bitgo.com/docs/withdraw-advanced-wallet

## Overview

Withdrawals from advanced wallets use the Advanced Wallet Manager (AWM), Master BitGo Express (MBE), and a key management service (KMS) to build and half sign a transaction with the user key before submitting it to BitGo for final signing with the BitGo key.

## Prerequisites

* [Get Started](/docs/get-started-intro)
* [Set Up Advanced Wallets Infrastructure](/docs/advanced-wallets-set-up-infrastructure)
* [Create Advanced Wallets](/docs/wallets-create-wallets)
* [Create Whitelists](/docs/wallets-whitelists-create) (Optional)
* [Deposit Assets](/docs/deposit-assets)

## Cookbook

Need just the steps? Expand the cookbook below to get started:

<Cookbook slug="withdraw-advanced-wallet" title="Withdraw from Advanced Wallet" />

## Steps

### 1. Build, Sign, and Send Transaction

Build and sign a transaction and send it to BitGo, all in one call. Using the same endpoint, you can make a withdrawal to one or many recipients. The following example shows the minimum required parameters for sending bitcoin from an advanced wallet.

>Endpoint: [Advanced Wallets - Send to Many](/reference/advancedwalletsendmany)

```shell Multisig
export IP_OR_HOSTNAME="<YOUR_SERVER_IP_OR_HOSTNAME>"
export COIN="<ASSET_ID>"
export WALLET_ID="<YOUR_WALLET_ID>"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export PUBKEY="<USER_PUBLIC_KEY>"
export ADDRESS="<DESTINATION_ADDRESS>"
export AMOUNT="<AMOUNT_IN_BASE_UNITS>"

curl -X POST \
  http://$IP_OR_HOSTNAME/api/v1/$COIN/advancedwallet/$WALLET_ID/sendMany \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -d '{
    "source": "user",
    "pubkey": "'"$PUBKEY"'",
    "recipients": [
      {
        "address": "'"$ADDRESS"'",
        "amount": "'"$AMOUNT"'"
      }
    ],
    "type": "transfer"
}'
```
```shell Multisig (Send to Many)
export IP_OR_HOSTNAME="<YOUR_SERVER_IP_OR_HOSTNAME>"
export COIN="<ASSET_ID>"
export WALLET_ID="<YOUR_WALLET_ID>"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export PUBKEY="<USER_PUBLIC_KEY>"
export ADDRESS_1="<DESTINATION_ADDRESS_1>"
export ADDRESS_2="<DESTINATION_ADDRESS_2>"
export AMOUNT_1="<AMOUNT_1_IN_BASE_UNITS>"
export AMOUNT_2="<AMOUNT_2_IN_BASE_UNITS>"

curl -X POST \
  http://$IP_OR_HOSTNAME/api/v1/$COIN/advancedwallet/$WALLET_ID/sendMany \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -d '{
    "source": "user",
    "pubkey": "'"$PUBKEY"'",
    "recipients": [
      {
        "address": "'"$ADDRESS_1"'",
        "amount": "'"$AMOUNT_1"'"
      },
      {
        "address": "'"$ADDRESS_2"'",
        "amount": "'"$AMOUNT_2"'"
      }
    ],
    "type": "transfer"
}'
```
```shell MPC
export IP_OR_HOSTNAME="<YOUR_SERVER_IP_OR_HOSTNAME>"
export COIN="<ASSET_ID>"
export WALLET_ID="<YOUR_WALLET_ID>"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export COMMON_KEYCHAIN="<USER_COMMON_KEYCHAIN>"
export ADDRESS="<DESTINATION_ADDRESS>"
export AMOUNT="<AMOUNT_IN_BASE_UNITS>"

curl -X POST \
  http://$IP_OR_HOSTNAME/api/v1/$COIN/advancedwallet/$WALLET_ID/sendMany \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -d '{
    "source": "user",
    "commonKeychain": "'"$COMMON_KEYCHAIN"'",
    "recipients": [
      {
        "address": "'"$ADDRESS"'",
        "amount": "'"$AMOUNT"'"
      }
    ],
    "type": "transfer"
}'
```
```shell MPC (Send to Many)
export IP_OR_HOSTNAME="<YOUR_SERVER_IP_OR_HOSTNAME>"
export COIN="<ASSET_ID>"
export WALLET_ID="<YOUR_WALLET_ID>"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export COMMON_KEYCHAIN="<USER_COMMON_KEYCHAIN>"
export ADDRESS_1="<DESTINATION_ADDRESS_1>"
export ADDRESS_2="<DESTINATION_ADDRESS_2>"
export AMOUNT_1="<AMOUNT_1_IN_BASE_UNITS>"
export AMOUNT_2="<AMOUNT_2_IN_BASE_UNITS>"

curl -X POST \
  http://$IP_OR_HOSTNAME/api/v1/$COIN/advancedwallet/$WALLET_ID/sendMany \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -d '{
    "source": "user",
    "commonKeychain": "'"$COMMON_KEYCHAIN"'",
    "recipients": [
      {
        "address": "'"$ADDRESS_1"'",
        "amount": "'"$AMOUNT_1"'"
      },
      {
        "address": "'"$ADDRESS_2"'",
        "amount": "'"$AMOUNT_2"'"
      }
    ],
    "type": "transfer"
}'
```

> 📘 **Note:** If you're building transactions for a UTXO asset in quick succession, BitGo recommends reserving unspents by passing the `reservation` and `expireTime` parameters. Reserving unspents avoids errors by ensuring subsequent builds don't include the UTXO.

#### Step Result

BitGo uses the data you pass to build a half-signed transaction using the user key in the AWM. The following examples withdrawal 10,000 sats of TBTC4. BitGo simultaneously receives the half signed transaction for final signing with the BitGo key.

If your withdrawal doesn't require approval, BitGo applies the final signature using the BitGo key and broadcasts the transaction to the blockchain. If you [Create Policy Rules](/docs/wallets-whitelists-create) to require approvals on withdrawals, the transaction remains in a pending-approval status until a wallet admin approves it.

```json JSON
{
  "transfer": {
    "entries": [
      {
        "address": "2N1poiHTi5ur8hz5QBhNoy88bYzqrWYvBbV",
        "wallet": "6553e933288be490293ae748efafeaaf",
        "value": -100000,
        "valueString": "-100000"
      },
      {
        "address": "2Mz2uycewBnqGbzR74B9zF1dPaZw2PJjjwy",
        "wallet": "6553e933288be490293ae748efafeaaf",
        "value": -100000,
        "valueString": "-100000"
      },
      {
        "address": "2N2JC4Fv1LWo1efTh8Ei1tGBwcZvonJqH6Z",
        "wallet": "6553e933288be490293ae748efafeaaf",
        "value": -100000,
        "valueString": "-100000"
      },
      {
        "address": "2N69sUcfB32YFS7Q7KnpysoV4FMSP5RQUb7",
        "wallet": "6553e933288be490293ae748efafeaaf",
        "value": -100000,
        "valueString": "-100000"
      },
      {
        "address": "2Myx8nY8ReERqUwu9H96Lb2K4yYjs3xY8GH",
        "value": 10000,
        "valueString": "10000",
        "isChange": false,
        "isPayGo": false
      },
      {
        "address": "tb1q5xtred89revxp789r6dmvyf74vgecczp2ch2hvhlj8anjkcepqtspu7j7d",
        "wallet": "6553e933288be490293ae748efafeaaf",
        "value": 331419,
        "valueString": "331419",
        "isChange": true,
        "isPayGo": false
      }
    ],
    "id": "6553ee12d5a49ecc9baccdcbe0563448",
    "coin": "tbtc4",
    "wallet": "6553e933288be490293ae748efafeaaf",
    "walletType": "hot",
    "enterprise": "62c5ae8174ac860007aff138a2d74df7",
    "txid": "e7648c85edac7f9870e511b4ef95b62b1878556791bd52ac715cb2cd4b466e6f",
    "txidType": "transactionHash",
    "height": 999999999,
    "heightId": "999999999-6553ee12d5a49ecc9baccdcbe0563448",
    "date": "2023-11-14T22:00:51.655Z",
    "type": "send",
    "value": -68581,
    "valueString": "-68581",
    "intendedValueString": "-68581",
    "baseValue": -10000,
    "baseValueString": "-10000",
    "baseValueWithoutFees": -10000,
    "baseValueWithoutFeesString": "-10000",
    "feeString": "58581",
    "payGoFee": 0,
    "payGoFeeString": "0",
    "usd": -24.3138393906,
    "usdRate": 35452.73383387,
    "state": "signed",
    "instant": false,
    "isReward": false,
    "isFee": false,
    "tags": [
      "6553e933288be490293ae748efafeaaf",
      "62c5ae8174ac860007aff138a2d74df7"
    ],
    "history": [
      { "date": "2023-11-14T22:00:51.654Z", "action": "signed" },
      {
        "date": "2023-11-14T22:00:50.982Z",
        "user": "62ab90e06dfda30007974f0a52a12995",
        "action": "created"
      }
    ],
    "signedDate": "2023-11-14T22:00:51.654Z",
    "vSize": 643,
    "metadata": [],
    "signedTime": "2023-11-14T22:00:51.654Z",
    "createdTime": "2023-11-14T22:00:50.982Z"
  },
  "txid": "e7648c85edac7f9870e511b4ef95b62b1878556791bd52ac715cb2cd4b466e6f",
  "tx": "01000000000104f79f5a4eb395daa55599afc88cb36413a2e7fe755a575833a7d5044b2edff42900000000232200200310e0ff3cdca1f56a7bfa29b130173041dc37d3a79c185bcd22b91ad214cdf3ffffffffd5c76ddf8e1424dfae9b11027ee81cace9ca2c9f5885ab8b59d527dcf048cdb10000000023220020fe79161f81c6536ffaed66f31d29bd29c8f672e5298bb74794d95aeca191368effffffff1c5e85a0d0f72fa97809aa8fe007b734d2afd510284d24fa7cb63f254061b9bc00000000232200205cdefd195a48e242e7193a7deb99d9c811944a3d0a2a23291263557d72ae9c19ffffffff0a8510e7c8d3e7d25b56c32359d5a5a886d5681e7ed9f960c90acce0c396e4f900000000232200207f311c104e7eedeb3408e0d516a229b212159590fe45180d6203f7423f928e49ffffffff02102700000000000017a914498d775e94669934939d5494a9651401577b1faa879b0e050000000000220020a1963cb4e51e5860f8e51e9bb6113eab119c6041562eabb2ff91fb395b190817040047304402203b783246c3847d07a22de396944842b9fbc1376d4828eb10b0781597cbd1488702202a21bc8a7621cd33f011bd7c1d4ef66ce895c687ad1122f9c2594a498bff774c0147304402202fc02dd0e81ea254b80ece01a8a72371220e7b8c864243b1b04d4bc09c18060b02204259c89fb37a420777acad4b0effdffd9d2f25906ca3f4cb30f3c1c8af880dc00169522103c02e9ce2cbe477702e0d8284a479dc6481d0e3f2f3d11c9d1af0a4854df96eb62102a7318bad55a6dc71ff2efceaadff31bfc223bef8b8509604bbfdbbae77875fda2103dabd87d3efb0028c03d0d3aea1f58294f82cfcfa3ed450872ee4ec8cb146fe4e53ae0400483045022100b535a4d9d2e3bd2d980e8c0cfe936acaa26460c477f8763bafa6bcf095c88db602205f372432e48969a08d844ea49ffc678baa36cccd9d3f62cba3b01b07b1b4415a0147304402201c7caa9a1ccb80d98af2a02341db9ea4b9d1cd2606f78a9d940c222e9fd4b2c10220250a81ed74cf19aa1a4ed263308fb159c569bfd585a39c1803bc20c1ef32e4f6016952210377862047d8848c1a91de4fa78a354e198082bfb174ee8efa4cb697ebe4d96efd21036996a148aa85269cb1fc80d5a6643695bd03b0f23faa8ec51080b5a2b7348ac421028c57ff93d260387ba090fc914122efa62a4ac9e8a1b5abdc5e56399686b421a153ae0400483045022100fcef9fa4481dd9b9176f2b8ac07e56db3ed761adf9f2042bb5e9ab7ffb332f5302207bd4ac4216b41fca47f57778a758bf06a66225e142661ba7e8cf78d003588d6d0147304402201fe2ae51fa4e2488ccd7a2041d5061d8c531708660116287001873951c0e26f20220794a0423672fa88ec5ea196693d561c9ccdf678b1645e7efec83c0189445b02d016952210279e294cb5c7b75b0cd0a4d6fe94fdcbae53dbe12eece3ecc02edefbcffe2b3ab2102ed3a458ad2077b1c5a46646c3a5e2f39b0ada3bd59a3ab7e6bba915d2ce886592103b45bcfd5e06da1fabfab25afde9c3b483ec111c7c22e4478e63be8f6ed12346553ae0400483045022100e69ba5cfbafd28ffd33db6616115c1c8af628b8d7c48cf4dbe67feba2226a347022044b46ba257379680789e9903bf818d3e1cf550d7699037733fa0bf95fe3ad1830147304402207d5a9f93040ed380fe1a41e99991aa6ec8cec458e4da917212b20f9ee89e60dd02206e588bfcb2ff01664cd99092a137e7b3292feea0a8adc3ca0d9efd22b923cd460169522102dcf53d1927f945d7b2ad38d77c9c47affa4fe3018d7be64e9e9a04b4420977f721035e1ad2ff6c207f82b3711a5560ad25f00d1040101eaa072970d662d59ceee99e210216dafba93a02bfce39b7f164e76faa452647698f9aba6528c7594dd4a137d25153ae00000000",
  "status": "signed"
}
```
```json JSON (pending approval)
{
  "error": "triggered all transactions policy",
  "pendingApproval": {
    "id": "655686880765186f0b3e9e88e1bdd0f4",
    "coin": "tbtc4",
    "wallet": "6553e933288be490293ae748efafeaaf",
    "enterprise": "62c5ae8174ac860007aff138a2d74df7",
    "creator": "62ab90e06dfda30007974f0a52a12995",
    "createDate": "2023-11-16T21:15:52.703Z",
    "info": {
      "type": "transactionRequest",
      "transactionRequest": {
        "requestedAmount": "10000",
        "fee": 45242,
        "sourceWallet": "6553e933288be490293ae748efafeaaf",
        "policyUniqueId": "6553e933288be490293ae753",
        "recipients": [
          {
            "address": "2N3sBpM1RnWRMXnEVoUWnM7xtYzL756JE2Q",
            "amount": "10000",
            "_id": "655686880765186f0b3e9e8a"
          }
        ],
        "buildParams": {
          "recipients": [
            {
              "address": "2N3sBpM1RnWRMXnEVoUWnM7xtYzL756JE2Q",
              "amount": "10000"
            }
          ],
        "changeAddressType": [
          "p2trMusig2",
          "p2wsh",
          "p2shP2wsh",
          "p2sh",
          "p2tr"
        ],
        "txFormat": "psbt"
        },
        "coinSpecific": {
          "tbtc4": {
            "txHex": "01000000000101eac5e7d68acfc2349672fb99094e79c2006e5fd663475c8f1eb6f29095970b740100000000ffffffff02102700000000000017a914747e6b7f5db53794b0fc01d95878e0f9b6db96738746c1020000000000220020efb9deaabeab5d62cecc363f24cd6deafcdd14d93d8734f7f01ed3953e732a640500483045022100cd6c221e4cefbb51aa82087d86e7d089b2473eb21ae809dba89eb9f13c4caf19022000f3b7f1b7fec2dc49cbfce35baa69ca37ab9ee8e51c779cde5b98a653f3e142010000695221029bde55661e4f359cf9ca2d1846c235e752f760ed6d65e2018f821253e78b3c722103f2b4a813ab79e4fb46edf3a6a87fb154a85b45810158e949f41a3fce3c9bf574210399a6d766f6d3a3843f8479446ee766b5745dc15c24d1db5149214d27987bd29453ae00000000"
          }
        }
      }
    },
    "state": "pendingApproval",
    "scope": "wallet",
    "userIds": [
      "62ab90e06dfda30007974f0a52a12995",
      "627ff9325a5c1b0007c05a40d15e1522"
    ],
    "approvalsRequired": 1,
    "singleRunResults": [
      {
        "ruleId": "Custody Enterprise Transaction ID Verification",
        "triggered": false,
        "_id": "655686880765186f0b3e9e89"
      }
    ],
    "resolvers": []
  },
  "triggeredPolicy": "6553e933288be490293ae753fefc9f1a"
}
```
```json JSON (send to many)
{
  "transfer": {
    "entries": [
      {
        "address": "tb1q5xtred89revxp789r6dmvyf74vgecczp2ch2hvhlj8anjkcepqtspu7j7d",
        "wallet": "6553e933288be490293ae748efafeaaf",
        "value": -331419,
        "valueString": "-331419"
      },
      {
        "address": "2N6PnWqz3pH11gduEqd4oK4CM4nLEmwPkbr",
        "value": 10000,
        "valueString": "10000",
        "isChange": false,
        "isPayGo": false
      },
      {
        "address": "2NBYkVicCAKQDkCvYmfXTTB9rbg5ZtWdqtg",
        "value": 10000,
        "valueString": "10000",
        "isChange": false,
        "isPayGo": false
      },
      {
        "address": "tb1qrj4cj06qy7lgxdc037sn05fvssdfds34wyc2x4hryc2etzn9wevsedwstj",
        "wallet": "6553e933288be490293ae748efafeaaf",
        "value": 291034,
        "valueString": "291034",
        "isChange": true,
        "isPayGo": false
      }
    ],
    "id": "6553f0bcfa3e61e0d74ed0ab5d6c1fa5",
    "coin": "tbtc4",
    "wallet": "6553e933288be490293ae748efafeaaf",
    "walletType": "hot",
    "enterprise": "62c5ae8174ac860007aff138a2d74df7",
    "txid": "8747673834d6c71560a2816963585718567419020dc58151d2f7e1ed8c57de14",
    "txidType": "transactionHash",
    "height": 999999999,
    "heightId": "999999999-6553f0bcfa3e61e0d74ed0ab5d6c1fa5",
    "date": "2023-11-14T22:12:13.065Z",
    "type": "send",
    "value": -40385,
    "valueString": "-40385",
    "intendedValueString": "-40385",
    "baseValue": -20000,
    "baseValueString": "-20000",
    "baseValueWithoutFees": -20000,
    "baseValueWithoutFeesString": "-20000",
    "feeString": "20385",
    "payGoFee": 0,
    "payGoFeeString": "0",
    "usd": -14.3781221255,
    "usdRate": 35602.63,
    "state": "signed",
    "instant": false,
    "isReward": false,
    "isFee": false,
    "tags": [
      "6553e933288be490293ae748efafeaaf",
      "62c5ae8174ac860007aff138a2d74df7"
    ],
    "history": [
      { "date": "2023-11-14T22:12:13.063Z", "action": "signed" },
      {
        "date": "2023-11-14T22:12:12.415Z",
        "user": "62ab90e06dfda30007974f0a52a12995",
        "action": "created"
      }
    ],
    "signedDate": "2023-11-14T22:12:13.063Z",
    "vSize": 222,
    "metadata": [],
    "signedTime": "2023-11-14T22:12:13.063Z",
    "createdTime": "2023-11-14T22:12:12.415Z"
  },
  "txid": "8747673834d6c71560a2816963585718567419020dc58151d2f7e1ed8c57de14",
  "tx": "010000000001016f6e464bcdb25c71ac52bd91675578182bb695efb411e570987faced858c64e70100000000ffffffff03102700000000000017a91490381d6ff4f24c0ae5fe266dbf5a0fa7dd56ae8087102700000000000017a914c8c2cd4473b8fb42cb473fceae76c746413549e887da700400000000002200201cab893f4027be83370f8fa137d12c841a96c2357130a356e32615958a6576590400483045022100fb63843d39f45cacd43cfcc871529204834061a9f7d622127a0474438ee47f210220057c12cf181ee5425b2f09aaa79d201ef300506551ad46f67f8fed46ce81138f01473044022017dc3f36b3741de04766560bd1448d7e0668177537815c3884737540b477d2e4022004c467ef011259e46d67993067c8b1f7aa4c9a7cd7614bf5d7b3ef3fd61f66ef0169522102b29d8c50c4c38ef4deac8019cccbdc9ad425c2834402df1f07e20f774d61e1c321024f40221c5e1b2169744d7427d2854b0454b774288f3df5a432acd3f2153dc6672102ee439860366aa10bac0d3b6bdfd129ec6c89c785e65b746452359921f29d16c953ae00000000",
  "status": "signed"
}
```
```json JSON (send to many & pending approval)
{
  "error": "triggered all transactions policy",
  "pendingApproval": {
    "id": "65568eda6c1568b87f40a6131d4fbc89",
    "coin": "tbtc4",
    "wallet": "6553e933288be490293ae748efafeaaf",
    "enterprise": "62c5ae8174ac860007aff138a2d74df7",
    "creator": "62ab90e06dfda30007974f0a52a12995",
    "createDate": "2023-11-16T21:51:22.221Z",
    "info": {
      "type": "transactionRequest",
      "transactionRequest": {
        "requestedAmount": "20000",
        "fee": 51622,
        "sourceWallet": "6553e933288be490293ae748efafeaaf",
        "policyUniqueId": "6553e933288be490293ae753",
        "recipients": [
          {
            "address": "2MzCZbQ2pcHKBPzhpdeaKBgu52YtqdDv6Le",
            "amount": "10000",
            "_id": "65568eda6c1568b87f40a615"
          },
          {
            "address": "2NDi4jr1DjqpWBU6FJRqq5uaiWihwXJAWSU",
            "amount": "10000",
            "_id": "65568eda6c1568b87f40a616"
          }
        ],
        "buildParams": {
          "recipients": [
            {
              "address": "2MzCZbQ2pcHKBPzhpdeaKBgu52YtqdDv6Le",
              "amount": "10000"
            },
            {
              "address": "2NDi4jr1DjqpWBU6FJRqq5uaiWihwXJAWSU",
              "amount": "10000"
            }
          ],
        "changeAddressType": [
          "p2trMusig2",
          "p2wsh",
          "p2shP2wsh",
          "p2sh",
          "p2tr"
        ],
        "txFormat": "psbt"
        },
        "coinSpecific": {
          "tbtc4": {
            "txHex": "01000000000101c3c8c2975a442a076dbb7c1ff7b35c62eee8b684857de2dcff75bac8d5cc40ff0100000000ffffffff03102700000000000017a9144c47ff958d212988eb5e0407ede223d66d8fdbab87102700000000000017a914e07606a95924b156375a9b3929c2ae63db20e3bd8780a90100000000002200209cb3a333ddbdb7496ad4c7ee8f339ac2e3dfb648e3dfec4b0635b0e5541102610500483045022100883f2c5a762a307380723cad5d536329b45aa2a67ee5c53940551c926902929002203cba824bc6fc01ba6510131b47137dc7b292d96938c89c7e12b891ca039781f601000069522102b2c328f03cb3b1a513adaae92226dfbaeabfdf053ba5057b1922a327798261a22102c0e4a38730d48b220547abe8d6676c9a432245c7c968b5e8e9609a7837c773b021025e180472019c87bc2cdef9e1bc787369e9e5fd6212c5f01549bb96c155e8cdbd53ae00000000"
          }
        }
      }
    },
    "state": "pendingApproval",
    "scope": "wallet",
    "userIds": [
      "62ab90e06dfda30007974f0a52a12995",
      "627ff9325a5c1b0007c05a40d15e1522"
    ],
    "approvalsRequired": 1,
    "singleRunResults": [
      {
        "ruleId": "Custody Enterprise Transaction ID Verification",
        "triggered": false,
        "_id": "65568eda6c1568b87f40a614"
      }
    ],
    "resolvers": []
  },
  "triggeredPolicy": "6553e933288be490293ae753fefc9f1a"
}
```

### 2. (Optional) Approve Transaction

> 📘 **Note:** If you configure an approval requirement for withdrawals, you can't approve your own transactions - another admin must approve them.

>Endpoint: [Update Pending Approval](/reference/v2approvalupdate)

```shell cURL
export APPROVAL_ID="<APPROVAL_ID>"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export OTP="<YOUR_OTP>"

curl -X PUT \
  https://app.bitgo-test.com/api/v2/pendingApprovals/$APPROVAL_ID \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -d '{
    "state": "approved",
    "otp": "'"$OTP"'"
  }'
```
```js JavaScript
const baseCoin = this.bitgoSDK.coin(initialPendingApproval.coin);
const pendingApproval = await baseCoin.pendingApprovals().get({ id: initialPendingApproval.id });
const result = await pendingApproval.approve(params);
```

#### Step Result

Once approved, BitGo rebuilds the half-signed transaction, applying the most up-to-date fees. BitGo then applies the final signature using the BitGo key and broadcasts the transaction to the blockchain.

```json JSON
{
  "id": "655686880765186f0b3e9e88e1bdd0f4",
  "coin": "tbtc4",
  "wallet": "6553e933288be490293ae748efafeaaf",
  "enterprise": "62c5ae8174ac860007aff138a2d74df7",
  "creator": "62ab90e06dfda30007974f0a52a12995",
  "createDate": "2023-11-16T21:15:52.703Z",
  "info": {
    "type": "transactionRequest",
    "transactionRequest": {
      "requestedAmount": "10000",
      "fee": 45242,
      "sourceWallet": "6553e933288be490293ae748efafeaaf",
      "policyUniqueId": "6553e933288be490293ae753",
      "recipients": [
        {
          "address": "2N3sBpM1RnWRMXnEVoUWnM7xtYzL756JE2Q",
          "amount": "10000",
          "_id": "655686880765186f0b3e9e8a"
        }
      ],
      "buildParams": {
        "recipients": [
          {
            "address": "2N3sBpM1RnWRMXnEVoUWnM7xtYzL756JE2Q",
            "amount": "10000"
          }
        ],
        "changeAddressType": [
          "p2trMusig2",
          "p2wsh",
          "p2shP2wsh",
          "p2sh",
          "p2tr"
        ],
        "txFormat": "psbt"
      },
      "coinSpecific": {
        "tbtc4": {
          "txHex": "01000000000101eac5e7d68acfc2349672fb99094e79c2006e5fd663475c8f1eb6f29095970b740100000000ffffffff02102700000000000017a914747e6b7f5db53794b0fc01d95878e0f9b6db96738746c1020000000000220020efb9deaabeab5d62cecc363f24cd6deafcdd14d93d8734f7f01ed3953e732a640500483045022100cd6c221e4cefbb51aa82087d86e7d089b2473eb21ae809dba89eb9f13c4caf19022000f3b7f1b7fec2dc49cbfce35baa69ca37ab9ee8e51c779cde5b98a653f3e142010000695221029bde55661e4f359cf9ca2d1846c235e752f760ed6d65e2018f821253e78b3c722103f2b4a813ab79e4fb46edf3a6a87fb154a85b45810158e949f41a3fce3c9bf574210399a6d766f6d3a3843f8479446ee766b5745dc15c24d1db5149214d27987bd29453ae00000000"
        }
      },
      "validTransaction": "01000000000101eac5e7d68acfc2349672fb99094e79c2006e5fd663475c8f1eb6f29095970b740100000000ffffffff02102700000000000017a914747e6b7f5db53794b0fc01d95878e0f9b6db96738746c1020000000000220020efb9deaabeab5d62cecc363f24cd6deafcdd14d93d8734f7f01ed3953e732a640400483045022100cd6c221e4cefbb51aa82087d86e7d089b2473eb21ae809dba89eb9f13c4caf19022000f3b7f1b7fec2dc49cbfce35baa69ca37ab9ee8e51c779cde5b98a653f3e14201473044022002b246c43722fec49858caf6b0605a0d01a6b6c13c964b84bf272604fd3951780220324ee44ba3ce8febb154c317e688a5f6ed410ad8e2bd77c5678bf1f7f3eb45f601695221029bde55661e4f359cf9ca2d1846c235e752f760ed6d65e2018f821253e78b3c722103f2b4a813ab79e4fb46edf3a6a87fb154a85b45810158e949f41a3fce3c9bf574210399a6d766f6d3a3843f8479446ee766b5745dc15c24d1db5149214d27987bd29453ae00000000",
      "validTransactionHash": "ff40ccd5c8ba75ffdce27d8584b6e8ee625cb3f71f7cbb6d072a445a97c2c8c3"
    }
  },
  "state": "approved",
  "scope": "wallet",
  "userIds": [
    "62ab90e06dfda30007974f0a52a12995",
    "627ff9325a5c1b0007c05a40d15e1522"
  ],
  "approvalsRequired": 1,
  "singleRunResults": [
    {
      "ruleId": "Custody Enterprise Transaction ID Verification",
      "triggered": false,
      "_id": "655686880765186f0b3e9e89"
    }
  ],
  "resolvers": [
    {
      "user": "627ff9325a5c1b0007c05a40d15e1522",
      "date": "2023-11-16T21:33:24.644Z",
      "resolutionType": "pending"
    }
  ]
}
```
```json JSON (send to many)
{
  "id": "65568eda6c1568b87f40a6131d4fbc89",
  "coin": "tbtc4",
  "wallet": "6553e933288be490293ae748efafeaaf",
  "enterprise": "62c5ae8174ac860007aff138a2d74df7",
  "creator": "62ab90e06dfda30007974f0a52a12995",
  "createDate": "2023-11-16T21:51:22.221Z",
  "info": {
    "type": "transactionRequest",
    "transactionRequest": {
      "requestedAmount": "20000",
      "fee": 51622,
      "sourceWallet": "6553e933288be490293ae748efafeaaf",
      "policyUniqueId": "6553e933288be490293ae753",
      "recipients": [
        {
          "address": "2MzCZbQ2pcHKBPzhpdeaKBgu52YtqdDv6Le",
          "amount": "10000",
          "_id": "65568eda6c1568b87f40a615"
        },
        {
          "address": "2NDi4jr1DjqpWBU6FJRqq5uaiWihwXJAWSU",
          "amount": "10000",
          "_id": "65568eda6c1568b87f40a616"
        }
      ],
      "buildParams": {
        "recipients": [
          {
            "address": "2MzCZbQ2pcHKBPzhpdeaKBgu52YtqdDv6Le",
            "amount": "10000"
          },
          {
            "address": "2NDi4jr1DjqpWBU6FJRqq5uaiWihwXJAWSU",
            "amount": "10000"
          }
        ],
        "changeAddressType": [
          "p2trMusig2",
          "p2wsh",
          "p2shP2wsh",
          "p2sh",
          "p2tr"
        ],
        "txFormat": "psbt"
      },
      "coinSpecific": {
        "tbtc4": {
          "txHex": "01000000000101c3c8c2975a442a076dbb7c1ff7b35c62eee8b684857de2dcff75bac8d5cc40ff0100000000ffffffff03102700000000000017a9144c47ff958d212988eb5e0407ede223d66d8fdbab87102700000000000017a914e07606a95924b156375a9b3929c2ae63db20e3bd8780a90100000000002200209cb3a333ddbdb7496ad4c7ee8f339ac2e3dfb648e3dfec4b0635b0e5541102610500483045022100883f2c5a762a307380723cad5d536329b45aa2a67ee5c53940551c926902929002203cba824bc6fc01ba6510131b47137dc7b292d96938c89c7e12b891ca039781f601000069522102b2c328f03cb3b1a513adaae92226dfbaeabfdf053ba5057b1922a327798261a22102c0e4a38730d48b220547abe8d6676c9a432245c7c968b5e8e9609a7837c773b021025e180472019c87bc2cdef9e1bc787369e9e5fd6212c5f01549bb96c155e8cdbd53ae00000000"
        }
      },
      "validTransaction": "01000000000101c3c8c2975a442a076dbb7c1ff7b35c62eee8b684857de2dcff75bac8d5cc40ff0100000000ffffffff03102700000000000017a9144c47ff958d212988eb5e0407ede223d66d8fdbab87102700000000000017a914e07606a95924b156375a9b3929c2ae63db20e3bd8780a90100000000002200209cb3a333ddbdb7496ad4c7ee8f339ac2e3dfb648e3dfec4b0635b0e5541102610400483045022100883f2c5a762a307380723cad5d536329b45aa2a67ee5c53940551c926902929002203cba824bc6fc01ba6510131b47137dc7b292d96938c89c7e12b891ca039781f60147304402203c309e14eda12d133d7885deddbf95b15878fc69758bd81bb3b3fbaf1088c8dc02201286da4e0ffde355d399b6659feb2d30db28f26586e0de9d3f8f9a6fb701ac330169522102b2c328f03cb3b1a513adaae92226dfbaeabfdf053ba5057b1922a327798261a22102c0e4a38730d48b220547abe8d6676c9a432245c7c968b5e8e9609a7837c773b021025e180472019c87bc2cdef9e1bc787369e9e5fd6212c5f01549bb96c155e8cdbd53ae00000000",
      "validTransactionHash": "4929b91960acdf2d18076ac6151d0aff96b4f4834f9f78eaf40e78ce05f5c0a4"
    }
  },
  "state": "approved",
  "scope": "wallet",
  "userIds": [
    "62ab90e06dfda30007974f0a52a12995",
    "627ff9325a5c1b0007c05a40d15e1522"
  ],
  "approvalsRequired": 1,
  "singleRunResults": [
    {
      "ruleId": "Custody Enterprise Transaction ID Verification",
      "triggered": false,
      "_id": "65568eda6c1568b87f40a614"
    }
  ],
  "resolvers": [
    {
      "user": "627ff9325a5c1b0007c05a40d15e1522",
      "date": "2023-11-16T21:56:45.511Z",
      "resolutionType": "pending"
    }
  ]
}
```

### 3. (Optional) Sign and Send Transaction

You only need to follow this step if your transaction required an approval. Once approved, you must sign and send the transaction to BitGo. This call gets the private key from the advanced wallets key provider using your common keychain and then signs and broadcasts the transaction.

> 📘 **Note:** The `source` parameter specifies which key to use for signing (`user` or `backup`). BitGo returns the `commonKeychain` value when you create an MPC wallet. The value appears in both the `userKeychain` and `backupKeychain` objects in the wallet generation response. Store this value securely as it's required for signing transactions. See [Create Advanced Wallets](/docs/create-advanced-wallets) for more information.

>Endpoint: [Advanced Wallets - Sign and Send MPC Transaction](/reference/advancedwalletsigntxtss)

```shell
export IP_OR_HOSTNAME="<YOUR_SERVER_IP_OR_HOSTNAME>"
export COIN="<ASSET_ID>"
export WALLET_ID="<YOUR_WALLET_ID>"
export TX_REQUEST_ID="<TX_REQUEST_ID>"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export COMMON_KEYCHAIN="<YOUR_COMMON_KEYCHAIN>"

curl -X POST \
  http://$IP_OR_HOSTNAME/api/v1/$COIN/advancedwallet/$WALLET_ID/txrequest/$TX_REQUEST_ID/signAndSend \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -d '{
    "source": "user",
    "commonKeychain": "'"$COMMON_KEYCHAIN"'"
  }'
```

#### Step Result

Once signed, BitGo applies the final signature using the BitGo key and broadcasts the transaction to the blockchain.

```json Successful Transaction
{
  "txid": "8747673834d6c71560a2816963585718567419020dc58151d2f7e1ed8c57de14",
  "tx": "010000000001016f6e464bcdb25c71ac52bd91675578182bb695efb411e570987faced858c64e70100000000ffffffff03102700000000000017a91490381d6ff4f24c0ae5fe266dbf5a0fa7dd56ae8087102700000000000017a914c8c2cd4473b8fb42cb473fceae76c746413549e887da700400000000002200201cab893f4027be83370f8fa137d12c841a96c2357130a356e32615958a6576590400483045022100fb63843d39f45cacd43cfcc871529204834061a9f7d622127a0474438ee47f210220057c12cf181ee5425b2f09aaa79d201ef300506551ad46f67f8fed46ce81138f01473044022017dc3f36b3741de04766560bd1448d7e0668177537815c3884737540b477d2e4022004c467ef011259e46d67993067c8b1f7aa4c9a7cd7614bf5d7b3ef3fd61f66ef0169522102b29d8c50c4c38ef4deac8019cccbdc9ad425c2834402df1f07e20f774d61e1c321024f40221c5e1b2169744d7427d2854b0454b774288f3df5a432acd3f2153dc6672102ee439860366aa10bac0d3b6bdfd129ec6c89c785e65b746452359921f29d16c953ae00000000",
  "status": "signed"
}
```
```json Pending Approval
{
  "pendingApproval": {
    "id": "655686880765186f0b3e9e88e1bdd0f4",
    "wallet": "6553e933288be490293ae748efafeaaf",
    "state": "pendingApproval",
    "creator": "62ab90e06dfda30007974f0a52a12995",
    "info": {
      "type": "transactionRequestFull",
      "transactionRequestFull": {
        "txRequestId": "0b259f23-d5a8-47d0-8666-47a3df07e244",
        "intent": {
          "intentType": "payment",
          "recipients": [
            {
              "address": {
                "address": "ESda41265eU4typ7Q7MFnBuaYUvV3rYsJyrGQzqo6YZn"
              },
              "amount": {
                "value": "500000",
                "symbol": "tsol"
              }
            }
          ]
        }
      }
    },
    "approvalsRequired": 1
  },
  "txRequest": {
    "txRequestId": "0b259f23-d5a8-47d0-8666-47a3df07e244",
    "walletId": "6553e933288be490293ae748efafeaaf",
    "state": "pendingApproval",
    "date": "2024-08-09T18:37:53.078Z"
  }
}
```

## Next

You can view your completed withdrawal in BitGo or on a blockchain explorer.

## See Also

* [API Reference: Send to Many](/reference/expresswalletsendmany)
* [API Reference: Send Transaction](/reference/expresswalletsendcoins)
* [API Reference: Update Pending Approval](/reference/v2approvalupdate)
