> ## Documentation Index
> Fetch the complete documentation index at: https://docs.anchorage.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Trading

> Submit single and block trade orders, manage pricing data, and understand the settlement lifecycle.

Let your clients trade their custodied assets. Submit a single order for one account, or a block order allocated across many accounts at the same execution price — Anchorage Digital handles settlement automatically.

## How it works

<Steps>
  <Step title="Check available balance">
    Confirm the account has enough `availableForTrading` balance for the trade.
  </Step>

  <Step title="Subscribe to pricing data">
    Pull real-time pricing from the WebSocket market data stream before submitting an order.
  </Step>

  <Step title="Submit an order">
    Submit a single or block order over REST or WebSocket.
  </Step>

  <Step title="Monitor status">
    Track order and trade status as the trade fills. Anchorage Digital settles automatically and updates account balances — no action required from you.
  </Step>
</Steps>

<Note>
  Testing in sandbox differs from production. Settlement testing is limited due to a mismatch between tradeable and testnet assets.
</Note>

***

## Asset support

Asset support for the wealth management integration is a subset of Anchorage Digital's full custody asset list. Fetch supported assets from **`GET /v2/trading/pairs`**.

### Trading locations

As of July 2026:

| Trading location | Trading Entity            |
| :--------------- | :------------------------ |
| US (Non-NY)      | Anchorage Hold, LLC       |
| NY               | Anchorage Digital NY, LLC |

### Supported assets

As of July 2026, wealth manager clients have access to the following curated selection of digital assets supported by Anchorage Digital for custody and trading.

| Asset Name              | Asset Symbol   | Asset Type | Trading Entity                                    |
| :---------------------- | :------------- | :--------- | :------------------------------------------------ |
| Aave                    | AAVE           | ERC-20     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Cardano on Cardano      | ADA\_CARDANO   | Native     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| ApeCoin                 | APE            | ERC-20     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Aptos                   | APT            | Native     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Cosmos                  | ATOM           | Native     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Avalanche (Native)      | AVAX           | Native     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Axie Infinity           | AXS            | ERC-20     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Balancer                | BAL            | ERC-20     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Basic Attention Token   | BAT            | ERC-20     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Bitcoin Cash            | BCH            | Native     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Binance Coin            | BNB\_BSC       | Native     | Anchorage Hold, LLC                               |
| Bitcoin                 | BTC            | Native     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Compound Token          | COMP           | ERC-20     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Cronos                  | CRO            | ERC-20     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Curve DAO               | CRV            | ERC-20     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Maker Dai               | DAI            | ERC-20     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Dogecoin                | DOGE           | Native     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Polkadot on Polkadot    | DOT\_POLKADOT  | Native     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Ethereum                | ETH            | Native     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Filecoin                | FIL            | Native     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| The Graph               | GRT            | ERC-20     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Hedera                  | HBAR\_HBAR     | Native     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| HYPE on HyperEVM        | HYPE\_HYPEREVM | Native     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Immutable X             | IMX            | ERC-20     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Lido Protocol           | LDO            | ERC-20     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Chainlink               | LINK           | ERC-20     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Litecoin                | LTC            | Native     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Decentraland            | MANA           | ERC-20     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Near                    | NEAR\_NEAR     | Native     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Polygon Ecosystem Token | POL            | ERC-20     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Quant                   | QNT            | ERC-20     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| The Sandbox             | SAND           | ERC-20     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Shiba Inu               | SHIB           | ERC-20     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Synthetix               | SNX            | ERC-20     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Solana                  | SOL            | Native     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| StarkNet Token          | STRK           | ERC-20     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Sui                     | SUI            | Native     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Sushiswap               | SUSHI          | ERC-20     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| TRX on TRON             | TRX\_TRON      | Native     | Anchorage Hold, LLC                               |
| Uniswap                 | UNI            | ERC-20     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| USD Coin                | USDC           | ERC-20     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Tether                  | USDT           | ERC-20     | Anchorage Hold, LLC                               |
| Wrapped Bitcoin         | WBTC           | ERC-20     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Worldcoin               | WLD            | ERC-20     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| XDC Network on XDC      | XDC\_XDC       | Native     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Stellar                 | XLM            | Native     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| Ripple                  | XRP            | Native     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| yearn.finance           | YFI            | ERC-20     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |
| 0x (Zero X)             | ZRX            | ERC-20     | Anchorage Hold, LLC and Anchorage Digital NY, LLC |

