List transactions
GET /api/v1/programmatic/transactions
/api/v1/programmatic/transactionsReturns posted, non-archived transactions with offset or cursor pagination.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
type | query | withdrawal | deposit | transfer | loan_paymentOptional | Return only transactions with this journal type. withdrawal |
start | query | stringOptional | Inclusive start of the financial date range. 2026-07-01 |
end | query | stringOptional | Inclusive end of the financial date range. 2026-07-31 |
page | query | numberOptional | One-based offset page. Mutually exclusive with `after`; omit it for cursor pagination. <page> |
limit | query | numberOptional | Maximum transactions returned per page. <limit> |
query | query | stringOptional | Case-insensitive transaction description search. coffee |
account_id | query | stringOptional | Return transactions that include this account. <account_id> |
category_id | query | stringOptional | Return transactions assigned to this category. <category_id> |
after | query | stringOptional | Opaque cursor returned as `meta.next_cursor`. Mutually exclusive with `page`. <opaque-cursor> |
Code examples
curl --request GET \
--url 'https://api.tetri.app/api/v1/programmatic/transactions?type=withdrawal&start=2026-07-01&end=2026-07-31&page=<page>' \
--header 'Authorization: Bearer $TETRI_API_TOKEN'Responses
{
"data": [
{
"type": "transactions",
"id": "<uuid>",
"attributes": {
"revision": "2026-07-12T12:00:00Z",
"group_title": "<string>",
"execution_status": "scheduled",
"executed_at": "2026-07-12T12:00:00Z",
"archived_at": "2026-07-12T12:00:00Z",
"is_archived": false,
"created_by": {},
"transactions": [
{
"transaction_journal_id": "<uuid>",
"type": "withdrawal",
"transfer_kind": "internal_fx",
"date": "2026-07-12T12:00:00Z",
"occurred_at": "2026-07-12T12:00:00Z",
"business_date": "2026-07-12",
"timezone": "Europe/Tbilisi",
"description": "Grocery shopping",
"amount": "42.50",
"foreign_amount": "45.00",
"foreign_currency_code": "EUR",
"foreign_currency_symbol": "€",
"currency_code": "USD",
"currency_symbol": "$",
"currency_decimal_places": 2,
"source_id": "<uuid>",
"source_name": "<string>",
"source_type": "asset",
"destination_id": "<uuid>",
"destination_name": "<string>",
"destination_type": "expense",
"category_id": "<uuid>",
"category_name": "<string>",
"budget_id": "<uuid>",
"budget_name": "<string>",
"tags": [
"<string>"
],
"notes": "<string>",
"last_reconciled_at": "2026-07-12",
"reconciled": false,
"status": "posted",
"estimated_rate": "1.05",
"final_rate": "1.058",
"settled_at": "2026-07-12T12:00:00Z",
"splits": [
{
"id": "<uuid>",
"amount": "42.50",
"category_id": "<uuid>",
"note": "<string>",
"tag_ids": [
"<uuid>"
]
}
],
"has_splits": false,
"remainder": "0.00",
"fx_delta_home": "1.23",
"effective_rate_journal": "0.9200"
}
]
}
}
],
"meta": "<string>"
}{
"statusCode": 400,
"code": "PROGRAMMATIC_PAGINATION_MODE_CONFLICT",
"message": "<string>",
"error": "Bad Request",
"request_id": "8cf64dcc-0f73-4f8d-a845-3d80c1040475"
}{
"statusCode": 400,
"code": "PROGRAMMATIC_PAGINATION_MODE_CONFLICT",
"message": "<string>",
"error": "Bad Request",
"request_id": "8cf64dcc-0f73-4f8d-a845-3d80c1040475"
}{
"statusCode": 400,
"code": "PROGRAMMATIC_PAGINATION_MODE_CONFLICT",
"message": "<string>",
"error": "Bad Request",
"request_id": "8cf64dcc-0f73-4f8d-a845-3d80c1040475"
}{
"statusCode": 400,
"code": "PROGRAMMATIC_PAGINATION_MODE_CONFLICT",
"message": "<string>",
"error": "Bad Request",
"request_id": "8cf64dcc-0f73-4f8d-a845-3d80c1040475"
}