> ## Documentation Index
> Fetch the complete documentation index at: https://docs.brand-wallet.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List all transactions

> Returns paginated transactions for the organization your access token is scoped to, with optional filters on customer, campaign, category, orderId, and rollback state.

```http theme={null}
GET $BASE_URL/v1/transactions
```

**Returns the transactions of your access token's organization, newest first, in the standard [list envelope](/api/pagination) (`data` + `meta`). Use it to look up a transaction to [roll back](/api/rollback-transaction) or to reconcile your order history. Deleted transactions are excluded.**

> **Auth:** `Authorization: Bearer <accessToken>` — an organization-scoped token from [Authentication](/api/authentication).

### Query parameters

`limit` (default `50`, max `250`) and `cursor` follow the shared pagination contract — see [Pagination & filtering](/api/pagination).

### Filterable fields

Filters combine with each other (and with the organization scope) using AND.

| Field | Type | Match | Description |
| - | - | - | - |
| `f[customer]` | string | exact / IN | Customer id. Comma = IN. |
| `f[campaign]` | string | exact / IN | Campaign id. |
| `f[category]` | string | exact / IN | Transaction category: `collect-stamps`, `collect-points`, `redeem-coupon`, `apply-discount`, `membership-action`, … |
| `f[orderId]` | string | exact / IN | The idempotency key you sent on [process](/api/process-transaction). |
| `f[rolledBack]` | boolean | exact | `true` / `false` — rolled-back transactions. |
| `f[status]` | number | exact / IN | Status code. |

> Filtering on any other field returns `invalid_filter_field` (400) with the allowed list in the description.

### Example

```bash theme={null}
curl --request GET \
  --url "$BASE_URL/v1/transactions?f%5Bcustomer%5D=af3e927e-3d9a-4ba5-b9e9-dfb0c5ffecdd&f%5BrolledBack%5D=false&limit=2" \
  --header 'Authorization: Bearer <accessToken>'
```

### Response

```json theme={null}
{
  "data": [
    {
      "id": "7f1b6c20-8f2e-40d7-966f-29707f1a77b9",
      "category": "collect-stamps",
      "customer": "af3e927e-3d9a-4ba5-b9e9-dfb0c5ffecdd",
      "campaign": "345fa0bc-40a8-49be-ab14-086b483befc8",
      "orderId": "ORD-2026-000123",
      "amount": 550,
      "rolledBack": false,
      "status": 1,
      "createdAt": "2026-10-08T10:37:22.125Z",
      "updatedAt": "2026-10-08T10:37:22.125Z"
    }
  ],
  "meta": {
    "total": 13,
    "limit": 2,
    "cursor": "eyJ0IjoiMjAyNi0xMC0wOFQwOToyMDowMi43MDVaIiwi…"
  }
}
```

List item fields:

| Field | Type | Description |
| - | - | - |
| `id` | string | Transaction id — pass it to [get](/api/get-transaction) and [rollback](/api/rollback-transaction). |
| `category` | string | Transaction category (`collect-stamps`, `redeem-coupon`, …). |
| `customer` | string | Customer id. |
| `campaign` | string | Campaign id. Omitted on `redeem-coupon` transactions (they are not tied to a campaign). |
| `orderId` | string | The idempotency key sent on process; omitted when none was sent. |
| `amount` | number | The register total submitted with the transaction; omitted when none applies. |
| `rolledBack` | boolean | Whether the transaction has been rolled back. |
| `rolledBackAt` | string | When it was rolled back (only on rolled-back transactions). |
| `rollbackReason` | string | The `reason` sent with the rollback, when one was given. |
| `status` | number | Record status. |
| `createdAt` / `updatedAt` | string | Timestamps. |

Notes:

* List items are a **summary shape**: campaign execution traces, customer state snapshots, and the submitted payload are not returned.
* Optional fields that have no value are omitted — you will not receive `null`.
* `meta.total` is the total record count for the current filter; `meta.cursor` is the paging token for the next page and is omitted on the last page.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.