---
title: "List card transactions"
method: GET
path: "/v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/transactions"
tags: ["Programs"]
---

# List card transactions

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

## Request

- Base URL: `https://api.voucherify.io`
- URL: `https://api.voucherify.io/v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/transactions`
- Auth: one of:
  - API key in header `X-App-Id` and API key in header `X-App-Token`
  - HTTP bearer

Returns a cursor-paginated list of transactions on the member's card. Filter by `id`, `card_definition_id`, and `created_at`. Order by `id` (default `-id`, newest first). Returns `404` when the program, member, or card doesn't exist. The program is checked first, then the member, then the card. A member of another program, or a card that isn't assigned to this member, is not found.

## Query parameters

- `limit` integer, nullable
- `order` union
  - string[]
  - '-id' | 'id'
- `cursor` string, nullable
- `filters` V2LoyaltiesProgramsMembersCardsTransactionsListRequestQuery: Request query schema for **GET** `/v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/transactions`.
  - `junction` 'AND' | 'OR', nullable: Joins the field filters. Allowed values are `AND` and `OR`. Defaults to `AND`.
  - `id` LoyaltiesProgramsMembersCardsTransactionsListRequestQueryId: ID conditions. Format `lctx_[a-f0-9]+`. At least one condition is required.
    - `conditions` object, required
      - `$is` union: Matches one value. A string or a one-element array. Format `lctx_[a-f0-9]+`.
        - string
        - string[]
      - `$is_not` union: Excludes one value. A string or a one-element array. Format `lctx_[a-f0-9]+`.
        - string
        - string[]
      - `$in` union: Matches any of the values. A string or an array of 1 to 100 values. Format `lctx_[a-f0-9]+`.
        - string
        - string[]
      - `$not_in` union: Excludes any of the values. A string or an array of 1 to 100 values. Format `lctx_[a-f0-9]+`.
        - string
        - string[]
  - `created_at` DateFilter: Date filter conditions. `$before`/`$after` take date strings (ISO 8601); `$is`, `$more_than`, `$less_than` take non-negative integers; `$has_value`/`$is_unknown` are presence checks. Each condition accepts a single value or an array with exactly one value. At least one condition is required.
    - `conditions` object, required
      - `$before` union: Matches dates before the given value. An ISO 8601 date-time, as a string or a one-element array.
        - string, date-time
        - string[]
      - `$after` union: Matches dates after the given value. An ISO 8601 date-time, as a string or a one-element array.
        - string, date-time
        - string[]
      - `$is` union: Matches a date exactly the given number of days ago. A non-negative integer, as a string or a one-element array.
        - string
        - string[]
      - `$more_than` union: Matches dates more than the given number of days ago. A non-negative integer, as a string or a one-element array.
        - string
        - string[]
      - `$less_than` union: Matches dates less than the given number of days ago. A non-negative integer, as a string or a one-element array.
        - string
        - string[]
      - `$has_value` string, nullable: Matches when the field is set. The condition value is ignored.
      - `$is_unknown` string, nullable: Matches when the field is not set. The condition value is ignored.
  - `card_definition_id` CardDefinitionIdFilterConditions: ID conditions. Format `lcdef_[a-f0-9]+`. At least one condition is required.
    - `conditions` object, required
      - `$is` union: Matches one value. A string or a one-element array. Format `lcdef_[a-f0-9]+`.
        - string
        - string[]
      - `$is_not` union: Excludes one value. A string or a one-element array. Format `lcdef_[a-f0-9]+`.
        - string
        - string[]
      - `$in` union: Matches any of the values. A string or an array of 1 to 100 values. Format `lcdef_[a-f0-9]+`.
        - string
        - string[]
      - `$not_in` union: Excludes any of the values. A string or an array of 1 to 100 values. Format `lcdef_[a-f0-9]+`.
        - string
        - string[]

## Response `200`

Cursor-paginated list of card transactions.

