---
title: "Changes to Purchase reward with points"
method: POST
path: "/v2/loyalties/programs/{programId}/members/{memberId}/rewards/purchases"
---

# Changes to Purchase reward with points

`POST /v2/loyalties/programs/{programId}/members/{memberId}/rewards/purchases`

> Every recorded change to this operation, newest first.

## Timeline

Changed in 10 of 211 revisions.

- **2026-10-14** (v2) `6a418ac8b7b1`: 7 breaking, 2 warning, 2 info
- **2026-10-13** (v2) `f95b50556c93`: 1 breaking, 1 warning, 9 info
- **2026-10-13** (v2) `9905dfce1d1e`: 7 breaking, 2 warning, 2 info
- **2026-10-13** (v2) `c59a345c733b`: 1 breaking, 1 warning, 9 info
- **2026-10-13** (v2) `7cfcdf2bf229`: 7 breaking, 2 warning, 2 info
- **2026-10-08** (v2) `f8854ffb3e6c`: 1 breaking, 8 info
- **2026-10-07** (v2) `338a5e34004e`: 2 info
- **2026-07-31** (v2) `703a0a42ea43`: 2 breaking, 2 warning, 34 info
- **2026-07-17** (v2) `4cbaee5a82d5`: 8 info
- **2026-07-06** (v2) `341403eb19e5`: 11 breaking, 7 warning, 7 info

## Changes

- **2026-10-14** (v2) `6a418ac8b7b1`: 7 breaking, 2 warning, 2 info
  - added `#/components/schemas/MemberRewardPurchaseRequest` to the request body `allOf` list
  - removed the required property `message` from the response with the `200` status
  - removed the required property `message` from the response with the `202` status
  - removed the required property `status` from the response with the `200` status
  - removed the required property `status` from the response with the `202` status
  - removed the required property `transaction` from the response with the `200` status
  - removed the required property `transaction` from the response with the `202` status
  - removed the request property `mode`
  - removed the request property `reward_id`
  - added `#/components/schemas/MemberRewardPurchaseDryRunResult` to the response body `allOf` list for the response status `200`
  - added `#/components/schemas/MemberRewardPurchaseTransactionResult` to the response body `allOf` list for the response status `202`
- **2026-10-13** (v2) `f95b50556c93`: 1 breaking, 1 warning, 9 info
  - added the new required request property `reward_id`
  - removed `#/components/schemas/MemberRewardPurchaseRequest` from the request body `allOf` list
  - added the new optional request property `mode`
  - removed `#/components/schemas/MemberRewardPurchaseDryRunResult` from the response body `allOf` list for the response status `200`
  - removed `#/components/schemas/MemberRewardPurchaseTransactionResult` from the response body `allOf` list for the response status `202`
  - added the required property `message` to the response with the `200` status
  - added the required property `message` to the response with the `202` status
  - added the required property `status` to the response with the `200` status
  - added the required property `status` to the response with the `202` status
  - added the required property `transaction` to the response with the `200` status
  - added the required property `transaction` to the response with the `202` status
- **2026-10-13** (v2) `9905dfce1d1e`: 7 breaking, 2 warning, 2 info
  - added `#/components/schemas/MemberRewardPurchaseRequest` to the request body `allOf` list
  - removed the required property `message` from the response with the `200` status
  - removed the required property `message` from the response with the `202` status
  - removed the required property `status` from the response with the `200` status
  - removed the required property `status` from the response with the `202` status
  - removed the required property `transaction` from the response with the `200` status
  - removed the required property `transaction` from the response with the `202` status
  - removed the request property `mode`
  - removed the request property `reward_id`
  - added `#/components/schemas/MemberRewardPurchaseDryRunResult` to the response body `allOf` list for the response status `200`
  - added `#/components/schemas/MemberRewardPurchaseTransactionResult` to the response body `allOf` list for the response status `202`
