Withdraw - Go Account (Simple)

Build and send withdrawals in one call using BitGo Express. See the Guide.

  1. This step is required only for withdrawing fiat from your Go Account to a BitGo-approved bank account. Crypto withdrawals skip this step.

    BitGo identifies your bank account with a unique idHash that you pass as the address value in the next step.

    API Reference

  2. Build and send the transaction to BitGo in one call. If your withdrawal doesn't require approval, BitGo processes it immediately. If you have policy rules requiring approvals, the transaction remains pending until approved.

    API Reference

  3. If your withdrawal requires approval, another admin must approve it — you cannot approve your own transactions. Once approved, BitGo rebuilds the transaction with current fees and processes it.

    API Reference

// 1. Get idHash (Optional)
export ENTERPRISE_ID="<ENTERPRISE_ID>"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"

curl -X GET \
  https://app.bitgo-test.com/api/v2/bankaccounts?enterpriseId=$ENTERPRISE_ID \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
// 2. Build and Send Transaction
export BITGO_EXPRESS_HOST="<YOUR_LOCAL_HOST>"
export COIN="<OFC_ASSET_ID>"
export WALLET_ID="<YOUR_WALLET_ID>"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export ADDRESS="<DESTINATION_ADDRESS_OR_ID_HASH>"
export AMOUNT="<AMOUNT_IN_BASE_UNITS>"
export WALLET_PASSPHRASE="<YOUR_WALLET_PASSPHRASE>"

curl -X POST \
  http://$BITGO_EXPRESS_HOST/api/v2/$COIN/wallet/$WALLET_ID/sendcoins \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -d '{
  "address": "'"$ADDRESS"'",
  "amount": "'"$AMOUNT"'",
  "walletPassphrase": "'"$WALLET_PASSPHRASE"'"
}'
// 3. Approve Transaction (Optional)
export APPROVAL_ID="<APPROVAL_ID>"
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"'"
  }'
Response
// 1. Get idHash Response
{
  "bankAccounts": [
    {
      "type": "wire",
      "accountNumber": "012345678",
      "enterpriseId": "1032e75c451052000436831deb797af1",
      "id": "60749ab75f8c4500060f5a8b244dd0cb",
      "name": "My Bank",
      "idHash": "c2f4cf5555a66d77",
      "routingNumber": "087654321",
      "verificationState": "approved"
    }
  ]
}

// 2. Build and Send Transaction Response
{
  "coin": "ofctusd",
  "transfers": [
    {
      "id": "62c5b1de8a0c5200071c9a603bdbadc5",
      "coin": "ofctusd",
      "wallet": "5ef523b7ab6b7f7b00b9513a0ac0a4e8",
      "type": "send",
      "value": -10100,
      "state": "unconfirmed"
    }
  ]
}

// 3. Approve Transaction Response
{
  "id": "655686880765186f0b3e9e88e1bdd0f4",
  "state": "approved",
  "approvalsRequired": 1
}