- V2LoyaltiesProgramsMembersCardsTransactionsListResponseBody: Cursor-paginated list of card transactions.
  - `data` CardTransaction[], required: Card transactions on the current page.
    - `id` string, required: Unique card transaction ID assigned by Voucherify.
    - `card_id` string, required: ID of the card the transaction belongs to. Assigned by Voucherify.
    - `program_id` string, required: ID of the loyalty program. Assigned by Voucherify.
    - `member_id` string, required: ID of the member owning the card. Assigned by Voucherify.
    - `card_definition_id` string, required: ID of the card definition of the card. Assigned by Voucherify.
    - `card_type` 'INDIVIDUAL', required: Card type.
    - `type` 'ADMIN_CREDIT' | 'ADMIN_DEBIT' | 'ADMIN_POINTS_EXPIRATION' | 'POINTS_EARNED' | 'POINTS_SPENT_ON_REWARD' | 'POINTS_PURCHASED' | 'POINTS_PURCHASE_REVERSED' | 'POINTS_SPENT_ON_ORDER' | 'POINTS_REFUNDED' | 'POINTS_RETURNED' | 'POINTS_EXPIRED' | 'PENDING_POINTS_ADDED' | 'PENDING_POINTS_ACTIVATED' | 'PENDING_POINTS_CANCELED', required: Transaction type. Options depend on the endpoint and the transaction variant.
    - `details` CardTransactionDetails, required: Card transaction details. Variant-dependent fields are not present on all variants.
      - `reason` string, nullable: Reason for the transaction (e.g. the reason provided in a manual adjustment request).
      - `rejection` object, nullable: Rejection details when the transaction was rejected, or `null`.
        - `reason` string: Rejection reason.
        - `details` string: Detailed rejection description.
      - `metadata` object: Transaction metadata (empty object when none).
      - `points` object: Points affected by the transaction (variant-dependent fields; pending points don't return `expiration_date` and `expiration_type`.).
        - `total` number: Number of points. Negative for debits.
        - `expiration_date` string, date, nullable: Expiration date of the affected points (`YYYY-MM-DD`), or `null`.
        - `expiration_type` 'NO_EXPIRATION' | 'ROLLING_EXPIRATION' | 'CALENDAR_EXPIRATION' | 'SLIDING_EXPIRATION' | 'null', nullable: Points expiration type of the affected points, or `null`.
        - `date` string, date: Activation date of the pending points (`YYYY-MM-DD`). Pending points variants only.
        - `type` 'IMMEDIATE' | 'PERIOD_BASED' | 'FIXED_DATES' | 'EVENT_BASED': Pending points activation type. Pending points variants only.
      - `bucket` LoyaltyV2CardPointsBucketSimple: Simple representation of a points expiration bucket, embedded in card transaction details.
        - `id` string, required: Point expiration bucket ID.
        - `points` object, required: Points affected by the transaction.
          - `total` number, required: Number of points affected.
        - `expiration_date` string, date, required: Date when the points expire.
        - `expiration_type` 'NO_EXPIRATION' | 'ROLLING_EXPIRATION' | 'CALENDAR_EXPIRATION' | 'SLIDING_EXPIRATION', required: Expiration type of the points.
      - `buckets` LoyaltyV2CardPointsBucketSimple[]: The points buckets that expired (`POINTS_EXPIRED` only).
        - `id` string, required: Point expiration bucket ID.
        - `points` object, required: Points affected by the transaction.
          - `total` number, required: Number of points affected.
        - `expiration_date` string, date, required: Date when the points expire.
        - `expiration_type` 'NO_EXPIRATION' | 'ROLLING_EXPIRATION' | 'CALENDAR_EXPIRATION' | 'SLIDING_EXPIRATION', required: Expiration type of the points.
      - `date` string, date: Expiration date (`POINTS_EXPIRED` only, `YYYY-MM-DD`).
      - `reward` object, nullable: Reference to the reward involved, or `null`.
        - `id` string: Reward ID (`lrew_[a-f0-9]+`) assigned by Voucherify.
      - `reward_transaction` object, nullable: Reference to the related reward transaction, or `null`.
        - `id` string: Reward transaction ID (`lrtx_[a-f0-9]+`) assigned by Voucherify.
      - `card_transaction` object, nullable: Reference to the linked card transaction (e.g. the spend side of a points purchase), or `null`.
        - `id` string: Card transaction ID (`lctx_[a-f0-9]+`) assigned by Voucherify.
      - `purchase` object, nullable: References to the original purchase transactions (reversal/return variants), or `null`.
        - `card_transaction` object, nullable
          - `id` string: Card transaction ID (`lctx_[a-f0-9]+`) assigned by Voucherify.
        - `reward_transaction` object, nullable
          - `id` string: Reward transaction ID (`lrtx_[a-f0-9]+`) assigned by Voucherify.
      - `order` object, nullable: Reference to the order paid with points (`POINTS_SPENT_ON_ORDER` only), or `null`.
        - `id` string: Order ID assigned by Voucherify.
      - `order_transaction` object, nullable: Reference to the related order transaction (`POINTS_SPENT_ON_ORDER` only), or `null`.
        - `id` string: Order transaction ID (`lotx_[a-f0-9]+`) assigned by Voucherify.
      - `target_card` object, nullable: Reference to the target card credited by a points purchase (`POINTS_SPENT_ON_REWARD` only), or `null`.
        - `id` string: Card ID (`lcrd_[a-f0-9]+`) assigned by Voucherify.
      - `purchase_transaction` object, nullable: Reference to the linked purchase card transaction (`POINTS_SPENT_ON_REWARD` only), or `null`.
        - `id` string: Card transaction ID (`lctx_[a-f0-9]+`) assigned by Voucherify.
    - `status` 'PENDING' | 'PROCESSING' | 'APPROVED' | 'REJECTED', required: Transaction processing status. Transactions are created as `PENDING` and processed asynchronously.
    - `created_at` string, date-time, required: Timestamp when the transaction was created (ISO 8601).
    - `updated_at` string, date-time, nullable, required: Timestamp when the transaction was last updated (ISO 8601), or `null`.
    - `object` 'card_transaction', required: Object type marker, always `card_transaction`.
  - `cursor` ListCursor, required: Pagination cursor.
    - `next` string, required: Cursor value to pass as the `cursor` query parameter to fetch the next page.
    - `expires_at` string, date-time, required: Timestamp when the cursor expires.
  - `object` 'list', required: Object type marker, always `list`.

## Other responses

- `400`: The query failed validation. `order` must be `id` or `-id`, and an array can't order by `id` and `-id` together. A cursor that doesn't match `^lcrsctx_[a-f0-9]+$` returns `invalid_query_params`. An unknown cursor returns `invalid_or_expired_cursor`. A cursor from a different `limit` or `order` returns `cursor_and_query_mismatch`.
- `404`: The program doesn't exist (`resource_type` `program`), the member doesn't exist in that program (`resource_type` `member`), or the card isn't assigned to that member (`resource_type` `card`). The program is checked first.
- `500`: Internal server error.

## Changes

- **2026-10-14** (v2) `6a418ac8b7b1`: 3 breaking, 3 warning, 1 info
  - removed the required property `cursor` from the response with the `200` status
  - removed the required property `data` from the response with the `200` status
  - removed the required property `object` from the response with the `200` status
  - deleted the `path` request parameter `cardId`
  - …3 more
- **2026-10-13** (v2) `f95b50556c93`: 3 breaking, 4 info
  - added the new path request parameter `cardId`
  - added the new path request parameter `memberId`
  - added the new path request parameter `programId`
  - removed `#/components/schemas/CardTransactionListResponse` from the response body `allOf` list for the response status `200`
  - …3 more
- **2026-10-13** (v2) `9905dfce1d1e`: 3 breaking, 3 warning, 1 info
  - removed the required property `cursor` from the response with the `200` status
  - removed the required property `data` from the response with the `200` status
  - removed the required property `object` from the response with the `200` status
  - deleted the `path` request parameter `cardId`
  - …3 more
- **2026-10-13** (v2) `c59a345c733b`: 3 breaking, 4 info
  - added the new path request parameter `cardId`
  - added the new path request parameter `memberId`
  - added the new path request parameter `programId`
  - removed `#/components/schemas/CardTransactionListResponse` from the response body `allOf` list for the response status `200`
  - …3 more
- …earlier changes not shown

[Operation history](https://skmtc.dev/voucherifyio/apis/voucherify-loyalty-v2-api/changes/v2/loyalties/programs/:programId/members/:memberId/cards/:cardId/transactions/get.md)

---

[API](https://skmtc.dev/voucherifyio/apis/voucherify-loyalty-v2-api.md) - [All operations](https://skmtc.dev/voucherifyio/apis/voucherify-loyalty-v2-api/llms.txt) - [OpenAPI document](https://skmtc.dev/voucherifyio/apis/voucherify-loyalty-v2-api/revisions/e0d9f2d2532f?raw)
