Crypto-as-a-Service: Fund Go Account through Go Network

Create connections and transfer fiat between Go Accounts on the Go Network. See the Guide.

  1. Before you can create a settlement with a new counterparty, you need a Go Account connection. Connections exist between two Go Accounts and are one-way. This involves four substeps:

    1.1 List Your Enterprise: List your enterprise in the public directory so other enterprises can find you. API Reference

    1.2 Create Listing Entry: Create an entry for your Go Account within your enterprise listing. This enables you and others to create connections between your Go Account and theirs. API Reference

    1.3 Get Listing Entry ID: Get the enterprise listing and select the entry that has your Go Account walletId. The listingEntryId is listingEntries[<index>].id. API Reference

    1.4 Create Counterparty Connection: Create a connection to your counterparty using your listing entry ID and their target listing entry ID. API Reference

  2. BitGo refers to the Go Account that creates a counterparty connection and initiates a settlement as the source Go Account. When a source Go Account creates a settlement, BitGo generates a settlement request that requires approval from both counterparties.

    The quantity field determines the direction of fund movement: positive values indicate receiving funds, while negative values indicate sending funds from your account.

    API Reference

  3. If you're sending assets in the settlement, you must sign the settlement to confirm the transaction. However, if you're only receiving assets in a settlement, signing is optional.

    This involves two substeps: 3.1 Apply Signature using the JavaScript SDK to generate the signature, and 3.2 Submit Signed Settlement to BitGo. Signing a settlement places the assets in your Go Account into a held state, preventing them from use in other transactions.

    API Reference

  4. If you configure an approval requirement for settlements, you can't approve a settlement you initiated - another admin must always approve it. This step is only required if your enterprise has approval policies configured for settlements.

    API Reference

// 1. Create a Connection
// 1.1 List Your Enterprise
export SERVICE_USER_TOKEN="<SERVICE_USER_ACCESS_TOKEN>"
export DESCRIPTION="<YOUR_PUBLIC_DESCRIPTION>"

curl -X POST \
  https://app.bitgo-test.com/api/address-book/v1/listing/global \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $SERVICE_USER_TOKEN" \
  -d '{"description": "'"$DESCRIPTION"'"}'

// 1.2 Create Listing Entry
export SERVICE_USER_TOKEN="<SERVICE_USER_ACCESS_TOKEN>"
export WALLET_ID="<YOUR_WALLET_ID>"
export DESCRIPTION="<YOUR_PUBLIC_DESCRIPTION>"

curl -X POST \
  https://app.bitgo-test.com/api/address-book/v1/listing/entry/global \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $SERVICE_USER_TOKEN" \
  -d '{
    "walletId": "'"$WALLET_ID"'",
    "description": "'"$DESCRIPTION"'",
    "public": true
  }'

// 1.3 Get Listing Entry ID
export SERVICE_USER_TOKEN="<SERVICE_USER_ACCESS_TOKEN>"
export CHILD_ENTERPRISE_ID="<CHILD_ENTERPRISE_ID>"
export USER_ID="<YOUR_USER_ID>"

curl -X GET \
  https://app.bitgo-test.com/api/address-book/v1/listing/global \
  -H "Authorization: Bearer $SERVICE_USER_TOKEN" \
  -H "enterprise-id: $CHILD_ENTERPRISE_ID" \
  -H "user-id: $USER_ID"

// 1.4 Create Counterparty Connection
export SERVICE_USER_TOKEN="<SERVICE_USER_ACCESS_TOKEN>"
export CHILD_ENTERPRISE_ID="<CHILD_ENTERPRISE_ID>"
export USER_ID="<YOUR_USER_ID>"
export LISTING_ENTRY_ID="<YOUR_LISTING_ENTRY_ID>"
export TARGET_LISTING_ENTRY_ID="<COUNTERPARTY_TARGET_LISTING_ENTRY_ID>"
export LOCAL_LISTING_ENTRY_DESCRIPTION="<LOCAL_LISTING_ENTRY_DESCRIPTION>"

