Mint, Redeem, and Bridge Stablecoins

📘

Testing Guide: Examples in this guide use the staging host https://api.anchorage-staging.com and "USD_R" for USD-side legs. In production, use https://api.anchorage.com and "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 (sourceAssetType and destinationAssetType are the same stablecoin on different chains, e.g. USDX_BSC_TUSDX_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:

Vocabulary mapping across endpoints:

Action/stablecoins/conversionv2/transactions type=/stablecoins/history operationType =
MintUSD → stablecoinStables Leg: MINT;
USD Leg: TRANSFER
MINT
Burnstablecoin → USDUSD Leg: BURN;
Stables Leg: DEPOSIT
BURN
Bridgestablecoin (chain A) → stablecoin (chain B)BURN and MINT (one of each)BRIDGE

Action availability

ActionAPIWeb PlatformPath
Mint stablecoins✅ Live✅ LiveAPI or web platform
Burn (redeem) stablecoins✅ Live✅ LiveAPI or web platform
Bridge stablecoins✅ Live✅ LiveAPI or web platform
Query stablecoin conversion history✅ Live✅ LiveAPI or web platform
Stablecoin swaps (operationType: SWAP)🚧 In development🚧 In development
🚧

Forward compatibility: /v2/stablecoins/history may return records with operationType: SWAP once stablecoin swaps go live. Treat unknown operationType values 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} — retrieve walletId values and balances for the vault holding the source funds.
  • GET /v2/asset-types — look up exact assetType strings, including chain-specific variants like USDX_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 via GET /v2/vaults/{vaultId}.
  • destinationAssetType: stablecoin to mint (e.g., USDX_HOODI). Use GET /v2/asset-types to 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. Use GET /v2/asset-types to 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

GET /v2/stablecoins/history

Permission required: Convert Stablecoins.

Query parameters

  • limit: 1–100, default 100. Maximum number of results per page.
  • lastCreatedAt: cursor for pagination. RFC3339 timestamp from the createdAt of the last record on the previous page. Use this when manually paginating; otherwise just follow page.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

GET /v2/transactions

Example query

GET /v2/transactions?types=MINT,BURN&walletId={stablecoinWalletId}&startDate=2026-05-01&endDate=2026-05-31&limit=100

Where:

  • 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 valid startDate is 2017-01-01.
  • limit: 1–100, default 25.
  • afterId: pagination cursor from the prior response's page.next.

Key terms and definitions

  • Mint: conversion of USD into an Anchorage stablecoin. Surfaces as operationType: MINT in /v2/stablecoins/history . In /v2/transactions USD leg shows as type: MINT and stables leg shows as type: DEPOSIT.
  • Burn (redeem): conversion of an Anchorage stablecoin back to USD. Surfaces as operationType: BURN in /v2/stablecoins/history. In /v2/transactions USD leg shows as type: DEPOSIT and stables leg shows as type: 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 of MINT, BURN, BRIDGE.
  • sourceOperationId / destinationOperationId: nullable transaction IDs on each leg of a conversion. Pass to GET /v2/transactions/{transactionId} for full ledger details.
  • status: customer-facing conversion status. INITIATED (awaiting endorsements), EXECUTING (approved, pending settlement), COMPLETED, FAILED, or UNKNOWN (forward-compatibility fallback).
  • subStatus: optional qualifier on status. Currently the only customer-observable value is REJECTED_BY_CUSTOMER, paired with status: 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.

Did this page help you?