Fiat Transfers & Withdrawals APIs

Overview

A transfer is a fully programmatic movement of assets to a different on-chain destination, either internal or external, without the need for a per-transfer quorum. A withdrawal is a quorum-approved movement of assets to an external address, initiated either by the iOS app or API.

Key concepts

There are four key fiat movement actions:

  • View whitelist: list the Trusted Destinations on file for an account and retrieve the Trusted Destination ID
  • Manage whitelist: create, modify, or delete Trusted Destinations.
  • Withdraw: send USD out of an ADB fiat account.
  • Transfer: move USD between accounts you own (internal) or to a Trusted Destination (external).

Action availability

ActionAPIWeb PlatformPath
View Trusted Destinations🟡 Available for testing✅ LiveAPI or web platform
Manage Trusted Destinations⚪ Not yet available✅ LiveWeb platform
Withdraw🟡 Available for testing✅ LiveAPI or web platform
Transfer API, internal🟡 Available for testingN/AAPI
Transfer API, external (to any whitelisted destination)🟡 Available for testingN/AAPI

1) Trusted Destination management

Today's path: web platform only.

To add a fiat Trusted Destination, follow Adding Trusted Destinations. When selecting destination type, choose Fiat. If you are testing this flow pre-release, please reach out to [email protected] after you've completed this step so they can enable these destinations for your account.

API status: create, modify, and delete endpoints are in development. This section will be updated when the endpoints ship.


2) Fetching Trusted Destinations

To initiate a fiat withdrawal or external transfer via API, call the list endpoint and filter the response on type == "fiat" to retrieve the id of the Trusted Destination you want to send to.

Endpoint

GET /v2/trusted_destinations

Example response

{
  "data": [
    {
      "id": "42731847-0250-43e6-879c-0a1b30817dd2",
      "name": "Acme Holdings Operating Account",
      "description": "Primary USD operating account",
      "type": "fiat",
      "fiat": {
        "beneficiaryName": "Acme Holdings LLC",
        "beneficiaryAccount": "123456789",
        "beneficiaryType": "BUSINESS",
        "beneficiaryAddress": "1 Main Street",
        "beneficiaryCity": "New York",
        "beneficiaryState": "NY",
        "beneficiaryZipCode": "10001",
        "beneficiaryCountry": "US",
        "institutionName": "Example Bank",
        "institutionId": "021000021",
        "institutionCode": "F",
        "institutionAddress": "100 Bank Plaza",
        "institutionCity": "New York",
        "institutionState": "NY",
        "institutionZipCode": "10001",
        "institutionCountry": "US"
      }
    },
    {
      "id": "7326220826746077690",
      "name": "Acme Holdings ETH Wallet",
      "description": "Counterparty ETH address",
      "type": "crypto",
      "crypto": {
        "address": "0xdaeeba8c1a5E1965682e42bfcaB19a8C5802c86B",
        "assetType": "ETH",
        "isNetworkLevel": false,
        "networkId": "ETH"
      }
    }
  ],
  "page": {
    "next": null
  }
}

3) Withdraw

To withdraw USD from an ADB fiat account to a Trusted Destination, call the withdrawals endpoint with the wallet ID as source and the Trusted Destination ID (from Section 2) as destination.

Endpoint

POST /v2/transactions/withdrawals

Example payload

{
  "assetType": "USD_R",
  "amount": "100",
  "source": {
    "id": "1f5f8952a2b1362639e24c5ccec6c189",
    "type": "WALLET"
  },
  "destination": {
    "id": "6a13b95f-ab01-4c99-bdd5-850ee425132c",
    "type": "TRUSTED_DESTINATION"
  },
  "assetParametersFiatTrustedDestination": {
    "purpose": "TRADING_SETTLEMENT",
    "memo": "test memo"
  }
}

Where:

  • {amount}: USD amount as a string.
  • {walletId}: ID of the source ADB fiat wallet. Retrieve via GET /v2/wallets.
  • {trustedDestinationId}: ID of the destination Trusted Destination (from Section 2).
  • {purpose}: enum classifying the reason for the transfer (e.g., TRADING_SETTLEMENT).
  • {memo}: free-text description sent with the wire.

Status monitoring: Query the status of a withdrawal via GET /v2/transactions, or monitor webhooks for transaction status updates.


4) Transfer

To move USD between accounts you own (internal transfer) or to a Trusted Destination (external transfer), call the transfers endpoint. The destination.type discriminates the two flows:

  • WALLET for internal transfers.
  • TRUSTED_DESTINATION for external transfers (filter Section 2's response on type == "fiat" to retrieve the id).

Endpoint

POST /v2/transfers

Example payload (internal transfer)

{
  "source": {
    "id": "1f5f8952a2b1362639e24c5ccec6c189",
    "type": "WALLET"
  },
  "transferMemo": "test transfer",
  "destination": {
    "id": "71d3f2a8841f7991b09f22fac52781ef",
    "type": "WALLET"
  },
  "assetType": "USD_R",
  "amount": "100"
}

Where:

  • source.id: ID of the source ADB wallet. Retrieve via GET /v2/wallets.
  • destination.id: ID of the destination ADB wallet.
  • transferMemo: free-text description attached to the transfer.
  • amount: USD amount as a string.

Example payload (external transfer)

External transfers set destination.type to TRUSTED_DESTINATION and add the assetParametersFiatTrustedDestination wrapper from Section 3 to specify wire purpose and memo.

{
  "source": {
    "id": "1f5f8952a2b1362639e24c5ccec6c189",
    "type": "WALLET"
  },
  "transferMemo": "test transfer",
  "destination": {
    "id": "6a13b95f-ab01-4c99-bdd5-850ee425132c",
    "type": "TRUSTED_DESTINATION"
  },
  "assetType": "USD_R",
  "amount": "100",
  "assetParametersFiatTrustedDestination": {
    "purpose": "TRADING_SETTLEMENT",
    "memo": "test memo"
  }
}

Status monitoring: Query the status of a transfer via GET /v2/transactions or GET /v2/transfers, or monitor webhooks for transaction status updates.


Key terms and definitions

  • Trusted Destination (TD): an external counterparty (bank account or crypto address) pre-registered with Anchorage and approved for receiving funds from the org.
  • Fiat TD: a TD representing a bank account. Identified by type: "fiat" in API responses.
  • Crypto TD: a TD representing a blockchain address. Identified by type: "crypto" in API responses.
  • trustedDestinationId: the value of the id field on a TD. Used in withdrawal and transfer payloads to reference the destination.
  • institutionCode: identifier type for the receiving bank. F for ABA (Fedwire, domestic US). B for SWIFT/BIC (international).
  • institutionId: the routing identifier value. Format depends on institutionCode.
  • assetParametersFiatTrustedDestination: wrapper object for fiat-specific transfer parameters.
  • purpose: classifies the reason for the transfer (e.g., TRADING_SETTLEMENT).
  • memo: free-text description sent with the wire.

Changelog

2026-04-30

Added

  • View whitelist (List Trusted Destinations): available for testing.
  • Withdraw: available for testing.
  • Transfer, internal: available for testing.
  • Transfer, external to any whitelisted destination: available for testing.


Did this page help you?