Skip to content

List transactions for all sub-accounts​

GET
/v1/account/transactionhistory/subaccounts

Requires TRANSACTION_HISTORY_READ, granted by TRADING_READ or TRADING_WRITE or TREASURY_READ or TREASURY_WRITE (bundles)

Lists transactions on all your sub-accounts in one call, grouped by sub-account and newest first within each. Only sub-accounts with matching transactions are included, and your primary account's own transactions aren't. Results cover at most 7 days; with no time range you get the last 24 hours. Sub-accounts are read in groups of 50, with skip and limit applied within each group, so with more than 50 sub-accounts you can get more than limit transactions. Call it on your primary account: on a sub-account it returns an empty list. Keys limited to some sub-accounts can't use it.

Parameters​

Query Parameters

skip

Number of transactions to skip, for paging.

Type
integer
Example0
Default
0
limit

Maximum number of transactions to return, up to 200.

Type
integer
Example100
Default
100
startTime

Only include transactions at or after this time, as an ISO 8601 timestamp in UTC. If you send only startTime, results run to 7 days after it or to now, whichever is earlier.

Type
string
Example"2026-10-20T00:00:00.000Z"
Format
"date-time"
endTime

Only include transactions at or before this time, as an ISO 8601 timestamp in UTC; at most 7 days after startTime. If you send only endTime, results start 7 days before it.

Type
string
Example"2026-10-23T00:00:00.000Z"
Format
"date-time"
currency

Only include transactions that debit or credit this currency, e.g. USDC.

Type
string
Example"USDC"
transactionTypes

Comma-separated transaction types to include, in upper case, e.g. LIMIT_BUY,MARKET_BUY. The values are the transactionType.type values in responses.

Type
string
Example"INTERNAL_TRANSFER,MARKET_BUY"

Responses​

OK

application/json
JSON
[
{
"id": "7340032581337088",
"label": "Treasury",
"transactions": [
{
"transactionType": {
"type": "MARKET_BUY",
"description": "Market Buy"
},
"debitCurrency": "ZAR",
"debitValue": "18420",
"creditCurrency": "USDT",
"creditValue": "998.5",
"feeCurrency": "USDT",
"feeValue": "1.5",
"eventAt": "2026-10-22T10:02:44.319Z",
"additionalInfo": {
"costPerCoin": 18.42,
"costPerCoinSymbol": "R",
"currencyPairSymbol": "USDTZAR",
"orderId": "019a0b64-9f13-7d2a-8e4b-5c6d7e8f9a0b"
},
"id": "019a0b64-a0c7-7b19-9f2e-3d4c5b6a7980"
},
{
"transactionType": {
"type": "INTERNAL_TRANSFER",
"description": "Transfer"
},
"creditCurrency": "USDC",
"creditValue": "2500",
"eventAt": "2026-10-22T09:30:12.884Z",
"additionalInfo": {
"reason": "SUB_ACCOUNT",
"reasonDescription": "Transfer between subaccounts",
"additional": "Transfer from Primary to Treasury",
"transferId": "512874"
},
"id": "019a0b47-3d25-7e61-a4c2-8b9c0d1e2f3a"
}
]
},
{
"id": "7339876125413376",
"label": "Client Funds",
"transactions": [
{
"transactionType": {
"type": "FIAT_DEPOSIT",
"description": "Deposit"
},
"creditCurrency": "ZAR",
"creditValue": "42000",
"eventAt": "2026-10-21T12:15:30.004Z",
"id": "019a06c8-5b31-7a44-b6d1-2c3d4e5f6a7b"
}
]
}
]

Samples​

Errors

HTTPErrorWhen
400-11INVALID_REQUESTbeforeId was sent (it isn't supported here), skip or limit isn't a whole number, limit is more than 200, startTime or endTime isn't an ISO 8601 timestamp, endTime is before startTime or more than 7 days after it, currency isn't a currency VALR supports, or transactionTypes contains an unknown type.

Plus the errors common to all signed endpoints.