Memberships

Reactivate Membership

Restores access to a canceled or expired membership that contains only one-time purchases and sets its status to completed. Lifetime memberships regain lifetime access. For memberships with an expiration, days sets current_period_end that many days from now; without it the original current_period_end is kept, so days is required once that has passed. Active and recurring memberships cannot be reactivated.

post/memberships/{id}/reactivate

Headers

Idempotency-Keystring
Example:d9105228-4a08-46b1-8b91-42fed586d383

A unique key that makes this request safe to retry. See Idempotent requests.

Request body

daysinteger

Days of access from now (1-1095), which sets current_period_end. Omit to keep the original current_period_end; required once it has passed. Ignored for lifetime memberships.

Example request

{
  "days": 10
}

Response

membership reactivated

cancel_at_period_endboolean required

Whether the membership is set to cancel when the current billing period ends. Only meaningful for recurring plans.

canceled_atstring nullable required

When cancellation was requested, or when the membership was canceled if no request time is recorded, as an ISO 8601 timestamp. null when neither is recorded.

cancellation_reasonstring nullable required

Free-text explanation provided when canceling. null when no reason was provided.

created_atstring required

When the membership was created, as an ISO 8601 timestamp.

current_period_endstring nullable required

When the current billing period renews, or when a non-renewing membership expires, as an ISO 8601 timestamp. null for one-time purchases with no expiration.

current_period_startstring nullable required

When the current billing period started, as an ISO 8601 timestamp. null when no billing period is recorded.

idstring required

Membership ID, prefixed mem_.

license_keystring nullable required

The software license key for this membership. Only present when the product includes a software licensing experience.

manage_urlstring nullable required

URL where the buyer can sign in to manage billing. null without a member record or unless the caller is the buyer or has member:manage on the account.

metadataobject required

Custom key-value pairs stored on the membership, commonly used for software licensing.

phone_numberstring nullable required

The buyer's phone number recorded for this membership, or null. The number collected (or verified) at checkout when the seller's phone collection is on; falls back to the buyer's account number when they have shared one with this seller.

plan_idstring required

The plan the buyer purchased, prefixed plan_.

product_idstring required

The product this membership grants access to, prefixed prod_.

status'trialing' | 'active' | 'past_due' | 'completed' | 'canceled' | 'expired' | 'unresolved' required

Billing state of the membership. active/trialing memberships grant access; past_due is the grace period after a failed payment; completed one-time purchases keep access; canceled/expired do not.

user_idstring nullable required

The buyer, prefixed user_. null when the buyer is another business or the membership is unclaimed.

Example response

{
  "account": {
    "id": "biz_xxxxxxxxxxxxxx",
    "logo_url": "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "route": "shine-time-auto-detailing",
    "title": "Shine Time Auto Detailing"
  },
  "cancel_at_period_end": true,
  "canceled_at": "2026-01-01T12:00:00.000Z",
  "cancellation_reason": "Too expensive",
  "created_at": "2026-01-01T12:00:00.000Z",
  "current_period_end": "2026-01-01T12:00:00.000Z",
  "current_period_start": "2026-01-01T12:00:00.000Z",
  "id": "mem_xxxxxxxxxxxxxx",
  "license_key": "WHOP-XXXX-XXXX-XXXX",
  "manage_url": "https://whop.com/billing/manage/mber_xxxxxxxxxxxxxx",
  "member": {
    "access_level": "customer",
    "last_accessed_at": "2026-01-01T12:00:00.000Z",
    "position": 1767268800000
  },
  "metadata": {},
  "phone_number": "+xxxxxxxxxxx",
  "plan_id": "plan_xxxxxxxxxxxxxx",
  "product_id": "prod_xxxxxxxxxxxxxx",
  "status": "active",
  "user_id": "user_xxxxxxxxxxxxxx"
}

Changes