curl -X POST \
  https://app.bitgo-test.com/api/address-book/v1/connections \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $SERVICE_USER_TOKEN" \
  -H "enterprise-id: $CHILD_ENTERPRISE_ID" \
  -H "user-id: $USER_ID" \
  -d '{
    "listingEntryId": "'"$LISTING_ENTRY_ID"'",
    "localListingEntryDescription": "'"$LOCAL_LISTING_ENTRY_DESCRIPTION"'",
    "targetListingEntryId": "'"$TARGET_LISTING_ENTRY_ID"'"
  }'
// 2. Create Settlement
export CHILD_ENTERPRISE_ID="<CHILD_ENTERPRISE_ID>"
export ACCOUNT_ID="<YOUR_ACCOUNT_ID>"
export SERVICE_USER_TOKEN="<SERVICE_USER_ACCESS_TOKEN>"
export CONNECTION_ID="<CONNECTION_ID>"
export CONNECTION_UPDATED_AT="<CONNECTION_UPDATED_AT>"
export COUNTERPARTY_ACCOUNT_ID="<COUNTERPARTY_ACCOUNT_ID>"
export CURRENCY="<SENDING_ASSET>"
export QUANTITY="<SENDING_QUANTITY>"
export EXTERNAL_ID="<YOUR_EXTERNAL_ID>"

curl -X POST \
  https://app.bitgo-test.com/api/clearing/v1/enterprise/$CHILD_ENTERPRISE_ID/account/$ACCOUNT_ID/settlement \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $SERVICE_USER_TOKEN" \
  -d '{
    "externalId": "'"$EXTERNAL_ID"'",
    "addressBookConnectionId": "'"$CONNECTION_ID"'",
    "addressBookConnectionUpdatedAt": "'"$CONNECTION_UPDATED_AT"'",
    "assetTransfers": [
      {
        "currency": "'"$CURRENCY"'",
        "quantity": "'"$QUANTITY"'"
      }
    ]
  }'
// 3. Sign Settlement (Optional)
// 3.1 Apply Signature
// Use JavaScript SDK or BitGo Express to generate signature
// See JavaScript example for implementation

// 3.2 Submit Signed Settlement
export ENTERPRISE_ID="<YOUR_ENTERPRISE_ID>"
export ACCOUNT_ID="<YOUR_ACCOUNT_ID>"
export SETTLEMENT_ID="<SETTLEMENT_ID>"
export SERVICE_USER_TOKEN="<SERVICE_USER_ACCESS_TOKEN>"
export PAYLOAD="<SETTLEMENT_PAYLOAD>"
export SIGNATURE="<YOUR_PUBLIC_KEY>"

curl -X POST \
  https://app.bitgo-test.com/api/clearing/v1/enterprise/$ENTERPRISE_ID/account/$ACCOUNT_ID/settlement/$SETTLEMENT_ID/signing \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $SERVICE_USER_TOKEN" \
  -d '{
    "payload": "'"$PAYLOAD"'",
    "signature": "'"$SIGNATURE"'"
  }'
// 4. Approve Settlement (Optional)
export APPROVAL_ID="<APPROVAL_ID>"
export SERVICE_USER_TOKEN="<SERVICE_USER_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 $SERVICE_USER_TOKEN" \
  -d '{
    "state": "approved",
    "otp": "'"$OTP"'"
  }'
Response
// 1. Create a Connection
// 1.1 List Your Enterprise Response
{
    "id": "9f627592-641f-4300-96c4-819fafb6435a",
    "createdAt": "2026-02-09T21:20:05.269Z",
    "updatedAt": "2026-02-09T21:20:05.269Z",
    "enterpriseId": "698a2f58718d0f73eb4ba9faeb491be0",
    "name": "roychon401+30@bitgo.com",
    "owner": "698a2f58718d0f73eb4ba9faeb491be0"
}

// 1.2 Create Listing Entry Response
{
    "walletId": "698a3d58066a618a569a8dd844c514d4",
    "type": "GO_ACCOUNT",
    "coin": "ofc",
    "discoverable": true,
    "featured": false,
    "id": "a2a48c3c-5ab1-46ab-bd05-59082576c5c2",
    "createdAt": "2026-02-09T21:29:26.194Z",
    "updatedAt": "2026-02-09T21:29:26.194Z"
}

