curl --request POST \
--url https://{cluster}.voucherify.io/v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/points \
--header 'Content-Type: application/json' \
--header 'X-App-Id: <api-key>' \
--header 'X-App-Token: <api-key>' \
--data '{
"points": 100
}'{
"transaction": {
"id": "lctx_12cfcfd67c8725bb92",
"card_id": "lcrd_128f962dbd8c4ba5df",
"program_id": "lprg_128f58429f4c4bf7b2",
"member_id": "lmbr_128f962dbc8c4ba5dc",
"card_definition_id": "lcdef_128f495f720c4bec8c",
"card_type": "INDIVIDUAL",
"type": "ADMIN_CREDIT",
"details": {
"reason": null,
"rejection": null,
"metadata": {},
"points": {
"total": 100,
"expiration_date": "2026-08-31"
}
},
"status": "PENDING",
"created_at": "2026-07-31T13:14:23.602Z",
"updated_at": null,
"object": "card_transaction"
},
"status": "TRANSACTION_CREATED",
"message": "Points addition transaction created"
}Adjust card points
Manually adjusts the points balance of the member’s card.
A positive points value creates an ADMIN_CREDIT card transaction. The expiration date comes from the member tier when that tier defines its own points expiration. Otherwise the date comes from the card definition. expiration_date is null when points don’t expire.
A negative points value creates an ADMIN_DEBIT card transaction.
When points is 0, no transaction is created and status is NO_CHANGE.
The transaction is created with status PENDING and processed asynchronously. The program and the member must be ACTIVE. The program must also be inside its validity window. Otherwise the response is 423. The response is 404 when the program or the member doesn’t exist, or when the card isn’t assigned to that member.
curl --request POST \
--url https://{cluster}.voucherify.io/v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/points \
--header 'Content-Type: application/json' \
--header 'X-App-Id: <api-key>' \
--header 'X-App-Token: <api-key>' \
--data '{
"points": 100
}'{
"transaction": {
"id": "lctx_12cfcfd67c8725bb92",
"card_id": "lcrd_128f962dbd8c4ba5df",
"program_id": "lprg_128f58429f4c4bf7b2",
"member_id": "lmbr_128f962dbc8c4ba5dc",
"card_definition_id": "lcdef_128f495f720c4bec8c",
"card_type": "INDIVIDUAL",
"type": "ADMIN_CREDIT",
"details": {
"reason": null,
"rejection": null,
"metadata": {},
"points": {
"total": 100,
"expiration_date": "2026-08-31"
}
},
"status": "PENDING",
"created_at": "2026-07-31T13:14:23.602Z",
"updated_at": null,
"object": "card_transaction"
},
"status": "TRANSACTION_CREATED",
"message": "Points addition transaction created"
}Authorizations
Path Parameters
Unique loyalty program ID (format lprg_[a-f0-9]+).
^lprg_[a-f0-9]+$Program member ID (format lmbr_[a-f0-9]+).
^lmbr_[a-f0-9]+$Loyalty card ID (format lcrd_[a-f0-9]+).
^lcrd_[a-f0-9]+$Body
Request body schema for POST /v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/points.
No additional properties are allowed.
Number of points to adjust. Positive values add points (ADMIN_CREDIT transaction), negative values subtract points (ADMIN_DEBIT transaction), zero results in no transaction (NO_CHANGE).
-9007199254740991 <= x <= 9007199254740991Optional reason for the adjustment, stored in the transaction details.
255Response
Result of the points adjustment.
Response body schema for POST /v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/points.
The created card transaction (ADMIN_CREDIT or ADMIN_DEBIT), or null when no transaction was created (status NO_CHANGE).
Show child attributes
Show child attributes
TRANSACTION_CREATED when a transaction was created, NO_CHANGE when the requested points amount was zero.
TRANSACTION_CREATED, NO_CHANGE Human-readable result message:
- "Points addition transaction created",
- "Points subtraction transaction created",
- "Provided amount is zero, transaction was not created".
Points addition transaction created, Points subtraction transaction created, Provided amount is zero, transaction was not created 
