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
| Action | API | Web Platform | Path |
|---|---|---|---|
| View Trusted Destinations | 🟡 Available for testing | ✅ Live | API or web platform |
| Manage Trusted Destinations | ⚪ Not yet available | ✅ Live | Web platform |
| Withdraw | 🟡 Available for testing | ✅ Live | API or web platform |
| Transfer API, internal | 🟡 Available for testing | N/A | API |
| Transfer API, external (to any whitelisted destination) | 🟡 Available for testing | N/A | API |
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
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 viaGET /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:
WALLETfor internal transfers.TRUSTED_DESTINATIONfor external transfers (filter Section 2's response ontype == "fiat"to retrieve theid).
Endpoint
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 viaGET /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 theidfield on a TD. Used in withdrawal and transfer payloads to reference the destination.institutionCode: identifier type for the receiving bank.Ffor ABA (Fedwire, domestic US).Bfor SWIFT/BIC (international).institutionId: the routing identifier value. Format depends oninstitutionCode.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.
Updated about 1 month ago