---
title: "List member tier transactions"
method: GET
path: "/v2/loyalties/programs/{programId}/members/{memberId}/tiers/transactions"
tags: ["Programs"]
---

# List member tier transactions

`GET /v2/loyalties/programs/{programId}/members/{memberId}/tiers/transactions`

## Request

- Base URL: `https://api.voucherify.io`
- URL: `https://api.voucherify.io/v2/loyalties/programs/{programId}/members/{memberId}/tiers/transactions`
- Auth: none required

<Warning>

<Badge color="yellow">BETA endpoint</Badge>

This is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.

</Warning>

Lists tier transactions (tier joins, upgrades, downgrades, prolongations and exits)
for the given program member, with cursor-based pagination. Supports filtering by
card id and creation date.

## Path parameters

- `programId` string, required
- `memberId` string, required

## Query parameters

- `limit` unknown
- `order` union
  - string[]
  - '-created_at' | 'created_at'
- `cursor` unknown
- `filters` TierTransactionListFilters: Filters for listing tier transactions.
  - `junction` 'AND' | 'OR': Logical junction between the field filters. Defaults to AND behavior.
  - `card_id` TierTransactionFilterCardIdConditions: ID filter conditions for loyalty card ids. Values must match pattern `^lcrd_[a-f0-9]+$`. `$is`/`$is_not` accept a single value (string or 1-element array); `$in`/`$not_in` accept a string or an array of 1-100 values.
    - `conditions` object, required
      - `$is` union: Matches transactions whose card id equals the given value.
        - string
        - string[]
      - `$is_not` union: Matches transactions whose card id does not equal the given value.
        - string
        - string[]
      - `$in` union: Matches transactions whose card id is one of the given values.
        - string
        - string[]
      - `$not_in` union: Matches transactions whose card id is not one of the given values.
        - string
        - string[]
  - `created_at` OrderPaymentFilterDateConditions: Date filter conditions. `$before`/`$after` accept an ISO date-time string. `$is`/`$more_than`/`$less_than` accept a non-negative integer number of days ago. `$has_value`/`$is_unknown` accept any single value and match rows where the field is set / not set. Single values may also be passed as 1-element arrays.
    - `conditions` object, required
      - `$before` union: Matches rows with the date before the given date-time.
        - string
        - string[]
      - `$after` union: Matches rows with the date after the given date-time.
        - string
        - string[]
      - `$is` union: Matches rows with the date exactly the given number of days ago.
        - string
        - string[]
      - `$more_than` union: Matches rows with the date more than the given number of days ago.
        - string
        - string[]
      - `$less_than` union: Matches rows with the date less than the given number of days ago.
        - string
        - string[]
      - `$has_value` string: Matches rows where the date field is set.
      - `$is_unknown` string: Matches rows where the date field is not set.

## Response `200`

Paginated list of tier transactions.

- TierTransactionListResponse: Paginated list of tier transactions.
  - `data` TierTransaction[]: Tier transactions.
    - `id` string: Unique tier transaction identifier (format `lttx_...`).
    - `card_id` string: Identifier of the related loyalty card (format `lcrd_...`).
    - `program_id` string: Identifier of the loyalty program (format `lprg_...`).
    - `member_id` string: Identifier of the program member (format `lmbr_...`).
    - `card_definition_id` string: Identifier of the card definition (format `lcdef_...`).
    - `tier_structure_id` string: Identifier of the tier structure (format `lts_...`).
    - `tier_id` unknown
    - `type` 'UPGRADED' | 'DOWNGRADED' | 'JOINED' | 'LEFT' | 'PROLONGED': Transaction type. `JOINED` — member joined a tier; `LEFT` — member left a tier; `UPGRADED` — member moved to a higher tier; `DOWNGRADED` — member moved to a lower tier; `PROLONGED` — the member's tier membership was prolonged.
    - `details` TierTransactionDetails: Tier transaction details. All fields are nullable; which fields are populated depends on the transaction type: `JOINED`/`PROLONGED` — `tier_to`, `start_at`, `expires_at` (no `tier_from`); `LEFT` — `tier_from` (no `tier_to`); `UPGRADED`/`DOWNGRADED` — both `tier_from` and `tier_to`.
      - `points` unknown
      - `tier_from` unknown
      - `tier_to` unknown
      - `origin` TierTransactionOrigin: Origin of the tier change.
        - `type` 'card_operations' | 'daily_task_operations' | 'member_card_created' | 'member_card_deleted': Origin type. `card_operations` — triggered by card point operations; `daily_task_operations` — triggered by scheduled daily tasks; `member_card_created` — triggered by creating a member card; `member_card_deleted` — triggered by deleting a member card.
        - `card_transaction_ids` string[]: Identifiers of the card transactions that triggered the tier change (format `lctx_...`).
      - `rejection` TierTransactionRejection: Rejection details.
        - `reason` string: Machine-readable rejection reason. Known value: `SUPERSEDED_BY_LATER_TRANSACTION`.
        - `details` string: Additional human-readable details about the rejection.
      - `start_at` string, date-time: Start of the tier membership period, or `null`.
      - `expires_at` string, date-time: Expiration of the tier membership period, or `null`.
    - `status` 'PENDING' | 'APPROVED' | 'REJECTED': Transaction status. `PENDING` — created, awaiting processing; `APPROVED` — completed successfully; `REJECTED` — rejected (see `details.rejection`).
    - `created_at` string, date-time: Timestamp when the transaction was created (ISO 8601).
    - `updated_at` string, date-time: Timestamp when the transaction was last updated (ISO 8601), or `null`.
    - `object` string: Object type marker. Always `tier_transaction`.
  - `cursor` object: Pagination cursor. `null` when there are no more results.
    - `next` string: Cursor to pass as the `cursor` query parameter to fetch the next page (format `lcrsttx_...`).
    - `expires_at` string, date-time: Timestamp when the cursor expires.
  - `object` string: Object type marker. Always `list`.

## Other responses

- `400`: Validation error - request body or query parameters failed validation, or the operation is not allowed in the current resource state.
- `404`: Resource not found.
- `409`: Conflict - e.g. duplicate resource or invalid state transition.
- `500`: Internal server error.

---

[API](https://skmtc.dev/voucherifyio/apis/voucherify-api-async-actions.md) - [All operations](https://skmtc.dev/voucherifyio/apis/voucherify-api-async-actions/llms.txt) - [OpenAPI document](https://skmtc.dev/voucherifyio/apis/voucherify-api-async-actions/revisions/4982266e0494?raw)
