---
title: ListTransactionsForAccountRequest
description: ListTransactionsForAccountRequest lists transactions involving a
  specific account.
source_url:
  html: https://thru.org/docs/api-ref/grpc/messages/thru/services/v1/list-transactions-for-account-request/
  md: https://thru.org/docs/api-ref/grpc/messages/thru/services/v1/list-transactions-for-account-request.md
---

# ListTransactionsForAccountRequest

ListTransactionsForAccountRequest lists transactions involving a specific account.

This RPC returns all transactions where the specified account appears in any capacity (fee payer, signer, or affected account). Results can be filtered using CEL expressions on transaction properties.

## Available Filter Fields

- `transaction.slot` (uint64): Block slot number
- `transaction.block_offset` (uint32): Position within block
- `transaction.signature.value` (bytes): Transaction signature

Header fields (in-memory evaluation only, not SQL pushdown):

- `transaction.header.version` (uint32): Transaction format version
- `transaction.header.fee` (uint64): Transaction fee
- `transaction.header.nonce` (uint64): Sender account nonce
- `transaction.header.start_slot` (uint64): Earliest slot for execution
- `transaction.header.expiry_after` (uint32): Expiry duration in slots
- `transaction.header.requested_compute_units` (uint64): Requested compute units
- `transaction.header.requested_memory_units` (uint32): Requested memory units
- `transaction.header.requested_state_units` (uint32): Requested state units
- `transaction.header.fee_payer_pubkey.value` (bytes): Fee payer public key
- `transaction.header.program_pubkey.value` (bytes): Program public key
- `transaction.header.fee_payer_signature.value` (bytes): Fee payer signature

Execution result fields:

- `transaction.execution_result.vm_error` (TransactionVmError enum): VM execution status (0 = success)
- `transaction.execution_result.user_error_code` (uint64): User-defined error code
- `transaction.execution_result.execution_result` (uint64): Alias for user\_error\_code
- `transaction.execution_result.consumed_compute_units` (uint64): Compute units used
- `transaction.execution_result.consumed_memory_units` (uint32): Memory units used
- `transaction.execution_result.consumed_state_units` (uint32): State units used
- `transaction.execution_result.events_count` (uint32): Number of events emitted
- `transaction.execution_result.events_size` (uint32): Total size of event data in bytes

## Filter Examples

### Filter by slot

```plaintext
filter \{
expression: "transaction.slot == params.slot"
params \{
key: "slot"
value \{ int_value: 12345 }
}
}
```

### Filter by block offset

```plaintext
filter \{
expression: "transaction.block_offset == uint(5)"
}
```

### Filter by compute units (high usage)

```plaintext
filter \{
expression: "transaction.execution_result.consumed_compute_units >= uint(1000000)"
}
```

### Filter by memory units

```plaintext
filter \{
expression: "transaction.execution_result.consumed_memory_units > uint(0)"
}
```

### Filter by state units

```plaintext
filter \{
expression: "transaction.execution_result.consumed_state_units > uint(0)"
}
```

### Filter successful transactions (by error code)

```plaintext
filter \{
expression: "transaction.execution_result.user_error_code == uint(0)"
}
```

### Filter by VM execution status

```plaintext
filter \{
expression: "transaction.execution_result.vm_error == int(0)"
}
```

### Filter transactions with events

```plaintext
filter \{
expression: "transaction.execution_result.events_count > uint(0)"
}
```

### Filter by event data size

```plaintext
filter \{
expression: "transaction.execution_result.events_size > uint(0)"
}
```

### Check for optional fields using has()

```plaintext
filter \{
expression: "has(transaction.execution_result)"
}
```

### Combined filters with AND/OR

```plaintext
filter \{
expression: "transaction.execution_result.consumed_compute_units >= uint(1000000) && transaction.execution_result.user_error_code == uint(0)"
}
```

### Using params for dynamic values

```plaintext
filter \{
expression: "transaction.execution_result.consumed_compute_units >= params.u64"
params \{
key: "u64"
value \{ int_value: 500000 }
}
}
```

## Available Functions

- `has(field)`: Check if optional field is present
- `uint(value)`: Convert to unsigned integer
- `int(value)`: Convert to signed integer
- `string(value)`: Convert to string type
- `bytes(value)`: Convert to bytes type

## Available Filter Parameters

- `params.slot` (uint64): Slot number for filtering
- `params.u64` (uint64): Generic uint64 parameter
- `params.pubkey` (Pubkey): Public key parameter for filtering

## Performance Notes

Filters on `transaction.slot`, `transaction.block_offset`, and `transaction.execution_result.*` fields are optimized with SQL pushdown for better performance. Complex expressions may fall back to in-memory evaluation.

**Package:** `thru.services.v1`

## Fields

| Field | Type | # | Description |
| - | - | - | - |
| `account` | [`thru.common.v1.Pubkey`](https://thru.org/docs/api-ref/grpc/messages/thru/common/v1/pubkey.md) | 1 · optional | |
| `page` | [`thru.common.v1.PageRequest`](https://thru.org/docs/api-ref/grpc/messages/thru/common/v1/page-request.md) | 2 · optional | |
| `filter` | [`thru.common.v1.Filter`](https://thru.org/docs/api-ref/grpc/messages/thru/common/v1/filter.md) | 3 · optional | Optional CEL filter applied after the account constraint. |
