> ## Documentation Index
> Fetch the complete documentation index at: https://apidocs.finrock.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Filter and Retrieve Transactions — GET /dac/v1/transactions

> Retrieve your transaction history with filters for asset, source, destination, status, and date range. Pagination is supported via page and limit.

The List Transactions endpoint returns the transaction history for your sub-account. You can narrow results using filters including asset, source and destination identifiers, transaction status, and Unix timestamp ranges. The endpoint supports pagination via the `page` and `limit` parameters, making it suitable for high-volume reconciliation workflows. You can also look up a specific transaction by its Finrock ID, on-chain hash, or user-supplied memo.

## Request

<ParamField header="x-api-key" type="string" required>
  Your Finrock API key.
</ParamField>

<ParamField header="Authorization" type="string" required>
  Your JWT bearer token in the format `Token {JWT}`.
</ParamField>

<ParamField query="asset" type="string">
  Filter by asset name (e.g. `BTC`, `ETH`). Returns transactions for this asset only. Use the `asset_name` value from the [Supported Assets](/api-reference/utilities/supported-assets) list.
</ParamField>

<ParamField query="before" type="int32">
  Return only transactions that occurred **before** this Unix timestamp (seconds since epoch). Use together with `after` to define a date range.
</ParamField>

<ParamField query="after" type="int32">
  Return only transactions that occurred **after** this Unix timestamp (seconds since epoch).
</ParamField>

<ParamField query="source_type" type="string">
  Filter by the transaction source type. See the [Transaction Types](/reference/transaction-types) reference for allowed values.
</ParamField>

<ParamField query="source_id" type="string">
  Filter by a specific source address or label within the source type.
</ParamField>

<ParamField query="dest_type" type="string">
  Filter by the transaction destination type. See the [Transaction Types](/reference/transaction-types) reference for allowed values.
</ParamField>

<ParamField query="dest_id" type="string">
  Filter by a specific destination address or label within the destination type.
</ParamField>

<ParamField query="status" type="string">
  Filter by transaction status (e.g. `pending`, `confirmed`, `failed`). See the [Transaction Statuses](/reference/transaction-statuses) reference for the full list.
</ParamField>

<ParamField query="page" type="string">
  The page number to return when paginating results. Starts at `1`.
</ParamField>

<ParamField query="limit" type="string">
  The number of records to return per page. Defaults to a platform maximum if not specified.
</ParamField>

<ParamField query="id" type="string">
  Filter by Finrock transaction ID or on-chain transaction hash. Other filter parameters are still applied when `id` is supplied.
</ParamField>

<ParamField query="memo" type="string">
  Filter by the user-provided memo string attached to a transaction at creation time. Other filter parameters are still applied when `memo` is supplied.
</ParamField>

## Example Request

```bash theme={null}
curl --request GET \
     --url 'https://api.finrock.io/dac/v1/transactions?asset=ETH&status=confirmed&limit=25&page=1' \
     --header 'Authorization: Token {JWT}' \
     --header 'accept: application/json' \
     --header 'x-api-key: {{api_key}}'
```

## Response

A successful request returns HTTP `200` with an array of transaction objects.

<ResponseField name="id" type="string">
  The Finrock-assigned unique transaction identifier.
</ResponseField>

<ResponseField name="hash" type="string">
  The on-chain transaction hash. May be `null` for transactions that are still pending broadcast.
</ResponseField>

<ResponseField name="asset" type="string">
  The asset involved in the transaction.
</ResponseField>

<ResponseField name="amount" type="number">
  The transaction amount in the asset's native unit.
</ResponseField>

<ResponseField name="fee" type="number">
  The network fee paid for this transaction, expressed in the blockchain's native unit.
</ResponseField>

<ResponseField name="source_type" type="string">
  The source type of the transaction.
</ResponseField>

<ResponseField name="source_id" type="string">
  The source address or label.
</ResponseField>

<ResponseField name="destination_type" type="string">
  The destination type of the transaction.
</ResponseField>

<ResponseField name="destination_id" type="string">
  The destination address or label.
</ResponseField>

<ResponseField name="status" type="string">
  Current status of the transaction. See [Transaction Statuses](/reference/transaction-statuses) for possible values.
</ResponseField>

<ResponseField name="memo" type="string">
  The user-provided note attached to the transaction, if any.
</ResponseField>

<ResponseField name="created_at" type="string">
  ISO 8601 timestamp of when the transaction was submitted to Finrock.
</ResponseField>

<ResponseField name="confirmed_at" type="string">
  ISO 8601 timestamp of on-chain confirmation. `null` if not yet confirmed.
</ResponseField>

```json theme={null}
{
  "data": [
    {
      "id": "txn_abc123",
      "hash": "0xabc123def456...",
      "asset": "ETH",
      "amount": 0.5,
      "fee": 0.00042,
      "source_type": "INTERNAL",
      "source_id": "0xC3d4E5f6A7b8C9d0E1f2A3b4C5d6E7f8A9b0C1d2",
      "destination_type": "EXTERNAL",
      "destination_id": "0xRecipientAddress...",
      "status": "confirmed",
      "memo": "payout-order-789",
      "created_at": "2024-06-01T12:00:00Z",
      "confirmed_at": "2024-06-01T12:02:15Z"
    }
  ],
  "page": 1,
  "limit": 25,
  "total": 1
}
```

<ResponseField name="401" type="object">
  Returned when the `x-api-key` or `Authorization` header is missing or invalid.
</ResponseField>

```json theme={null}
{
  "error": "Unauthorized",
  "message": "Invalid or missing authentication credentials."
}
```