// 1.3 Get Listing Entry ID Response
{
    "id": "10b51fd8-6ef7-4ad1-8a84-56f84abfec7a",
    "createdAt": "2026-01-14T15:31:45.292Z",
    "updatedAt": "2026-01-14T15:31:45.292Z",
    "enterpriseId": "6967afd69792fa80c629f22bb52caed6",
    "name": "Test User",
    "description": "abc123",
    "owner": "6967afd69792fa80c629f22bb52caed6",
    "listingEntries": [
        {
            "id": "1a7b6239-8412-4702-b000-b40ee5351761",
            "createdAt": "2026-01-14T15:31:46.052Z",
            "updatedAt": "2026-01-14T15:31:46.052Z",
            "walletId": "6967b45a4ffdedb5747d5934e544b94c",
            "coin": "ofc",
            "type": "GO_ACCOUNT",
            "description": "abc123",
            "discoverable": false,
            "featured": false
        }
    ]
}

// 1.4 Create Counterparty Connection Response
{
    "connections": [
        {
            "id": "eafc174e-d1b9-4baf-ba78-275e6d699850",
            "createdAt": "2026-01-14T18:14:20.015Z",
            "updatedAt": "2026-01-14T18:14:20.275Z",
            "label": "DVP connection",
            "status": "ACTIVE",
            "createdBy": "abc123",
            "updatedBy": "abc123",
            "hidden": false,
            "type": "DVP",
            "ownerListingEntry": {
                "id": "abc123",
                "createdAt": "2026-01-14T15:31:46.052Z",
                "updatedAt": "2026-01-14T15:31:46.052Z",
                "walletId": "abc123",
                "coin": "ofc",
                "type": "GO_ACCOUNT",
                "description": "abc123",
                "discoverable": false,
                "featured": false,
                "listing": {
                    "id": "abc123",
                    "name": "abc123",
                    "description": "abc123",
                    "editable": false
                }
            },
            "targetListingEntry": {
                "walletId": "abc123",
                "coin": "ofc",
                "type": "GO_ACCOUNT",
                "description": "abc123",
                "discoverable": false,
                "id": "abc123",
                "createdAt": "2026-01-14T15:31:46.052Z",
                "updatedAt": "2026-01-14T15:31:46.052Z",
                "featured": false,
                "listing": {
                    "description": "abc123",
                    "name": "abc123",
                    "id": "abc123",
                    "editable": false
                }
            }
        }
    ]
}

// 2. Create Settlement Response
{
  "id": "string",
  "requesterAccountId": "abc123",
  "status": "pending",
  "type": "direct",
  "externalId": "abc123",
  "bypassCounterpartySigning": false,
  "createdAt": "2019-08-24T00:00:00.000Z",
  "updatedAt": "2019-08-24T00:00:00.000Z",
  "approvalRequests": [
    {
      "id": "23d3e6c5-72d2-41e8-9e79-8d7e09a19b74",
      "accountId": "abc123",
      "status": "acknowledged",
      "payload": "abc123",
      "createdAt": "2019-08-24T00:00:00.000Z",
      "updatedAt": "2019-08-24T00:00:00.000Z"
    }
  ],
  "settlementTransfers": [
    {
      "id": "b5f1ab55-b510-4bf6-92cd-214a7e23321",
      "sourceTradingAccountId": "abc123",
      "destinationTradingAccountId": "abc123",
      "currency": "ofctsol",
      "quantity": "1",
      "txIds": [],
      "createdAt": "2019-08-24T00:00:00.000Z",
      "updatedAt": "2019-08-24T00:00:00.000Z"
    }
  ],
  "requesterAccountName": "abc123"
}

// 3. Sign Settlement (Optional)
// 3.1 Apply Signature Response
"1f2f62b22832940d82819eccc9e2fbcb5339ae863bc9fba4d6cc62f01550fc325a7e007fb8b753d0e862145e716d4a6054f75c2da2b7c2ac5d41679683a4996349"

// 3.2 Submit Signed Settlement Response
{}

// 4. Approve Settlement (Optional) Response
{
    "id": "65529448bd87efe59c3b0156ddfce867",
    "coin": "tbtc4",
    "wallet": "654ec786c07fe8dc0dcfe03916ec5bb0",
    "enterprise": "62c5ae8174ac860007aff138a2d74df7",
    "state": "approved",
    "scope": "wallet",
    "approvalsRequired": 1
}