Burn Issuer Stablecoins

Burn stablecoins as the designated issuer, then deposit tokens to BitGo to complete the on-chain burn. See the Guide.

  1. Submit an issuer-direct burn order. Tokens must be deposited before BitGo can complete the on-chain burn.

    API Reference

  2. Transfer the stablecoin to BitGo using the order id as the transfer's sequenceId, so BitGo can match the deposit to the burn order.

    API Reference

  3. Fetch burn orders across all assets your enterprise issues.

    API Reference

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

    API Reference

// 1. Create Burn Order
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export ENTERPRISE_ID="<YOUR_ENTERPRISE_ID>"
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"'"
  }'
// 2. Deposit Tokens to BitGo
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"'"
  }'
// 3. Check Burn Orders
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export ENTERPRISE_ID="<YOUR_ENTERPRISE_ID>"
export ORDER_ID="<YOUR_ORDER_ID>"

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"
// 4. Get an Orders Summary (Optional)
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"
Response
// 1. Create Burn Order Response
{
  "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 Response
{
  "coin": "ofcteth:usd1",
  "transfers": [
    {
      "id": "6437d9f07d6a87000613e6c06e4218d3",
      "coin": "ofcteth:usd1",
      "wallet": "8iMXoeSpS1d1ziEJ",
      "value": -100000000000000000000,
      "baseValue": -100000000000000000000,
      "state": "unconfirmed",
      "type": "send"
    }
  ]
}

// 3. Check Burn Orders Response
{
  "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"
    }
  ]
}

// 4. Get an Orders Summary (Optional) Response
{
  "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
    }
  ]
}