### Trade precision and minimums

Minimum order sizes and precision increments are returned by **`GET /v2/trading/pairs`** and enforced at order submission. You can also call the RFQ endpoint beforehand to verify quote precision and minimum trade size (requires `tradingAccountId`).

```json Example asset data theme={null}
{
  "data": [
    {
      "description": "Buy AAVE with USD, or Sell AAVE for USD",
      "pair": "AAVE-USD",
      "referenceData": {
        "baseAssetType": "AAVE",
        "baseSizeIncrement": "0.00000001",
        "lastUpdateTime": "2024-07-09T15:57:55.249Z",
        "minimumOrderSize": "0.000000010000000000000002",
        "priceIncrement": "0.0000001",
        "quoteAssetType": "USD",
        "quoteSizeIncrement": "0.01"
      }
    }
  ]
}
```

| Field                | Description                                                                                              |
| :------------------- | :------------------------------------------------------------------------------------------------------- |
| `baseSizeIncrement`  | Minimum size increment when specifying order quantity in the base asset. Maximum decimal places allowed. |
| `quoteSizeIncrement` | Minimum size increment in the quote asset (e.g., USD to 2 decimal places = `0.01`).                      |
| `priceIncrement`     | Minimum price increment in the response from the liquidity provider.                                     |
| `minimumOrderSize`   | Minimum required base asset size to place an order.                                                      |

***

## Order types

Supported order type: **Limit FoK**.

**Single orders** are ideal for tailored portfolio management or direct client trade requests. Also used to on/off-ramp specific assets without rebalancing across accounts.

**Block trades** execute multiple account allocations as a single institutional order — same execution price for all underlying trades. Routes to liquidity providers via smart order routing.

Block trade requirements:

* All allocations must sum to the total order quantity.
* All allocations must meet `availableForTrading` balance — if any allocation fails, the entire order fails.
* Allocations are capped at 1,000 per order.
* Allocation quantity must match the order's currency.
* All orders are Fill-or-Kill (FoK).
* Programmatic cancellations and short selling are not supported.

***

## Settlement lifecycle

Settlement is fully automated by Anchorage Digital.

Unsettled balances are available for trading immediately but not for withdrawal until settled. Anchorage Digital funds network fees for settlement activity — these are tracked in the "FBO gas fees" account and funded regularly by Anchorage Digital, with no action required from the wealth manager.

**Settlement status values**

| Status                                                   | Description                                                                                         |
| :------------------------------------------------------- | :-------------------------------------------------------------------------------------------------- |
| `PENDING`                                                | Settlement created; covers one or more trades.                                                      |
| `SETTLING`                                               | Funds transferred from wealth manager wallets; Anchorage Digital settling with liquidity providers. |
| `SETTLED`                                                | All funds settled; account balances updated.                                                        |
| `CANCELED`                                               | Settlement canceled.                                                                                |
| `EXECUTED`, `REJECTED`, `PENDINGALLOCATION`, `ALLOCATED` | Internal statuses — not applicable to the wealth management use case.                               |

**Settlement types:** `TRADE` | `FEE` (custody, advisory, model, management)

**Automated settlement status flow**

| Event                     | Trade status | Settlement status |
| :------------------------ | :----------- | :---------------- |
| Trade executed            | `EXECUTED`   | —                 |
| Trade added to settlement | `EXECUTED`   | `PENDING`         |
| First leg settled         | `SETTLING`   | `SETTLING`        |
| Second leg settled        | `SETTLED`    | `SETTLED`         |

***

## Integration steps

### Step 1: Check available balance to trade

**`GET /v2/subaccounts/customers/{customerId}/accounts`**

Fetch `availableForTrading` per account. This balance includes unsettled assets, which are also tradeable.

```json Response theme={null}
"balances": [
  {
    "assetType": "BTC",
    "totalBalance": "1",
    "availableForWithdrawal": "0.5",
    "availableForTrading": "0.5"
  }
]
```

### Step 2: Subscribe to pricing data

Pull real-time asset price data from the WebSocket market data stream: configure the WebSocket connection, subscribe to the asset's USD price feed, then use the response data when submitting orders.

