# Issuer Stablecoins Compliance

Source: https://developers.bitgo.com/docs/issuer-stablecoins-compliance

## 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](/docs/get-started-intro)
* 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:

  <Cookbook slug="issuer-compliance-requests" title="Compliance Requests" />

## 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](/reference/stablecoinv1issuercompliancerequestsettingsget)

```shell cURL
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

```json JSON
{
  "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](/reference/stablecoinv1issuercompliancerequestspost)

```shell cURL
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"
  }'
```

<Accordion title="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.                           |

</Accordion>

#### Step Result

```json JSON
{
  "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.

<Tabs>
<Tab title="List Requests">

> Endpoint: [List Compliance Requests](/reference/stablecoinv1issuercompliancerequestsget)

```shell cURL
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

```json JSON
{
  "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
}
```
</Tab>
<Tab title="Get by ID">

> Endpoint: [Get Compliance Request by ID](/reference/stablecoinv1issuercompliancerequestsbyidget)

```shell cURL
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export COMPLIANCE_REQUEST_ID="<YOUR_COMPLIANCE_REQUEST_ID>"

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

#### Step Result

```json JSON
{
  "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"
    }
  ]
}
```
</Tab>
</Tabs>

## 4. Cancel a Compliance Request

Cancel a request that is pending approval.

> Endpoint: [Cancel Compliance Request](/reference/stablecoinv1issuercompliancerequestscancelpatch)

```shell cURL
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

```json JSON
{
  "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

* [API Reference: Get Compliance Request Settings](/reference/stablecoinv1issuercompliancerequestsettingsget)
* [API Reference: Create Compliance Request](/reference/stablecoinv1issuercompliancerequestspost)
* [API Reference: List Compliance Requests](/reference/stablecoinv1issuercompliancerequestsget)
* [API Reference: Get Compliance Request by ID](/reference/stablecoinv1issuercompliancerequestsbyidget)
* [API Reference: Cancel Compliance Request](/reference/stablecoinv1issuercompliancerequestscancelpatch)
