Skip to main content
The balance ledger records every change to an account’s cash balance, with both before_balance / after_balance and a typed entry_type describing why the balance moved. Use it for cash reconciliation, audit trails, and regulatory reporting. For real-time push of these same entries, see the Balance Ledger Stream.

Endpoints

Balance ledger endpoints are scoped under read:positions (not read:funding) to stay consistent with the existing balance-query endpoints (GetAccountBalance, ListAccountBalances). Calls without read:positions fail with 403 Forbidden (REST) / PERMISSION_DENIED (gRPC).

Historical Floor

The ledger has a hard historical floor of May 1, 2026 (UTC). Enforcement is defense-in-depth:
  1. start_time is clamped upstream to the floor when the caller asks for earlier data.
  2. Entries with update_time before the floor are post-filtered from JSON responses.
Pre-floor entries are not retrievable through this endpoint.

Cross-Firm Access

The account in account=firms/{firm}/accounts/{id} must belong to the caller’s firm (extracted from the JWT firm_id claim).

LedgerEntryType

The balance ledger uses a strict allowlist of entry types. Internal exchange types are suppressed and never reach clients.

Allowed Types

Suppressed Types

These Internal types are blocked at the gateway and are never returned to clients.

Enforcement

Get Balance Ledger

Query Parameters

Sample Response

BalanceLedgerEntry Fields

Download Balance Ledger

The download endpoint streams raw CSV bytes from the upstream ledger as a passthrough.
CSV passthrough caveat. Because the body is opaque to the gateway, individual rows cannot be post-filtered. To prevent suppressed types from leaking in CSV bytes, the gateway substitutes the full allowlist for entry_types upstream when the caller leaves it empty.
Empty result sets return a single empty chunk followed by EOF (HTTP 200 with an empty body).

Rate Limits (per firm)

Exceeding these limits returns ResourceExhausted (429 Too Many Requests).

Error Codes

See Also

Balance Ledger Stream

Real-time gRPC subscription for balance ledger entries

Position Ledger

Position changes (quantity, cost, realized P&L)

Funding Transactions

Deposit / withdrawal state changes

Authentication

Required scopes and OAuth flow