- **2026-10-13** (v2) `c59a345c733b`: 1 breaking, 1 warning, 9 info
  - added the new required request property `reward_id`
  - removed `#/components/schemas/MemberRewardPurchaseRequest` from the request body `allOf` list
  - added the new optional request property `mode`
  - removed `#/components/schemas/MemberRewardPurchaseDryRunResult` from the response body `allOf` list for the response status `200`
  - removed `#/components/schemas/MemberRewardPurchaseTransactionResult` from the response body `allOf` list for the response status `202`
  - added the required property `message` to the response with the `200` status
  - added the required property `message` to the response with the `202` status
  - added the required property `status` to the response with the `200` status
  - added the required property `status` to the response with the `202` status
  - added the required property `transaction` to the response with the `200` status
  - added the required property `transaction` to the response with the `202` status
- **2026-10-13** (v2) `7cfcdf2bf229`: 7 breaking, 2 warning, 2 info
  - added `#/components/schemas/MemberRewardPurchaseRequest` to the request body `allOf` list
  - removed the required property `message` from the response with the `200` status
  - removed the required property `message` from the response with the `202` status
  - removed the required property `status` from the response with the `200` status
  - removed the required property `status` from the response with the `202` status
  - removed the required property `transaction` from the response with the `200` status
  - removed the required property `transaction` from the response with the `202` status
  - removed the request property `mode`
  - removed the request property `reward_id`
  - added `#/components/schemas/MemberRewardPurchaseDryRunResult` to the response body `allOf` list for the response status `200`
  - added `#/components/schemas/MemberRewardPurchaseTransactionResult` to the response body `allOf` list for the response status `202`
- **2026-10-08** (v2) `f8854ffb3e6c`: 1 breaking, 8 info
  - the `transaction/details` response's property type changed from no type to `object` for status `202`
  - removed `#/components/schemas/RewardPurchaseTransactionDetailsPurchase, subschema #2` from the `transaction/details` response property `oneOf` list for the response status `202`
  - added the required property `transaction/card_definition_id` to the response with the `200` status
  - added the required property `transaction/card_definition_id` to the response with the `202` status
  - added the required property `transaction/details/metadata` to the response with the `202` status
  - added the required property `transaction/details/points` to the response with the `202` status
  - added the required property `transaction/details/reason` to the response with the `202` status
  - added the required property `transaction/details/rejection` to the response with the `202` status
  - added the required property `transaction/details/result` to the response with the `202` status
- **2026-10-07** (v2) `338a5e34004e`: 2 info
  - the endpoint scheme security `X-App-Id AND X-App-Token` was added to the API
  - the endpoint scheme security `bearerAuth` was added to the API
- **2026-07-31** (v2) `703a0a42ea43`: 2 breaking, 2 warning, 34 info
  - the `transaction` response's property type changed from no type to `object` for status `200`
  - the `transaction` response's property type changed from no type to `object` for status `202`
  - deleted the `path` request parameter `memberId`
  - deleted the `path` request parameter `programId`
  - added the non-success response with the status `423`
  - removed the non-success response with the status `409`
  - the response property `message` became required for the status `200`
  - the response property `message` became required for the status `202`
  - the response property `status` became required for the status `200`
  - the response property `status` became required for the status `202`
  - the response property `transaction` became required for the status `200`
  - the response property `transaction` became required for the status `202`
  - removed the `DRY_RUN` enum value from the `status` response property for the response status `202`
  - removed the `TRANSACTION_CREATED` enum value from the `status` response property for the response status `200`
  - removed `#/components/schemas/RewardPurchaseTransaction, subschema #2` from the `transaction` response property `oneOf` list for the response status `200`
  - removed `#/components/schemas/RewardPurchaseTransaction, subschema #2` from the `transaction` response property `oneOf` list for the response status `202`
  - added the required property `transaction/card_id` to the response with the `200` status
  - added the required property `transaction/card_id` to the response with the `202` status
  - added the required property `transaction/card_transaction_id` to the response with the `200` status
  - added the required property `transaction/card_transaction_id` to the response with the `202` status
  - added the required property `transaction/created_at` to the response with the `202` status
  - added the required property `transaction/details` to the response with the `200` status
  - added the required property `transaction/details` to the response with the `202` status
  - added the required property `transaction/id` to the response with the `202` status
  - added the required property `transaction/member_id` to the response with the `200` status
  - added the required property `transaction/member_id` to the response with the `202` status
  - added the required property `transaction/object` to the response with the `200` status
  - added the required property `transaction/object` to the response with the `202` status
  - added the required property `transaction/program_id` to the response with the `200` status
  - added the required property `transaction/program_id` to the response with the `202` status
  - added the required property `transaction/reward_id` to the response with the `200` status
  - added the required property `transaction/reward_id` to the response with the `202` status
  - added the required property `transaction/status` to the response with the `200` status
  - added the required property `transaction/status` to the response with the `202` status
  - added the required property `transaction/type` to the response with the `200` status
  - added the required property `transaction/type` to the response with the `202` status
  - added the required property `transaction/updated_at` to the response with the `200` status
  - added the required property `transaction/updated_at` to the response with the `202` status
