curl --request POST \
--url https://{cluster}.voucherify.io/v2/loyalties/programs/{programId}/members/{memberId}/rewards/purchases \
--header 'Content-Type: application/json' \
--header 'X-App-Id: <api-key>' \
--header 'X-App-Token: <api-key>' \
--data '
{
"reward_id": "<string>",
"mode": "TRANSACTION"
}
'{
"transaction": {
"card_id": "lcrd_128f962dbd8c4ba5e1",
"card_definition_id": "lcdef_128f4a88414c4bed69",
"card_transaction_id": null,
"program_id": "lprg_128f58429f4c4bf7b2",
"member_id": "lmbr_128f962dbc8c4ba5dc",
"reward_id": "lrew_1294cebb458e4904a0",
"status": "SIMULATED",
"type": "PURCHASE",
"details": {
"reason": "Points spent on reward",
"rejection": null,
"metadata": {},
"points": {
"total": 500
},
"result": null
},
"updated_at": null,
"object": "reward_transaction"
},
"status": "DRY_RUN",
"message": "Dry run mode. No transaction was created. This is only a simulation."
}Purchase reward with points
Purchases a reward for the program member by spending points from the member’s card. The card comes from the matching reward cost’s card definition.
The program, reward, and member must be ACTIVE. The program and reward must be inside their validity windows. The reward must be assigned to the program with stock available, a cost must match the customer, and the purchase must stay inside frequency, cooldown, balance, and spending limits.
Modes:
TRANSACTION(default): creates aPENDINGreward transaction and aPENDINGcard transaction. Returns202.DRY_RUN: simulates the purchase and doesn’t create a transaction. Returns200with statusSIMULATED.
curl --request POST \
--url https://{cluster}.voucherify.io/v2/loyalties/programs/{programId}/members/{memberId}/rewards/purchases \
--header 'Content-Type: application/json' \
--header 'X-App-Id: <api-key>' \
--header 'X-App-Token: <api-key>' \
--data '
{
"reward_id": "<string>",
"mode": "TRANSACTION"
}
'{
"transaction": {
"card_id": "lcrd_128f962dbd8c4ba5e1",
"card_definition_id": "lcdef_128f4a88414c4bed69",
"card_transaction_id": null,
"program_id": "lprg_128f58429f4c4bf7b2",
"member_id": "lmbr_128f962dbc8c4ba5dc",
"reward_id": "lrew_1294cebb458e4904a0",
"status": "SIMULATED",
"type": "PURCHASE",
"details": {
"reason": "Points spent on reward",
"rejection": null,
"metadata": {},
"points": {
"total": 500
},
"result": null
},
"updated_at": null,
"object": "reward_transaction"
},
"status": "DRY_RUN",
"message": "Dry run mode. No transaction was created. This is only a simulation."
}Authorizations
Path Parameters
Unique loyalty program identifier (format: lprg_ followed by hexadecimal characters).
Program member ID (format lmbr_[a-f0-9]+).
^lmbr_[a-f0-9]+$Body
Request body schema for POST /v2/loyalties/programs/{programId}/members/{memberId}/rewards/purchases.
Unique identifier of the reward to purchase (format lrew_...).
Purchase mode. TRANSACTION creates a PENDING reward transaction processed asynchronously (HTTP 202). DRY_RUN only simulates the purchase and returns the calculation result (HTTP 200); no transaction is created. Defaults to TRANSACTION when omitted.
TRANSACTION, DRY_RUN Response
Dry run result (mode DRY_RUN). No transaction was created; the returned transaction has status SIMULATED and no id.
Response body schema for POST /v2/loyalties/programs/{programId}/members/{memberId}/rewards/purchases.
Result of a reward purchase request in dry-run mode.
The simulated reward transaction.
Show child attributes
Show child attributes
Result status. Always DRY_RUN for the dry-run mode.
DRY_RUN Human-readable result message. DRY_RUN mode: "Dry run mode. No transaction was created. This is only a simulation.".

