---
title: "Deactivate program member"
method: POST
path: "/v2/loyalties/programs/{programId}/members/{memberId}/deactivate"
tags: ["Programs"]
---

# Deactivate program member

`POST /v2/loyalties/programs/{programId}/members/{memberId}/deactivate`

Moves the member to `INACTIVE` status and records a `vl.member.deactivated` activity. No request body.

Returns `404` when the program or member does not exist. Returns `400` (`invalid_state_transition`) when the member cannot be deactivated from its current status.

## Response `200`

The deactivated member, without cards. Status is always `INACTIVE`.

- LoyaltiesProgramsMembersDeactivateResponseBody — A loyalty program member.
  - `id` string, required — Identifies the member.
  - `customer_id` string, required — Identifies the enrolled customer.
  - `program_id` string, required — Identifies the loyalty program.
  - `status` 'ACTIVE' | 'INACTIVE' | 'DELETED', required — Current member status. Allowed values: `ACTIVE`, `INACTIVE`, `DELETED`. `INACTIVE` members cannot earn points or redeem rewards.
  - `metadata` object, required — Stores custom member metadata. Empty object when none is set.
  - `created_at` string, date-time, required — Records when the member was created (ISO 8601).
  - `updated_at` string, date-time, nullable, required — Records the last update (ISO 8601). `null` if the member has never been updated.
  - `object` 'member', required — Object type. Always `member`.

## Other responses

- `400` — Invalid state transition. Member cannot be deactivated from its current status.
- `404` — Resource (program or member) not found.
- `500` — Internal server error.

## Changes

- **2026-09-02** (v2) `dbfaefa45f8b` — 8 breaking, 2 warning, 2 info
  - removed the required property `created_at` from the response with the `200` status
  - removed the required property `customer_id` from the response with the `200` status
  - removed the required property `id` from the response with the `200` status
  - removed the required property `metadata` from the response with the `200` status
  - …8 more
- **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
  - …4 more
- **2026-07-06** (v2) `341403eb19e5` — 11 breaking, 6 warning, 13 info
  - added the pattern `^lmbr_[a-f0-9]+$` to the `path` request parameter `memberId`
  - added the pattern `^lprg_[a-f0-9]+$` to the `path` request parameter `programId`
  - the response property `code` became optional for the status `404`
  - the response property `code` became optional for the status `409`
  - …26 more

[Change history](https://skmtc.dev/voucherifyio/apis/voucherify-loyalty-v2-api/changes/v2/loyalties/programs/:programId/members/:memberId/deactivate/post.md)

---

[API](https://skmtc.dev/voucherifyio/apis/voucherify-loyalty-v2-api.md) · [All operations](https://skmtc.dev/voucherifyio/apis/voucherify-loyalty-v2-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/voucherifyio/voucherify-loyalty-v2-api/revisions/dbfaefa45f8b/schema)
