Issuer Stablecoins
Mint Issuer Stablecoins
Overview
As an issuer, you can mint your stablecoin directly to a Go Account in a single API call. Issuer mint orders skips the deposit-confirmation step and is not subject to standard mint fees.
Prerequisites
- Get Started
- Accept Issuer Minting Terms
- To enable issuer mint capabilities, contact your BitGo Customer Success Manager (CSM).
Cookbook
Need just the steps? Expand the cookbook for the mint flow:
Mint Issuer StablecoinsOpen Cookbook1. Create Mint Order
Create an issuer-direct mint order. go_account is the only supported destinationType.
Note
By default, amount uses USD base units (cents). If your enterprise enables stablecoins-issuer-mint-stablecoin-units, amount uses stablecoin base units. Confirm your enterprise configuration before you submit.
Endpoint: Create Issuer Stablecoin Order
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": "mint",
"asset": "'"$ASSET_ID"'",
"amount": "100000000000000000000",
"destinationType": "go_account",
"destinationWalletId": "'"$WALLET_ID"'"
}'
Step Result
{
"id": "95bdbd9c-9cdc-41a4-ae70-165387b7aa51",
"type": "mint",
"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. Check Mint Orders
Fetch mint orders across all assets your enterprise issues.
Endpoint: List Issuer Stablecoin Orders
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
{
"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": "mint",
"status": "fulfilled",
"enterpriseId": "67bc4ae090e8af8f9b412d3d67e85252"
}
]
}
Mint Order Status Lifecycle
| Status | Description |
|---|---|
created |
Order submitted; initial state. |
approved_mint |
Order validated and approved for on-chain execution. |
triggering_mint |
On-chain mint transaction is initiating. |
fulfilled |
Tokens minted and delivered to the destination address. |
failed_mint_initiation |
Error initiating the mint; order reverts to approved_mint and retries. This status appears in order history only, not as the current state. |
failed_mint_transaction |
Error while starting the minting process. |
failed_to_mint |
Blockchain transaction broadcast but failed or was rejected. |
rejected |
Order rejected by a policy or compliance denial. |
expired |
Order expired before completion. |
3. Get an Orders Summary (Optional)
Retrieve aggregated mint amounts and counts, broken out by asset.
Endpoint: Issuer Orders Summary
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
{
"byAsset": {
"key": {
"chain": "hteth",
"decimals": 18,
"mint": {
"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
}
]
}