{
"transaction": {
"id": "lctx_17d2f5a39b461",
"card_id": "lcrd_28c4e7b195fa",
"program_id": "lprg_3e8a1c74d952",
"member_id": "lmbr_91f6b2e84a37",
"card_definition_id": "lcdef_6a2d9f41c783",
"card_type": "INDIVIDUAL",
"type": "ADMIN_POINTS_EXPIRATION",
"details": {
"reason": "Manual expiration",
"rejection": null,
"metadata": {},
"bucket": {
"id": "lcpeb_6a2d9f41c783",
"points": {
"total": 75
},
"expiration_date": "2026-09-07",
"expiration_type": "CALENDAR_EXPIRATION"
}
},
"status": "APPROVED",
"created_at": "2026-09-07T09:15:43.091Z",
"updated_at": "2026-09-07T09:15:43.284Z",
"object": "card_transaction"
}
}Admin points expiration
Event data sent for a Loyalty v2 ADMIN_POINTS_EXPIRATION transaction handled by Workflows
WEBHOOK
ADMIN_POINTS_EXPIRATION
{
"transaction": {
"id": "lctx_17d2f5a39b461",
"card_id": "lcrd_28c4e7b195fa",
"program_id": "lprg_3e8a1c74d952",
"member_id": "lmbr_91f6b2e84a37",
"card_definition_id": "lcdef_6a2d9f41c783",
"card_type": "INDIVIDUAL",
"type": "ADMIN_POINTS_EXPIRATION",
"details": {
"reason": "Manual expiration",
"rejection": null,
"metadata": {},
"bucket": {
"id": "lcpeb_6a2d9f41c783",
"points": {
"total": 75
},
"expiration_date": "2026-09-07",
"expiration_type": "CALENDAR_EXPIRATION"
}
},
"status": "APPROVED",
"created_at": "2026-09-07T09:15:43.091Z",
"updated_at": "2026-09-07T09:15:43.284Z",
"object": "card_transaction"
}
}The
This event can trigger a workflow when Loyalty transaction is configured with the Card transactions group and the
ADMIN_POINTS_EXPIRATION event indicates that a points bucket was manually expired on a Loyalty v2 card.
This page documents only the event data nested under
data. See Introduction to webhooks for the shared webhook structure, and Workflows webhooks for the full Workflows webhook payload.ADMIN_POINTS_EXPIRATION transaction type. If the workflow reaches a Webhook callout action, Voucherify sends a webhook to the action’s target URL.
Workflows send this transaction in the data.trigger object. The example uses the APPROVED status. A workflow can filter the trigger by transaction status: PENDING, APPROVED, or REJECTED. The matched status is available in data.trigger.transaction.status; it does not create a separate event type.Body
application/json
Event data object schema for ADMIN_POINTS_EXPIRATION.
A Loyalty v2 card transaction with the ADMIN_POINTS_EXPIRATION type.
Show child attributes
Show child attributes
Response
Webhook accepted
Last modified on September 25, 2026

