> For the complete documentation index, see [llms.txt](https://tri.gitbook.io/tri-doc/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://tri.gitbook.io/tri-doc/liquidity-pool/balance/get-balance-transactions.md).

# Get Balance Transactions

### Liquidity Pool

<mark style="color:blue;">`GET`</mark> <https://sandbox.triangle.digital/api/v2/liquidity\\_pool/clients/{client\\_id}/balance/transactions>

Movements of a Spending Capacity balance — deposits, purchases, refunds and manual corrections — newest first. The client-level address returns the movements of every holder of this client; the other two narrow it to one holder:

<table data-full-width="true"><thead><tr><th width="470">URL</th><th>Scope</th></tr></thead><tbody><tr><td><code>/clients/{client_id}/balance/transactions</code></td><td>Every holder of the client</td></tr><tr><td><code>/clients/{client_id}/employees/{employee_id}/balance/transactions</code></td><td>One employee</td></tr><tr><td><code>/clients/{client_id}/individual_consumptions/{individual_consumption_id}/balance/transactions</code></td><td>One Individual Consumption</td></tr></tbody></table>

**Paging.** Pass the `next_cursor` of the previous answer as `starting_after`; `has_more` says whether another page exists. A cursor is opaque and short-lived — do not store it.

Money, time and error formats follow the [conventions of the balance endpoints](/tri-doc/liquidity-pool/balance.md).

**Path parameters**

<table data-full-width="true" data-search="false"><thead><tr><th width="230">Name</th><th width="110">Type</th><th>Description</th><th width="210">Where to take it from</th></tr></thead><tbody><tr><td><code>client_id</code></td><td>integer</td><td><strong>Required.</strong> The client whose journal is read.</td><td><a href="/tri-doc/liquidity-pool/get-clients.md">Get Clients</a> — <code>client_id</code></td></tr><tr><td><code>employee_id</code></td><td>integer</td><td>Employee address only.</td><td><a href="/tri-doc/liquidity-pool/get-employees.md">Get Employees</a> — <code>employee_id</code></td></tr><tr><td><code>individual_consumption_id</code></td><td>uuid</td><td>Individual Consumption address only.</td><td><a href="/tri-doc/liquidity-pool/get-individual-consumptions.md">Get Individual Consumptions</a> — <code>individual_consumption_id</code></td></tr></tbody></table>

**Headers**

<table data-full-width="true"><thead><tr><th>Name</th><th>Value</th></tr></thead><tbody><tr><td>Content-Type</td><td><code>application/json</code></td></tr></tbody></table>

**Query parameters**

<table data-full-width="true" data-search="false"><thead><tr><th width="159.800048828125">Name</th><th width="149">Type</th><th>Description</th><th width="160.796875">Example</th></tr></thead><tbody><tr><td><code>hash</code></td><td>string</td><td><strong>Required.</strong> API key.</td><td>fk5f0iuy-rr06-j4x3-i75b-fy2s67s4ilo1</td></tr><tr><td><code>operation</code></td><td>string</td><td>Filter by kind. Allowed values: deposit, purchase, refund, manual.</td><td>purchase</td></tr><tr><td><code>created_from</code></td><td>string</td><td>ISO 8601 date or date-time, inclusive. A bare date covers the whole day.</td><td>2026-08-01</td></tr><tr><td><code>created_to</code></td><td>string</td><td>ISO 8601 date or date-time, inclusive.</td><td>2026-08-04T23:59:59Z</td></tr><tr><td><code>limit</code></td><td>integer</td><td>Rows per page, from 1 to 200. Default: 50.</td><td>50</td></tr><tr><td><code>starting_after</code></td><td>string</td><td>Cursor of the next page — the <code>next_cursor</code> of the previous answer.</td><td>BAhpArwH--cf3dbfae63e8c90fa70a4c1558c9e9</td></tr></tbody></table>

**Response fields**

<table data-full-width="true" data-search="false"><thead><tr><th width="260">Field</th><th width="110">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>data[].created_at</code></td><td>string</td><td>When the movement happened, ISO 8601 in UTC.</td></tr><tr><td><code>data[].operation</code></td><td>string</td><td>deposit, purchase, refund or manual (a change made in the database).</td></tr><tr><td><code>data[].operation_id</code></td><td>uuid</td><td>The operation this movement belongs to; <code>null</code> for a manual correction.</td></tr><tr><td><code>data[].amount</code></td><td>object</td><td>Currency and decimal string. Negative when money leaves the balance.</td></tr><tr><td><code>data[].balance_after</code></td><td>object</td><td>Balance right after this movement.</td></tr><tr><td><code>data[].owner.type</code></td><td>string</td><td>employee, individual_consumption, company or client.</td></tr><tr><td><code>data[].owner.name</code></td><td>string</td><td>Name of the holder, as shown in the portal.</td></tr><tr><td><code>data[].owner.employee_id</code></td><td>integer</td><td>Present when the type is employee.</td></tr><tr><td><code>data[].owner.individual_consumption_id</code></td><td>uuid</td><td>Present when the type is individual_consumption.</td></tr><tr><td><code>data[].initiated_by</code></td><td>object</td><td>User behind the movement (<code>user_id</code>, <code>name</code>, <code>email</code>); <code>null</code> for an automatic refund or a manual correction.</td></tr><tr><td><code>data[].comment</code></td><td>string</td><td>What the movement was for. On a deposit it also names the card that paid — brand, last four digits and expiry date.</td></tr><tr><td><code>data[].payment_intent_id</code></td><td>string</td><td>Stripe PaymentIntent of the payment behind the movement. Returned on a deposit; <code>null</code> for a purchase, a refund and a manual correction, which move no money through the card.</td></tr><tr><td><code>next_cursor</code></td><td>string</td><td>Pass as <code>starting_after</code> to read the next page; <code>null</code> on the last one.</td></tr><tr><td><code>has_more</code></td><td>boolean</td><td>Whether another page exists.</td></tr></tbody></table>

**Response**

{% tabs %}
{% tab title="200" %}
{% code fullWidth="false" %}

```json
{
    "data": [
        {
            "created_at": "2026-08-03T14:05:11Z",
            "operation": "purchase",
            "operation_id": "9c02f7b1-4a3d-4a10-9e77-51b0a6c8d233",
            "amount": {
                "currency": "USD",
                "amount": "-137.50"
            },
            "balance_after": {
                "currency": "USD",
                "amount": "212.50"
            },
            "owner": {
                "type": "employee",
                "name": "John Smith",
                "employee_id": 45
            },
            "initiated_by": {
                "user_id": 2311,
                "name": "Anna Brown",
                "email": "anna@acme.com"
            },
            "comment": "Paid for invoice INV-1041, Air Travel",
            "payment_intent_id": null
        },
        {
            "created_at": "2026-08-03T14:05:12Z",
            "operation": "refund",
            "operation_id": "5d81aa64-2f19-4b8c-8f04-7c22e6b91a0e",
            "amount": {
                "currency": "USD",
                "amount": "12.30"
            },
            "balance_after": {
                "currency": "USD",
                "amount": "224.80"
            },
            "owner": {
                "type": "employee",
                "name": "John Smith",
                "employee_id": 45
            },
            "initiated_by": null,
            "comment": "Returned because the purchase was not completed",
            "payment_intent_id": null
        },
        {
            "created_at": "2026-08-01T09:12:44Z",
            "operation": "deposit",
            "operation_id": "b7c4e0d2-8a51-4f6e-9c33-1de95f7a4b08",
            "amount": {
                "currency": "USD",
                "amount": "350.00"
            },
            "balance_after": {
                "currency": "USD",
                "amount": "350.00"
            },
            "owner": {
                "type": "employee",
                "name": "John Smith",
                "employee_id": 45
            },
            "initiated_by": {
                "user_id": 2311,
                "name": "Anna Brown",
                "email": "anna@acme.com"
            },
            "comment": "Added to the balance from the credit card (Visa 4242 Expires 4/2025)",
            "payment_intent_id": "pi_3U95dcIqyi8MGgBl3fi5zdYB"
        }
    ],
    "next_cursor": "BAhpArwH--cf3dbfae63e8c90fa70a4c1558c9e9",
    "has_more": true
}
```

{% endcode %}
{% endtab %}

{% tab title="422" %}
A filter is not valid; `param` names it. See [Balance Error Codes](/tri-doc/liquidity-pool/balance/balance-error-codes.md).

```json
{
    "title": "Unknown operation",
    "status": 422,
    "detail": "operation must be one of: deposit, purchase, refund, manual.",
    "code": "invalid_filter",
    "param": "operation"
}
```

{% endtab %}
{% endtabs %}
