curl --request POST \
--url https://{cluster}.voucherify.io/v2/loyalties/programs/{programId}/members \
--header 'Content-Type: application/json' \
--header 'X-App-Id: <api-key>' \
--header 'X-App-Token: <api-key>' \
--data '
{
"customer_identification": {
"type": "customer_id",
"customer_id": "cust_X07elh40iNWLujRmDNmBufxd"
}
}
'{
"id": "lmbr_12ba1c1a8456b6db8c",
"customer_id": "cust_X07elh40iNWLujRmDNmBufxd",
"program_id": "lprg_128f58429f4c4bf7b2",
"status": "ACTIVE",
"metadata": {},
"created_at": "2026-07-14T16:41:01.201Z",
"updated_at": null,
"object": "member",
"cards": [
{
"member_role": "OWNER",
"created_at": "2026-07-14T16:41:01.214Z",
"card": {
"id": "lcrd_12ba1c1a86d6b6db8f",
"card_definition_id": "lcdef_128f495f720c4bec8c",
"card_type": "INDIVIDUAL",
"code": null,
"lifetime_bucket": {
"points": {
"total": 0,
"earned": 0,
"added": 0,
"purchased": 0,
"purchased_reversed": 0,
"subtracted": 0,
"expired": 0,
"spent": 0,
"refunded": 0,
"returned": 0,
"locked": 0,
"unlocked": 0
},
"pending_points": {
"total": 0,
"activated": 0,
"canceled": 0
}
},
"balance": {
"points": 0,
"pending_points": 0
},
"next_expiration": null,
"next_activation": null,
"object": "card"
},
"object": "member_card"
},
{
"member_role": "OWNER",
"created_at": "2026-07-14T16:41:01.214Z",
"card": {
"id": "lcrd_12ba1c1a86d6b6db90",
"card_definition_id": "lcdef_128f49963c0c4becb7",
"card_type": "INDIVIDUAL",
"code": null,
"lifetime_bucket": {
"points": {
"total": 0,
"earned": 0,
"added": 0,
"purchased": 0,
"purchased_reversed": 0,
"subtracted": 0,
"expired": 0,
"spent": 0,
"refunded": 0,
"returned": 0,
"locked": 0,
"unlocked": 0
},
"pending_points": {
"total": 0,
"activated": 0,
"canceled": 0
}
},
"balance": {
"points": 0,
"pending_points": 0
},
"next_expiration": null,
"next_activation": null,
"object": "card"
},
"object": "member_card"
},
{
"member_role": "OWNER",
"created_at": "2026-07-14T16:41:01.214Z",
"card": {
"id": "lcrd_12ba1c1a86d6b6db91",
"card_definition_id": "lcdef_128f4a88414c4bed69",
"card_type": "INDIVIDUAL",
"code": null,
"lifetime_bucket": {
"points": {
"total": 0,
"earned": 0,
"added": 0,
"purchased": 0,
"purchased_reversed": 0,
"subtracted": 0,
"expired": 0,
"spent": 0,
"refunded": 0,
"returned": 0,
"locked": 0,
"unlocked": 0
},
"pending_points": {
"total": 0,
"activated": 0,
"canceled": 0
}
},
"balance": {
"points": 0,
"pending_points": 0
},
"next_expiration": null,
"next_activation": null,
"object": "card"
},
"object": "member_card"
}
]
}Create program member
Enrolls an existing customer as a member of the loyalty program and creates a loyalty card for each card definition assigned to the program. Card code generation is asynchronous, so code can be null right after creation.
The program must be ACTIVE and inside its validity window, and the customer must already exist. A customer can be a member of a program only once. Identify the customer with customer_identification. status defaults to ACTIVE.
curl --request POST \
--url https://{cluster}.voucherify.io/v2/loyalties/programs/{programId}/members \
--header 'Content-Type: application/json' \
--header 'X-App-Id: <api-key>' \
--header 'X-App-Token: <api-key>' \
--data '
{
"customer_identification": {
"type": "customer_id",
"customer_id": "cust_X07elh40iNWLujRmDNmBufxd"
}
}
'{
"id": "lmbr_12ba1c1a8456b6db8c",
"customer_id": "cust_X07elh40iNWLujRmDNmBufxd",
"program_id": "lprg_128f58429f4c4bf7b2",
"status": "ACTIVE",
"metadata": {},
"created_at": "2026-07-14T16:41:01.201Z",
"updated_at": null,
"object": "member",
"cards": [
{
"member_role": "OWNER",
"created_at": "2026-07-14T16:41:01.214Z",
"card": {
"id": "lcrd_12ba1c1a86d6b6db8f",
"card_definition_id": "lcdef_128f495f720c4bec8c",
"card_type": "INDIVIDUAL",
"code": null,
"lifetime_bucket": {
"points": {
"total": 0,
"earned": 0,
"added": 0,
"purchased": 0,
"purchased_reversed": 0,
"subtracted": 0,
"expired": 0,
"spent": 0,
"refunded": 0,
"returned": 0,
"locked": 0,
"unlocked": 0
},
"pending_points": {
"total": 0,
"activated": 0,
"canceled": 0
}
},
"balance": {
"points": 0,
"pending_points": 0
},
"next_expiration": null,
"next_activation": null,
"object": "card"
},
"object": "member_card"
},
{
"member_role": "OWNER",
"created_at": "2026-07-14T16:41:01.214Z",
"card": {
"id": "lcrd_12ba1c1a86d6b6db90",
"card_definition_id": "lcdef_128f49963c0c4becb7",
"card_type": "INDIVIDUAL",
"code": null,
"lifetime_bucket": {
"points": {
"total": 0,
"earned": 0,
"added": 0,
"purchased": 0,
"purchased_reversed": 0,
"subtracted": 0,
"expired": 0,
"spent": 0,
"refunded": 0,
"returned": 0,
"locked": 0,
"unlocked": 0
},
"pending_points": {
"total": 0,
"activated": 0,
"canceled": 0
}
},
"balance": {
"points": 0,
"pending_points": 0
},
"next_expiration": null,
"next_activation": null,
"object": "card"
},
"object": "member_card"
},
{
"member_role": "OWNER",
"created_at": "2026-07-14T16:41:01.214Z",
"card": {
"id": "lcrd_12ba1c1a86d6b6db91",
"card_definition_id": "lcdef_128f4a88414c4bed69",
"card_type": "INDIVIDUAL",
"code": null,
"lifetime_bucket": {
"points": {
"total": 0,
"earned": 0,
"added": 0,
"purchased": 0,
"purchased_reversed": 0,
"subtracted": 0,
"expired": 0,
"spent": 0,
"refunded": 0,
"returned": 0,
"locked": 0,
"unlocked": 0
},
"pending_points": {
"total": 0,
"activated": 0,
"canceled": 0
}
},
"balance": {
"points": 0,
"pending_points": 0
},
"next_expiration": null,
"next_activation": null,
"object": "card"
},
"object": "member_card"
}
]
}Authorizations
Path Parameters
Unique loyalty program ID (format lprg_[a-f0-9]+).
^lprg_[a-f0-9]+$Body
Request body schema for POST /v2/loyalties/programs/{programId}/members.
No additional properties are allowed.
Identifies the existing customer to enroll. Send exactly one identifier, matching type.
- Customer ID
- Customer source ID
Show child attributes
Show child attributes
Sets the initial member status. Allowed values are ACTIVE and INACTIVE. Defaults to ACTIVE when omitted or null.
ACTIVE, INACTIVE Stores custom metadata on the member. Validated against the metadata schema for the vl_member related object when one is configured. Defaults to an empty object when omitted or null.
Response
The created member with its automatically created cards.
Response body schema for POST /v2/loyalties/programs/{programId}/members.
Identifies the member.
^lmbr_[a-f0-9]+$Identifies the enrolled customer.
^cust_[a-zA-Z0-9]+Identifies the loyalty program.
^lprg_[a-f0-9]+$Current member status. Allowed values: ACTIVE, INACTIVE, DELETED. INACTIVE members cannot earn points or redeem rewards.
ACTIVE, INACTIVE, DELETED Stores custom member metadata. Empty object when none is set.
Records when the member was created (ISO 8601).
Records the last update (ISO 8601). null if the member has never been updated.
Object type. Always member.
"member"Member's loyalty cards - one per card definition assigned to the program. Card codes are generated asynchronously, so card.code may be null right after member creation.
Show child attributes
Show child attributes

