# Burn Issuer Stablecoins

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

## Overview

Issuer burns let you permanently remove your stablecoin from circulation without redeeming fiat or paying standard burn fees. Burning requires a token deposit before BitGo settles the on-chain burn.

## Prerequisites

* [Get Started](/docs/get-started-intro)
* [Accept Issuer Minting Terms](/docs/accept-issuer-mint-terms)
* To enable issuer burn capabilities, contact your BitGo Customer Success Manager (CSM).

## Cookbook

Need just the steps? Expand the cookbook for the burn flow:

<Cookbook slug="issuer-burn-order" title="Burn Issuer Stablecoins" />

## 1. Create Burn Order

Create an issuer-direct burn order.

> 📘 **Note**
>
> Creating the order does not move tokens. You must have the burn amount available in your wallet.

> Endpoint: [Create Issuer Stablecoin Order](/reference/stablecoinv1issuerorderpost)

```shell cURL
export ENTERPRISE_ID="<YOUR_ENTERPRISE_ID>"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export ASSET_ID="<YOUR_ASSET_ID>"
export WALLET_ID="<DESTINATION_WALLET_ID>"

curl -X POST \
  https://app.bitgo-test.com/api/stablecoin/v1/enterprise/$ENTERPRISE_ID/issuer/orders \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -d '{
    "type": "burn",
    "asset": "'"$ASSET_ID"'",
    "amount": "100000000000000000000",
    "destinationType": "go_account",
    "destinationWalletId": "'"$WALLET_ID"'"
  }'
```

#### Step Result

The response returns the created order, including the `id` you use as the `sequenceId` in the next step.

```json JSON
{
  "id": "95bdbd9c-9cdc-41a4-ae70-165387b7aa51",
  "type": "burn",
  "status": "created",
  "orderMethod": "issuer_direct",
  "asset": "eth:usd1",
  "fromAsset": "eth:usd1",
  "fromAmount": "100000000000000000000",
  "toAsset": "eth:usd1",
  "toAmount": "100000000000000000000",
  "destinationWalletId": "8iMXoeSpS1d1ziEJ",
  "destinationAddress": "d526909b2398a6d579c817dc07fc9d72",
  "enterpriseId": "67bc4ae090e8af8f9b412d3d67e85252",
  "transactions": [],
  "createdAt": "2025-04-04T09:25:48.216Z",
  "updatedAt": "2025-04-04T09:25:48.216Z"
}
```

## 2. Deposit Tokens to BitGo

Transfer the stablecoin to BitGo to fund the burn. Use the order `id` as the `sequenceId` so BitGo can match the deposit to this order.

> Endpoint: [Send Transaction](/reference/expresswalletsendcoins)

<Tabs>
  <Tab title="cURL">

```shell cURL
export BITGO_EXPRESS_HOST="<YOUR_LOCAL_HOST>"
export COIN="<ASSET_ID>"
export WALLET_ID="<YOUR_WALLET_ID>"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export TREASURY_ADDRESS="<TREASURY_WALLET_ADDRESS>"
export AMOUNT="<BURN_AMOUNT_IN_BASE_UNITS>"
export WALLET_PASSPHRASE="<YOUR_WALLET_PASSPHRASE>"
export SEQUENCE_ID="<ORDER_ID>"

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": "'"$TREASURY_ADDRESS"'",
    "amount": "'"$AMOUNT"'",
    "walletPassphrase": "'"$WALLET_PASSPHRASE"'",
    "sequenceId": "'"$SEQUENCE_ID"'"
  }'
```

  </Tab>
  <Tab title="JavaScript">

```js JavaScript
const wallet = await bitgo.coin('ofcteth:usd1').wallets().get({ id: walletId });
await wallet.sendMany({
  recipients: [{ address: treasuryWalletAddress, amount: burnAmount }],
  sequenceId: order.id,
  walletPassphrase,
});
```

  </Tab>
</Tabs>

#### Step Result

```json JSON
{
  "coin": "ofcteth:usd1",
  "transfers": [
    {
      "id": "6437d9f07d6a87000613e6c06e4218d3",
      "coin": "ofcteth:usd1",
      "wallet": "8iMXoeSpS1d1ziEJ",
      "value": -100000000000000000000,
      "baseValue": -100000000000000000000,
      "state": "unconfirmed",
      "type": "send"
    }
  ]
}
```

## 3. Check Burn Orders