- **2026-07-17** (v2) `4cbaee5a82d5`: 8 info
  - added the optional property `resource_id` to the response with the `400` status
  - added the optional property `resource_id` to the response with the `404` status
  - added the optional property `resource_id` to the response with the `409` status
  - added the optional property `resource_id` to the response with the `500` status
  - added the optional property `resource_type` to the response with the `400` status
  - added the optional property `resource_type` to the response with the `404` status
  - added the optional property `resource_type` to the response with the `409` status
  - added the optional property `resource_type` to the response with the `500` status
- **2026-07-06** (v2) `341403eb19e5`: 11 breaking, 7 warning, 7 info
  - added the pattern `^lmbr_[a-f0-9]+$` to the `path` request parameter `memberId`
  - the response property `code` became optional for the status `400`
  - the response property `code` became optional for the status `404`
  - the response property `code` became optional for the status `500`
  - the response property `key` became optional for the status `400`
  - the response property `key` became optional for the status `404`
  - the response property `key` became optional for the status `500`
  - the response property `message` became optional for the status `400`
  - the response property `message` became optional for the status `404`
  - the response property `message` became optional for the status `500`
  - added `#/components/schemas/RewardPurchaseTransaction` to the `transaction` response property `oneOf` list for the response status `202`
  - removed the optional property `resource_id` from the response with the `400` status
  - removed the optional property `resource_id` from the response with the `404` status
  - removed the optional property `resource_id` from the response with the `500` status
  - removed the optional property `resource_type` from the response with the `400` status
  - removed the optional property `resource_type` from the response with the `404` status
  - removed the optional property `resource_type` from the response with the `500` status
  - added the new `DRY_RUN` enum value to the `status` response property for the response status `202`
  - api operation id `purchaseReward` removed and replaced with `purchaseMemberReward`
  - added the new optional request property `mode`
  - added the non-success response with the status `409`
  - removed the non-success response with the status `423`
  - removed the `NO_SPENT_ON_REWARD` enum value from the `status` response property for the response status `202`
  - removed `#/components/schemas/CardTransaction` from the `transaction` response property `oneOf` list for the response status `202`
  - added the success response with the status `200`

---

[Operation](https://skmtc.dev/voucherifyio/apis/voucherify-loyalty-v2-api/docs/v2/loyalties/programs/:programId/members/:memberId/rewards/purchases/post.md) - [API](https://skmtc.dev/voucherifyio/apis/voucherify-loyalty-v2-api.md) - [Page](https://skmtc.dev/voucherifyio/apis/voucherify-loyalty-v2-api/changes/v2/loyalties/programs/:programId/members/:memberId/rewards/purchases/post)
