Skip to main content

GET Cash Balances

Cash-balance snapshots Tradovate

Returns one {environment, userId, name, data} envelope for every linked identity. Each envelope's inner data array contains the raw Tradovate /cashBalance/list rows for that identity. For a single account's balance combined with its account record, /v1/api/tv/accounts/{account} is usually more convenient.

Endpoint

GET /v1/api/tv/cashbalances

Headers

NameValue
Content-Typeapplication/json
AuthorizationBearer <token>

Code examples

import requests

token = 'my-secret-token'

url = "https://app.crosstrade.io/v1/api/tv/cashbalances"
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}

response = requests.get(url, headers=headers)
print(f"Response Code: {response.status_code}, Response Text: {response.text}")

Response

{
"success": true,
"data": [
{
"environment": "demo",
"userId": "12345",
"name": "Demo Trader",
"data": [
{
"id": 45678,
"accountId": 123456,
"timestamp": "2026-07-15T14:32:05.184Z",
"tradeDate": { "year": 2026, "month": 7, "day": 15 },
"currencyId": 1,
"amount": 52340.18,
"realizedPnL": 340.18,
"weekRealizedPnL": 812.50
}
]
}
]
}

Each outer row identifies the linked identity queried. The inner data rows are raw Tradovate cash-balance records and may carry additional fields. A per-identity upstream failure appears inside that envelope's data as an error object without dropping successful identities.

Platform nuances

Authentication uses the same bearer token as the rest of the CrossTrade API and requires a plan with API access (Pro) plus a linked Tradovate account. Unlinked users receive 403 tradovate_not_linked.

This endpoint is REST-only and has no WebSocket equivalent.