curl --request GET \
--url https://{cluster}.voucherify.io/v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/expiring-points \
--header 'X-App-Id: <api-key>' \
--header 'X-App-Token: <api-key>'{
"data": [
{
"id": "lcpeb_12f5022f1ce873e0b4",
"card_id": "lcrd_129741698b665ae2f6",
"customer_id": "cust_zCwFz4PwbC2m0rUJOW8c2w1l",
"card_definition_id": "lcdef_1297339938ae248cea",
"program_id": "lprg_12974109bca65ae291",
"card_type": "INDIVIDUAL",
"member_id": "lmbr_129741698a265ae2f3",
"points": {
"total": 6
},
"expiration_date": "2026-08-29",
"expiration_type": "ROLLING_EXPIRATION",
"status": "ACTIVE",
"created_at": "2026-08-28T10:38:10.405Z",
"updated_at": null,
"object": "card_points_bucket"
}
],
"cursor": {
"next": "lcrspeb_12f5022f1ce873e0b5",
"expires_at": "2026-09-04T10:38:10.405Z"
},
"object": "list"
}List card expiring points buckets
Returns a cursor-paginated list of ACTIVE point expiration buckets for the member’s card. Each bucket groups points that share an expiration date and expiration type, including points from separate transactions.
The list starts on the current project day. Earlier buckets are omitted.
Results can be filtered by card definition ID and expiration date, and ordered by expiration_date.
Returns an empty list when the card has no matching buckets. Returns 400 when the query is invalid or the cursor is invalid, expired, or doesn’t match the query. Returns 404 when the program or the member doesn’t exist, or when the card isn’t assigned to that member.
curl --request GET \
--url https://{cluster}.voucherify.io/v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/expiring-points \
--header 'X-App-Id: <api-key>' \
--header 'X-App-Token: <api-key>'{
"data": [
{
"id": "lcpeb_12f5022f1ce873e0b4",
"card_id": "lcrd_129741698b665ae2f6",
"customer_id": "cust_zCwFz4PwbC2m0rUJOW8c2w1l",
"card_definition_id": "lcdef_1297339938ae248cea",
"program_id": "lprg_12974109bca65ae291",
"card_type": "INDIVIDUAL",
"member_id": "lmbr_129741698a265ae2f3",
"points": {
"total": 6
},
"expiration_date": "2026-08-29",
"expiration_type": "ROLLING_EXPIRATION",
"status": "ACTIVE",
"created_at": "2026-08-28T10:38:10.405Z",
"updated_at": null,
"object": "card_points_bucket"
}
],
"cursor": {
"next": "lcrspeb_12f5022f1ce873e0b5",
"expires_at": "2026-09-04T10:38:10.405Z"
},
"object": "list"
}Authorizations
Path Parameters
Identifies the loyalty program. Format lprg_[a-f0-9]+.
^lprg_[a-f0-9]+$Identifies the member. Format lmbr_[a-f0-9]+.
^lmbr_[a-f0-9]+$Identifies the loyalty card. Format lcrd_[a-f0-9]+.
^lcrd_[a-f0-9]+$Query Parameters
Limits the page size to an integer from 1 to 100. Defaults to 10. A numeric string is accepted and rounded to the nearest integer.
1 <= x <= 100Orders the results. Accepts one value or an array. Prefix a field with - for descending order. Defaults to expiration_date. Soonest expiration first. The same field cannot be used in both directions. Rows with the same sort value are then ordered by id ascending.
expiration_date, -expiration_date Continues pagination. Pass the cursor.next value from a previous response. Format lcrspeb_[a-f0-9]+. The cursor matches the filters and order of that response.
^lcrspeb_[a-f0-9]+$Filters the results. Pass a deep object, for example filters[card_definition_id][conditions][$is]=lcdef_1297339938ae248cea. Fields combine through junction, which defaults to AND. Omit filters to apply no field filter.
Request query schema for GET /v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/expiring-points.
Show child attributes
Show child attributes
Response
Cursor-paginated list of points expiration buckets.
Response body schema for GET /v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/expiring-points.

