{
"transaction": {
"id": "lctx_18d2f5a39b461",
"card_id": "lcrd_28c4e7b195fa",
"program_id": "lprg_3e8a1c74d952",
"member_id": "lmbr_91f6b2e84a37",
"card_definition_id": "lcdef_6a2d9f41c783",
"card_type": "INDIVIDUAL",
"type": "POINTS_PURCHASE_REVERSED",
"details": {
"reason": "Reward refund — point purchase reversed",
"rejection": null,
"metadata": {},
"points": {
"total": 500,
"expiration_date": "2027-09-07",
"expiration_type": "ROLLING_EXPIRATION"
},
"reward": {
"id": "lrew_3e8a1c74d952"
},
"purchase": {
"card_transaction": {
"id": "lctx_7d2f5a39b461"
},
"reward_transaction": {
"id": "lrtx_55bfc63a8142"
}
},
"reward_transaction": {
"id": "lrtx_8a6d13f90c42"
}
},
"status": "APPROVED",
"created_at": "2026-09-07T09:15:43.091Z",
"updated_at": "2026-09-07T09:15:43.284Z",
"object": "card_transaction"
}
}Points purchase reversed
Event data sent for a Loyalty v2 POINTS_PURCHASE_REVERSED transaction handled by Workflows
WEBHOOK
POINTS_PURCHASE_REVERSED
{
"transaction": {
"id": "lctx_18d2f5a39b461",
"card_id": "lcrd_28c4e7b195fa",
"program_id": "lprg_3e8a1c74d952",
"member_id": "lmbr_91f6b2e84a37",
"card_definition_id": "lcdef_6a2d9f41c783",
"card_type": "INDIVIDUAL",
"type": "POINTS_PURCHASE_REVERSED",
"details": {
"reason": "Reward refund — point purchase reversed",
"rejection": null,
"metadata": {},
"points": {
"total": 500,
"expiration_date": "2027-09-07",
"expiration_type": "ROLLING_EXPIRATION"
},
"reward": {
"id": "lrew_3e8a1c74d952"
},
"purchase": {
"card_transaction": {
"id": "lctx_7d2f5a39b461"
},
"reward_transaction": {
"id": "lrtx_55bfc63a8142"
}
},
"reward_transaction": {
"id": "lrtx_8a6d13f90c42"
}
},
"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
POINTS_PURCHASE_REVERSED event indicates that a previous points purchase was reversed 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.POINTS_PURCHASE_REVERSED 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.
When reversing a loyalty card points reward, Voucherify also creates a separate POINTS_RETURNED transaction on the source card that originally spent the points. That payload is not included in this event. Use the Points returned event to get details about the source card transaction.Body
application/json
Event data object schema for POINTS_PURCHASE_REVERSED.
A Loyalty v2 card transaction with the POINTS_PURCHASE_REVERSED type.
Show child attributes
Show child attributes
Response
Webhook accepted
Last modified on September 25, 2026