Fetch burn orders across all assets your enterprise issues.

> Endpoint: [List Issuer Stablecoin Orders](/reference/stablecoinv1issuerorderlistget)

```shell cURL
export ENTERPRISE_ID="<YOUR_ENTERPRISE_ID>"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"

curl -X GET \
  https://app.bitgo-test.com/api/stablecoin/v1/enterprise/$ENTERPRISE_ID/issuer/orders \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
```

#### Step Result

```json JSON
{
  "orders": [
    {
      "asset": "eth:usd1",
      "destinationWalletId": "8iMXoeSpS1d1ziEJ",
      "destinationAddress": "d526909b2398a6d579c817dc07fc9d72",
      "userId": "test-user",
      "clientDepositTxHash": "string",
      "transactions": [
        {
          "type": "clientDeposit",
          "txHash": "512f64d10b5f358f6dbf3303f90013cfa46006b02a03282456d6bd6432cc5daf",
          "asset": "eth:usd1",
          "amount": "500",
          "status": "confirmed",
          "createdAt": "2025-04-04T09:26:21.600Z",
          "updatedAt": "2025-04-04T09:26:21.600Z"
        }
      ],
      "memo": "Payment for invoice #1234",
      "createdAt": "2025-04-04T09:25:48.216Z",
      "updatedAt": "2025-04-04T09:55:09.136Z",
      "fromAssetId": "08c1271e-b15d-4af8-8929-f75383903da4",
      "toAssetId": "49ff49ea-3355-4717-bbb0-5e8f5cae2202",
      "fromAsset": "eth:usd1",
      "fromAmount": "500",
      "toAsset": "eth:usd1",
      "toAmount": "5000000",
      "orderMethod": "issuer_direct",
      "id": "95bdbd9c-9cdc-41a4-ae70-165387b7aa51",
      "type": "burn",
      "status": "fulfilled",
      "enterpriseId": "67bc4ae090e8af8f9b412d3d67e85252"
    }
  ]
}
```

<Accordion title="Burn Order Status Lifecycle">

| Status                          | Description                                                       |
| ------------------------------- | ----------------------------------------------------------------- |
| `created`                       | Order submitted; initial state.                                   |
| `confirmed_token_deposit`       | Token deposit verified in the designated burn address.            |
| `initiated_burn_token_transfer` | Token transfer to the burn address is in flight.                  |
| `completed_burn_token_transfer` | Token transfer to the burn address is complete.                   |
| `triggering_burn`               | On-chain burn transaction is being initiated.                     |
| `completed_burn`                | Tokens permanently removed from circulation on-chain.             |
| `fulfilled`                     | Tokens burned and supply permanently reduced.                     |
| `failed_burn_transaction`       | An error occurred while initiating the burn.                      |
| `failed_burn_token_transfer`    | An error occurred while initiating the token transfer.            |
| `failed_to_burn`                | The blockchain burn transaction failed or was rejected.           |
| `rejected`                      | Order rejected.                                                   |
| `expired`                       | Order expired before completion.                                  |

</Accordion>

## 4. Get an Orders Summary (Optional)

Retrieve aggregated burn amounts and counts, broken out by asset.

> Endpoint: [Issuer Orders Summary](/reference/stablecoinv1issuerorderssummaryget)

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

curl -X GET \
  https://app.bitgo-test.com/api/stablecoin/v1/issuer/orders-summary \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
```

#### Step Result

```json JSON
{
  "byAsset": {
    "key": {
      "chain": "hteth",
      "decimals": 18,
      "burn": {
        "amount": "110002428000000000000000000",
        "count": 12,
        "byStatus": {
          "created": {
            "amount": "45000000000000000000000000",
            "count": 5
          }
        }
      }
    }
  },
  "timeSeries": [
    {
      "period": "2024-01-01T00:00:00.000Z",
      "mintAmount": "1000000000000000000000",
      "mintCount": 5,
      "burnAmount": "500000000000000000000",
      "burnCount": 3
    }
  ]
}
```

## See Also

* [API Reference: Create Issuer Stablecoin Order](/reference/stablecoinv1issuerorderpost)
* [API Reference: Send Transaction](/reference/expresswalletsendcoins)
* [API Reference: List Issuer Stablecoin Orders](/reference/stablecoinv1issuerorderlistget)
* [API Reference: Issuer Orders Summary](/reference/stablecoinv1issuerorderssummaryget)