<CodeGroup>
  ```python Subscribe to market data theme={null}
  def subscribe_marketdata(ws, symbol, receiver):
      msg = json.dumps({
          "messageType": "MarketDataSnapshotRequest",
          "timestamp": datetime.now().isoformat(),
          "payload": {
              "type": "subscribe",
              "symbol": symbol,
              "reqId": str(uuid.uuid4())
          }
      })
      ws.send(msg)
      while True:
          resp = json.loads(ws.recv())
          receiver(resp)
  ```

  ```json Market data snapshot response theme={null}
  {
    "messageType": "MarketDataSnapshot",
    "timestamp": "2023-02-08T14:19:44Z",
    "payload": {
      "asks": [
        { "price": "23083.25076763", "size": "1" },
        { "price": "23084.28705625", "size": "4" }
      ],
      "bids": [
        { "price": "23081.96", "size": "1" },
        { "price": "23080.96918517", "size": "4" }
      ],
      "reqId": "e07b9683-af27-481a-b4db-1c492114e930",
      "symbol": "BTC-USD"
    }
  }
  ```
</CodeGroup>

### Step 3: Submit an order

Submission methods: REST API (**`POST /v2/trading/order`**) or [WebSocket](/knowledge-base/platform/developers/trading/websocket-getting-started).

Key submission rules:

1. Include a 1–5% buffer on `limitPrice` to reduce rejections during price volatility. Execution still fills at best market rate.
2. Submit in USD for buys; submit in-kind for sells.
3. `accountId` is not required for account-level trades.
4. `baseSizeIncrement` — round allocation quantities to this precision before submission. The parent order uses this precision when routing to liquidity providers.

<CodeGroup>
  ```bash REST Request theme={null}
  curl --request POST \
       --url https://api.anchorage-staging.com/v2/trading/order \
       --header 'Api-Access-Key: [API Key]' \
       --header 'accept: application/json' \
       --header 'content-type: application/json' \
       --data '{
    "clOrderId": "6fb5fc79-0bb4-446d-82dd-d4687fb56a02",
    "symbol": "BTC-USD",
    "side": "BUY",
    "currency": "USD",
    "quantity": "100.00",
    "orderType": "LIMIT",
    "limitPrice": "100004.05",
    "timestamp": "2025-02-20T18:32:51.133Z",
    "allocation": [
      { "subaccountId": "ec761b5e-fd2c-497a-a9a0-f8738ac97bd", "quantity": "10" },
      { "subaccountId": "bc1234e-12v3-ab31-1234-gf8738ac597bd", "quantity": "90" }
    ]
  }'
  ```

  ```json REST Response (filled) theme={null}
  {
    "data": {
      "clOrderId": "6fb5fc79-0bb4-446d-82dd-d4687fb56a02",
      "orderId": "a94c8d75-6c9d-4903-95f3-5b0893e76cb7",
      "symbol": "BTC-USD",
      "side": "BUY",
      "currency": "USD",
      "orderType": "MARKET",
      "orderStatus": "FILLED",
      "avgPx": "21005.4",
      "orderQty": "10000.00",
      "cumQty": "10000.00",
      "counterQty": "0.4760680586896702",
      "fee": "0.00001359805",
      "feeCurrency": "BTC",
      "transactTime": "2022-11-20T20:32:16.423Z"
    }
  }
  ```

  ```json WebSocket Submit order theme={null}
  {
    "messageType": "NewOrderSingle",
    "timestamp": "2023-03-12T22:22:09.925952Z",
    "payload": {
      "clOrderId": "47ce2580-5e57-45d8-b67f-71a5aa55d05f",
      "symbol": "BTC-USD",
      "side": "SELL",
      "currency": "USD",
      "quantity": "10000",
      "orderType": "LIMIT",
      "limitPrice": "21000",
      "timeInForce": "GTC",
      "accountId": "3fa8372d-b51d-44ab-a456-43e947e4be10"
    }
  }
  ```

  ```json WebSocket Execution report (filled) theme={null}
  {
    "messageType": "ExecutionReport",
    "payload": {
      "clOrderId": "47ce2580-5e57-45d8-b67f-71a5aa55d05f",
      "symbol": "BTC-USD",
      "orderStatus": "FILLED",
      "avgPx": "21990.01",
      "cumQty": "10000",
      "fee": "0.00045521",
      "feeCurrency": "BTC",
      "transactTime": "2023-03-12T22:22:09.925050Z"
    }
  }
  ```

  ```json WebSocket Execution report (rejected) theme={null}
  {
    "messageType": "ExecutionReport",
    "payload": {
      "clOrderId": "47ce2580-5e57-45d8-b67f-71a5aa55d05f",
      "symbol": "BTC-USD",
      "orderStatus": "REJECTED",
      "rejectReason": "Invalid request",
      "rejectReasonText": "invalid price: 21500.0001, must be multiplication of 0.01",
      "transactTime": "2023-03-12T22:22:09.925050Z"
    }
  }
  ```
