Mint, Redeem, and Bridge Stablecoins
Testing Guide: Examples in this guide use the staging host
https://api.anchorage-staging.comand"USD_R"for USD-side legs. In production, usehttps://api.anchorage.comand"USD".
Key concepts
There are three Anchorage stablecoin conversion actions, all served by the same endpoint with the direction set by the asset pair:
- Mint: convert USD into an Anchorage stablecoin (
sourceAssetType: USD,destinationAssetType: <stablecoin>). - Burn (redeem): convert an Anchorage stablecoin back into USD (
sourceAssetType: <stablecoin>,destinationAssetType: USD). - Bridge: move an Anchorage stablecoin between chains (
sourceAssetTypeanddestinationAssetTypeare the same stablecoin on different chains, e.g.USDX_BSC_T→USDX_HOODI). Internally executes a burn on the source chain and a mint on the destination chain through a shared reserve.
Two endpoints support tracking these actions:
GET /v2/stablecoins/historyreturns one record per conversion, with status and pointers to the underlying transactions.GET /v2/transactionsreturns the underlying ledger entries, filterable bytypes.
Vocabulary mapping across endpoints:
| Action | /stablecoins/conversion | v2/transactions type= | /stablecoins/history operationType = |
|---|---|---|---|
| Mint | USD → stablecoin | Stables Leg: MINT;USD Leg: TRANSFER | MINT |
| Burn | stablecoin → USD | USD Leg: BURN;Stables Leg: DEPOSIT | BURN |
| Bridge | stablecoin (chain A) → stablecoin (chain B) | BURN and MINT (one of each) | BRIDGE |
Action availability
| Action | API | Web Platform | Path |
|---|---|---|---|
| Mint stablecoins | ✅ Live | ✅ Live | API or web platform |
| Burn (redeem) stablecoins | ✅ Live | ✅ Live | API or web platform |
| Bridge stablecoins | ✅ Live | ✅ Live | API or web platform |
| Query stablecoin conversion history | ✅ Live | ✅ Live | API or web platform |
Stablecoin swaps (operationType: SWAP) | 🚧 In development | 🚧 In development | — |
Forward compatibility:
/v2/stablecoins/historymay return records withoperationType: SWAPonce stablecoin swaps go live. Treat unknownoperationTypevalues as a forward-compatibility fallback rather than an error.
1) Set up
Before making a conversion, identify the source and destination wallets and confirm the exact assetType strings.
Endpoints
GET /v2/vaults/{vaultId}— retrievewalletIdvalues and balances for the vault holding the source funds.GET /v2/asset-types— look up exactassetTypestrings, including chain-specific variants likeUSDX_BSC_T.
Permission required: the API key used for any of the conversion calls below must have the Convert Stablecoins vault permission. Configure via API permission groups.
Authentication: the stablecoin conversion and history endpoints require only the Api-Access-Key header. No Api-Signature / Api-Timestamp headers are needed.
2) Mint
To mint a stablecoin from USD, call the conversion endpoint with USD as the sourceAssetType and the target stablecoin as the destinationAssetType.
Endpoint
POST /v2/stablecoins/conversion
Example payload (mint)
{
"destinationAssetType": "USDX_HOODI",
"destinationWalletId": "82936bb546cf1fc83955b6d9ca76ff16",
"idempotencyKey": "z763a50d-aa82-4ec7-b5a3-89ad0462d248",
"sourceAssetType": "USD_R",
"sourceWalletId": "940afa950652ed4fdffceb73b2745d02",
"amount": "10"
}Where:
{amount}: USD amount as a string.{sourceWalletId}: ID of the USD wallet being debited. Retrieve viaGET /v2/vaults/{vaultId}.destinationAssetType: stablecoin to mint (e.g.,USDX_HOODI). UseGET /v2/asset-typesto confirm exact strings.{destinationWalletId}: ID of the destination stablecoin wallet.{idempotencyKey}: unique string ≤128 chars. Use a distinct key per conversion so safe retries don't duplicate.
Response (201): returns authorizationOperationId. The conversion enters INITIATED status until endorsements are approved.
Status monitoring: Query GET /v2/stablecoins/history for the conversion status (Section 5), or GET /v2/transactions with types=MINT for ledger-level details (Section 6). Webhooks also fire on status transitions.
3) Burn (redeem)
To redeem a stablecoin back into USD, call the conversion endpoint with the stablecoin as the sourceAssetType and USD as the destinationAssetType.
Endpoint
POST /v2/stablecoins/conversion
Example payload (burn)
{
"destinationAssetType": "USD_R",
"destinationWalletId": "940afa950652ed4fdffceb73b2745d02",
"idempotencyKey": "z763a50d-aa82-4ec7-b5a3-89ad0462d248",
"sourceAssetType": "USDX_HOODI",
"sourceWalletId": "82936bb546cf1fc83955b6d9ca76ff16",
"amount": "10"
}Where:
{amount}: stablecoin amount as a string.sourceAssetType: the stablecoin being redeemed.{sourceWalletId}: ID of the source stablecoin wallet.{destinationWalletId}: ID of the USD wallet being credited.{idempotencyKey}: unique string ≤128 chars.
Status monitoring: Same as Section 2, with types=BURN on the transactions filter.
4) Bridge across chains
To bridge a stablecoin between chains, call the conversion endpoint with the source-chain variant of the stablecoin as sourceAssetType and the destination-chain variant as destinationAssetType.
Endpoint
POST /v2/stablecoins/conversion
Example payload (bridge)
{
"destinationAssetType": "USDX_HOODI",
"destinationWalletId": "82936bb546cf1fc83955b6d9ca76ff16",
"idempotencyKey": "z763a50d-aa82-4ec7-b5a3-89ad0462d248",
"sourceAssetType": "USDX_BSC_T",
"sourceWalletId": "940afa950652ed4fdffceb73b2745d02",
"amount": "10"
}Where:
sourceAssetType: stablecoin on the source chain.destinationAssetType: same stablecoin on the destination chain. UseGET /v2/asset-typesto find the exact chain-specific identifier.{sourceWalletId}/{destinationWalletId}: source and destination wallet IDs on each chain.
A bridge produces one record in /v2/stablecoins/history (with operationType: BRIDGE) but two transactions in /v2/transactions: a BURN on the source chain and a MINT on the destination chain. To inspect both legs, query history first to retrieve sourceOperationId and destinationOperationId, then look each up via GET /v2/transactions/{transactionId}.
Status monitoring: Same as Section 2, with types=MINT,BURN to see both legs.
5) Query conversion history
To see the status of mints, burns, and bridges at the conversion level, call the history endpoint. Each record represents one conversion and points to the underlying transactions via sourceOperationId and destinationOperationId. Results are paginated and ordered by creation time (newest first).
Endpoint
Permission required: Convert Stablecoins.
Query parameters
limit: 1–100, default 100. Maximum number of results per page.lastCreatedAt: cursor for pagination. RFC3339 timestamp from thecreatedAtof the last record on the previous page. Use this when manually paginating; otherwise just followpage.next.
Example response
{
"data": [
{
"amount": "100.80",
"authorizationOperationId": "auth_op_01HX...",
"createdAt": "2026-05-01T22:51:00.082Z",
"destinationAssetTypeId": "PYUSD",
"destinationOperationId": "tx_01HX...",
"destinationWalletId": "wallet_01HX...",
"issueRedeemId": "ir_01HX...",
"operationType": "MINT",
"sourceAssetTypeId": "USD",
"sourceOperationId": "tx_01HX...",
"sourceWalletId": "wallet_01HX...",
"status": "EXECUTING",
"subStatus": null
}
],
"page": {
"next": "<next page url>"
}
}Pagination: page.next returns a fully formed URL for the next page, or null when no more results exist. Alternatively, paginate manually by passing lastCreatedAt with the createdAt from the last record of the prior page.
Drill into transaction details: Pass sourceOperationId or destinationOperationId to GET /v2/transactions/{transactionId} for the full transaction record, including blockchain hash, fee, and confirmation details.
6) Filter the transactions endpoint
To retrieve ledger entries tied to stablecoin operations, call the transactions endpoint with types=MINT,BURN. Add DEPOSIT and TRANSFER to also surface USD funding and stablecoin transfers tied to a conversion workflow.
Endpoint
Example query
GET /v2/transactions?types=MINT,BURN&walletId={stablecoinWalletId}&startDate=2026-05-01&endDate=2026-05-31&limit=100Where:
types: comma-separated transaction types. Stablecoin-relevant values:MINT,BURN,DEPOSIT,TRANSFER.walletId: filter to a specific wallet. Omit to see all wallets in the org.startDate/endDate: inclusive UTC date range,YYYY-MM-DD. Earliest validstartDateis2017-01-01.limit: 1–100, default 25.afterId: pagination cursor from the prior response'spage.next.
Key terms and definitions
- Mint: conversion of USD into an Anchorage stablecoin. Surfaces as
operationType: MINTin/v2/stablecoins/history. In/v2/transactionsUSD leg shows astype: MINTand stables leg shows astype: DEPOSIT. - Burn (redeem): conversion of an Anchorage stablecoin back to USD. Surfaces as
operationType: BURNin/v2/stablecoins/history. In/v2/transactionsUSD leg shows astype: DEPOSITand stables leg shows astype: BURN. - Bridge: moving a stablecoin between chains. One history record (
operationType: BRIDGE) and two transactions in/v2/transactions(type: BURN+type: MINT). authorizationOperationId: operation ID returned by/v2/stablecoins/conversion. Tracks endorsement and approval for the conversion.issueRedeemId: unique identifier for the conversion as a whole. Stable across both legs of a bridge.operationType: in/v2/stablecoins/history, one ofMINT,BURN,BRIDGE.sourceOperationId/destinationOperationId: nullable transaction IDs on each leg of a conversion. Pass toGET /v2/transactions/{transactionId}for full ledger details.status: customer-facing conversion status.INITIATED(awaiting endorsements),EXECUTING(approved, pending settlement),COMPLETED,FAILED, orUNKNOWN(forward-compatibility fallback).subStatus: optional qualifier onstatus. Currently the only customer-observable value isREJECTED_BY_CUSTOMER, paired withstatus: FAILED.idempotencyKey: client-supplied string ≤128 chars on/v2/stablecoins/conversion. Use a distinct key per conversion so safe retries don't duplicate.
Changelog
2026-05-01
Added
GET /v2/stablecoins/history: query mints, burns, and bridges across an org with status, asset, wallet, and pointers to underlying transactions.
Updated 3 months ago