Transactions
Read normalized transaction data across accounts or for one account.
Transactions describe money movement. They power spending, income, transfers, cash flow, and spreadsheet workflows.
Endpoints
| Method | Path | Scope |
|---|---|---|
GET | /v1/transactions | transactions:read |
GET | /v1/accounts/{accountId}/transactions | transactions:read |
List transactions
Use GET /v1/transactions to list transactions across all accounts visible to the current API key.
Query parameters
| Parameter | Description |
|---|---|
accountId | Restrict results to one account. |
dateFrom | Start date in YYYY-MM-DD format. |
dateTo | End date in YYYY-MM-DD format. |
pending | Filter pending or posted transactions. |
visibility | Filter visible, hidden, or ignored transactions. |
category | Filter by transaction category. |
pageSize | Number of records to return, up to 100. |
pageToken | Cursor from the previous page. |
Request
curl "https://api.tablewealth.com/v1/transactions?dateFrom=2026-01-01&dateTo=2026-01-31&pageSize=50" \
-H "X-API-Key: $TABLEWEALTH_API_KEY"const url = new URL('https://api.tablewealth.com/v1/transactions');
url.searchParams.set('dateFrom', '2026-01-01');
url.searchParams.set('dateTo', '2026-01-31');
url.searchParams.set('pageSize', '50');
const response = await fetch(url, {
headers: {
'X-API-Key': process.env.TABLEWEALTH_API_KEY!
}
});
const body = await response.json();import os
import requests
response = requests.get(
"https://api.tablewealth.com/v1/transactions",
headers={"X-API-Key": os.environ["TABLEWEALTH_API_KEY"]},
params={"dateFrom": "2026-01-01", "dateTo": "2026-01-31", "pageSize": 50},
timeout=30,
)
response.raise_for_status()
body = response.json()Response fields
Key fields include id, accountId, transactionDate, authorizedDate, name, merchantName, amount, displayAmount, currencyCode, pending, and isIgnored.
Account transactions
Use GET /v1/accounts/{accountId}/transactions when the user has already selected an account.
Request
curl "https://api.tablewealth.com/v1/accounts/acct_123/transactions?visibility=active" \
-H "X-API-Key: $TABLEWEALTH_API_KEY"const accountId = 'acct_123';
const url = new URL(
`https://api.tablewealth.com/v1/accounts/${accountId}/transactions`
);
url.searchParams.set('visibility', 'active');
const response = await fetch(url, {
headers: {
'X-API-Key': process.env.TABLEWEALTH_API_KEY!
}
});
const body = await response.json();import os
import requests
account_id = "acct_123"
response = requests.get(
f"https://api.tablewealth.com/v1/accounts/{account_id}/transactions",
headers={"X-API-Key": os.environ["TABLEWEALTH_API_KEY"]},
params={"visibility": "active"},
timeout=30,
)
response.raise_for_status()
body = response.json()Response fields
Account-scoped transaction responses include account context such as accountName, institutionName, sourcePrimaryCategory, sourceDetailedCategory, and organizationTransactionCategoryName.
Amounts and dates
- Transaction
amountis the stored source-normalized amount. - Transaction
displayAmountis user-facing and currently equalsamount * -1. - Dates use
YYYY-MM-DDfor date-only fields.