---
title: "List customer reward ledger entries"
method: GET
path: "/customer/{id}/rewards"
tags: ["Customer"]
---

# List customer reward ledger entries

`GET /customer/{id}/rewards`

Lists reward ledger entries for a customer. Each entry is a single movement — a reward earned (`type: REWARD`), a redemption against a reward (`type: REDEMPTION`), an unused reward swept at its expiry date (`type: REWARD_EXPIRATION`), a reward taken back after the earning capture was refunded or charged back (`type: REWARD_REVERSAL`), or a redemption given back as fresh credit after a refund or chargeback (`type: REWARD_RESTORATION`). Supports filtering by account, type, expiry date, and creation date. Results are sorted by creation date descending (newest first). See the [Rewards & Redemptions guide](/docs/guides/rewards-and-redemptions) for the full flow.

**Required scope:** <code style="background:#e8f0fe;color:#1a73e8;padding:2px 8px;border-radius:12px;font-size:0.85em">customer:read</code>

## Path parameters

- `id` string, uuid, required

## Query parameters

- `cursor` string
- `limit` number
- `account_id[]` string, uuid
- `type[]` 'REWARD' | 'REDEMPTION' | 'REWARD_EXPIRATION' | 'REWARD_REVERSAL' | 'REWARD_RESTORATION'
- `expiration_date` string
- `created_at` string

## Response `200`

OK

- object
  - `metadata` MetadataCursor, required — An object containing additional information about the response. It includes details that help manage and navigate the retrieved data.
    - `next_cursor` string, required — Provides the cursor for the next set of records. This value should be used as the cursor parameter in subsequent requests to continue paginating through the data. If the cursor is an empty string or null, it indicates that there are no more results. To retrieve all available results, continue making subsequent requests until next_cursor is empty or null.
    - `count` number, required — The total number of records in the current response. This field indicates the number of items returned in the current set of results.
  - `data` RewardLedgerEntry[], required
    - `id` string, uuid, required — Unique identifier for the ledger entry.
    - `account_id` string, uuid, required — The reward account this entry belongs to.
    - `type` 'REWARD' | 'REDEMPTION' | 'REWARD_EXPIRATION' | 'REWARD_REVERSAL' | 'REWARD_RESTORATION', required — The kind of movement. `REWARD` for credits earned; `REDEMPTION` for credits consumed; `REWARD_EXPIRATION` for unused credits removed from the balance at their expiry date; `REWARD_REVERSAL` for credits taken back when the capture that earned them was refunded or charged back; `REWARD_RESTORATION` for credits given back when a redemption is undone — either by a refund created with `revert.reward_redemption_reversal` or by a chargeback on the capture that redeemed them.
    - `amount` number, required — The absolute value of the movement. Always positive; `type` signals direction.
    - `expiration_date` string, date — The date after which the reward expires. Present when `type` is `REWARD`, `REWARD_EXPIRATION` or `REWARD_RESTORATION`.
    - `capture` object — The capture associated with this entry — the capture that granted the credit (`type: REWARD`, `type: REWARD_EXPIRATION` and `type: REWARD_REVERSAL`) or the capture that consumed it (`type: REDEMPTION` and `type: REWARD_RESTORATION`). Omitted when the entry is not linked to a capture (e.g. orphaned splits).
      - `id` string, uuid, required — Unique identifier of the capture.
    - `created_at` string, date-time, required — The date and time when the movement occurred.

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `429` — Too Many Requests
- `500` — Internal Server Error

---

[API](https://skmtc.net/easypay/apis/easypay-payments-api.md) · [All operations](https://skmtc.net/easypay/apis/easypay-payments-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/easypay/easypay-payments-api/versions/cdf25a9ad7b2/schema)
