Issuer Stablecoins

Overview

Compliance Requests let you submit and track on-chain compliance actions against your stablecoin. Each request goes through a BitGo Trust review and approval process before settling on-chain, with a full timestamped audit trail.

Prerequisites

  • Get Started
  • Enterprise admin role to create and cancel requests, or member role to view requests.

Cookbook

Want the steps without the walkthrough? Expand the cookbook below:

Compliance RequestsOpen Cookbook

1. Check Compliance Request Settings

Return the supported compliance actions for each asset and chain pair your enterprise can access. baseAsset is required. Add chain to narrow the results to one asset and chain pair.

Endpoint: Get Compliance Request Settings

export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export BASE_ASSET="<YOUR_BASE_ASSET>"

curl -X GET \
  https://app.bitgo-test.com/api/stablecoin/v1/issuer/compliance-request-settings?baseAsset=$BASE_ASSET \
  -H 'accept: application/json' \
  -H "Authorization: Bearer $ACCESS_TOKEN"

Step Result

{
  "assets": [
    {
      "assetId": "0438163a-d236-4865-978e-02ee7c2285b7",
      "token": "eth:gousd",
      "chain": "eth",
      "baseAsset": "gousd",
      "complianceRequestSettings": {
        "freeze": true,
        "unfreeze": true,
        "pause": true,
        "unpause": true
      }
    }
  ]
}

2. Create a Compliance Request

Submit a compliance request to take a compliance action against an on-chain address.

Note

If BitGo cannot start the on-chain transaction, the API returns an error instead of a live request.

Endpoint: Create Compliance Request

export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export WALLET_ADDRESS="<WALLET_ADDRESS>"
export ASSET_ID="<ASSET_ID>"

curl -X POST \
  https://app.bitgo-test.com/api/stablecoin/v1/issuer/compliance-requests \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -d '{
    "address": "'"$WALLET_ADDRESS"'",
    "addressLabel": "Hot Wallet A",
    "type": "freeze",
    "assetId": "'"$ASSET_ID"'",
    "comments": "Suspicious activity detected"
  }'
Compliance Request Lifecycle
Status Description
created Initial record; immediately advances to pending_approval.
pending_approval Submitted and awaiting BitGo Trust approval.
approved Approved by BitGo Trust; on-chain transaction is being settled.
confirmed Freeze or unfreeze confirmed on-chain. Success.
rejected Rejected by BitGo Trust.
cancelled Issuer cancelled the request before it settled.
failed On-chain settlement did not complete.

Step Result

{
  "id": "177dc9ed-64a7-4f68-9ba5-8d5b55fe5878",
  "type": "freeze",
  "status": "pending_approval",
  "assetId": "0438163a-d236-4865-978e-02ee7c2285b7",
  "requestSource": "issuer",
  "baseAsset": "usd1",
  "chain": "eth",
  "address": "0xd0898d88e2c08b2a95e19441e412c0a708a8bd43",
  "addressLabel": "Hot Wallet A",
  "createdAt": "2025-06-23T07:28:17.042Z",
  "updatedAt": "2025-06-23T07:28:17.042Z",
  "enterpriseId": "6437d9f07d6a87000613e6c06e4218d3",
  "userId": "6437d9f07d6a87000613e6c06e4218d3",
  "comments": "Suspicious activity detected",
  "pendingApprovalId": "pa_123",
  "bitgoTransferId": "6437d9f07d6a87000613e6c06e4218d3",
  "transactionHash": "0xabcdef1234567890",
  "complianceRequestHistory": [
    {
      "status": "pending_approval",
      "actorSource": "bitgo",
      "timestamp": "2025-06-23T07:28:17.042Z",
      "actorId": "6437d9f07d6a87000613e6c06e4218d3"
    }
  ]
}

3. View Compliance Requests

View compliance requests for assets in your enterprise.

Endpoint: List Compliance Requests

export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"

curl -X GET \
  https://app.bitgo-test.com/api/stablecoin/v1/issuer/compliance-requests \
  -H "Authorization: Bearer $ACCESS_TOKEN"

Step Result

{
  "requests": [
    {
      "id": "177dc9ed-64a7-4f68-9ba5-8d5b55fe5878",
      "type": "freeze",
      "status": "pending_approval",
      "assetId": "0438163a-d236-4865-978e-02ee7c2285b7",
      "requestSource": "issuer",
      "baseAsset": "usd1",
      "chain": "eth",
      "address": "0xd0898d88e2c08b2a95e19441e412c0a708a8bd43",
      "addressLabel": "Hot Wallet A",
      "createdAt": "2025-06-23T07:28:17.042Z",
      "updatedAt": "2025-06-23T07:28:17.042Z",
      "enterpriseId": "6437d9f07d6a87000613e6c06e4218d3",
      "userId": "6437d9f07d6a87000613e6c06e4218d3",
      "comments": "Suspicious activity detected",
      "pendingApprovalId": "pa_123",
      "bitgoTransferId": "6437d9f07d6a87000613e6c06e4218d3",
      "transactionHash": "0xabcdef1234567890"
    }
  ],
  "total": 1
}

4. Cancel a Compliance Request

Cancel a request that is pending approval.

Endpoint: Cancel Compliance Request

export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export COMPLIANCE_REQUEST_ID="<YOUR_COMPLIANCE_REQUEST_ID>"

curl -X PATCH \
  https://app.bitgo-test.com/api/stablecoin/v1/issuer/compliance-requests/$COMPLIANCE_REQUEST_ID/cancel \
  -H "Authorization: Bearer $ACCESS_TOKEN"

Step Result

{
  "id": "177dc9ed-64a7-4f68-9ba5-8d5b55fe5878",
  "type": "freeze",
  "status": "cancelled",
  "assetId": "0438163a-d236-4865-978e-02ee7c2285b7",
  "requestSource": "issuer",
  "baseAsset": "usd1",
  "chain": "eth",
  "address": "0xd0898d88e2c08b2a95e19441e412c0a708a8bd43",
  "addressLabel": "Hot Wallet A",
  "createdAt": "2025-06-23T07:28:17.042Z",
  "updatedAt": "2025-06-23T07:40:11.300Z",
  "enterpriseId": "6437d9f07d6a87000613e6c06e4218d3",
  "userId": "6437d9f07d6a87000613e6c06e4218d3",
  "comments": "Suspicious activity detected",
  "pendingApprovalId": "pa_123",
  "complianceRequestHistory": [
    {
      "status": "created",
      "actorSource": "issuer",
      "actorId": "6437d9f07d6a87000613e6c06e4218d3",
      "timestamp": "2025-06-23T07:28:17.042Z"
    },
    {
      "status": "pending_approval",
      "actorSource": "issuer",
      "actorId": "6437d9f07d6a87000613e6c06e4218d3",
      "timestamp": "2025-06-23T07:28:17.610Z"
    },
    {
      "status": "cancelled",
      "actorSource": "issuer",
      "actorId": "6437d9f07d6a87000613e6c06e4218d3",
      "timestamp": "2025-06-23T07:40:11.300Z"
    }
  ]
}

See Also