Burn Issuer Stablecoins
Burn stablecoins as the designated issuer, then deposit tokens to BitGo to complete the on-chain burn. See the Guide.
-
Submit an issuer-direct burn order. Tokens must be deposited before BitGo can complete the on-chain burn.
-
Transfer the stablecoin to BitGo using the order
idas the transfer'ssequenceId, so BitGo can match the deposit to the burn order. -
Fetch burn orders across all assets your enterprise issues.
-
Retrieve aggregated mint and burn amounts and counts, broken out by asset.
// 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"
// 1. Create Burn Order
// Use the REST API for this step (see cURL tab)
// 2. Deposit Tokens to BitGo
const wallet = await bitgo.coin('ofcteth:usd1').wallets().get({ id: walletId });
await wallet.sendMany({
recipients: [{ address: treasuryWalletAddress, amount: burnAmount }],
sequenceId: order.id,
walletPassphrase,
});
// 3. Check Burn Orders
// Use the REST API for this step (see cURL tab)
// 4. Get an Orders Summary (Optional)
// Use the REST API for this step (see cURL tab)
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
}
]
}