</CodeGroup>

<Tip>
  Implement retry logic for REST order submissions:

  * Retry after 1s, 2s, then 4s on non-201 errors.
  * A 201 response with `REJECTED` status indicates a liquidity provider issue (insufficient liquidity, min order size) — retries will not help.
  * A 500 error typically indicates an account balance issue.
</Tip>

### Step 4: Monitor order and trade status

**Order status values**

| Status     | Description                                                                             |
| :--------- | :-------------------------------------------------------------------------------------- |
| `FILLED`   | Order fully executed.                                                                   |
| `CANCELED` | Limit FoK order did not cross the book. Safe to resubmit.                               |
| `REJECTED` | Poorly formatted, liquidity provider issue, or internal error. Do not retry repeatedly. |

**Trade status values**

| Status     | Description                                                                                        |
| :--------- | :------------------------------------------------------------------------------------------------- |
| `PENDING`  | Trade accepted; temporary status while Anchorage Digital receives fill details from market makers. |
| `EXECUTED` | Fill price and fees available; pre-settlement.                                                     |
| `SETTLING` | Netted balances sent to Anchorage Digital; settling with liquidity providers.                      |
| `SETTLED`  | All funds settled; account balances updated.                                                       |
| `REJECTED` | Trade failed — asset volatility exceeded slippage or insufficient trading limit.                   |
| `CANCELED` | Trade canceled manually.                                                                           |

***

## Full example

Checking balances, submitting a block order, and monitoring its status end to end:

```python theme={null}
import requests
import uuid

request_headers = {
    "accept": "application/json",
    "content-type": "application/json",
    "Api-Access-Key": "[API Key]"
}

customer_id = "[customerId]"

# Step 1: Get account balances
response = requests.get(
    f"https://api.anchorage-staging.com/v2/subaccounts/customers/{customer_id}/accounts",
    headers=request_headers
)
data = response.json()["data"]
# check availableForTrading per account

# Step 2: Submit block order
order_request = {
    "clOrderId": "fb45ac11-584a-4c31-93ae-6db3c0fb1547",
    "symbol": "ETH-USD",
    "side": "SELL",
    "currency": "ETH",
    "quantity": "0.226",
    "orderType": "LIMIT",
    "limitPrice": "2100",
    "timestamp": "2024-01-26T19:31:55Z",
    "allocation": [
        { "subaccountId": "e3523a44-0a16-4923-8c65-5bd3c0fe5513", "quantity": "0.128" },
        { "subaccountId": "82962476-6250-443e-bcda-1bf6f959ebcd", "quantity": "0.098" }
    ]
}

response = requests.post(
    "https://api.anchorage-staging.com/v2/trading/order",
    json=order_request,
    headers=request_headers
)
data = response.json()["data"]

# Step 3: Check order status
order_id = "1a69504c1-18ae-9fb4-a4ea-9f83699"
response = requests.get(
    f"https://api.anchorage-staging.com/v2/trading/orders/{order_id}",
    headers=request_headers
)
data = response.json()["data"]
# check orderStatus, avgPx, fee
```


## Related topics

- [Trading](/knowledge-base/platform/users/trading.md)
- [Getting trading data](/knowledge-base/platform/developers/trading/read-apis.md)
- [List trading accounts](/knowledge-base/porto/api-reference/v2/trading/list-trading-accounts.md)
- [List supported trading pairs](/knowledge-base/api-reference/v2/trading/list-supported-trading-pairs.md)
