Manage Benefit Status

Pause, resume, stop, or revoke a benefit.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

Manage Benefit Status

Changes the lifecycle status of a benefit by performing a status action. This endpoint uses the path PATCH /v3/benefits/{loyaltyBenefitId}/status and covers the PAUSE, RESUME, STOP, and REVOKE actions.

To submit a draft for approval, use the same endpoint with action set to SUBMIT_FOR_APPROVAL, documented separately at Submit Benefit for Approval.

Lifecycle transitions

Each action moves the benefit between statuses:

ActionFrom statusTo statusEffect
PAUSELIVE, UPCOMINGPAUSEDTemporarily stops the benefit from applying.
RESUMEPAUSEDLIVE or UPCOMINGReactivates a paused benefit. It returns to LIVE if its start date has passed, or UPCOMING if the start date is still in the future.
STOPLIVE, UPCOMING, PAUSEDSTOPPEDPermanently ends the benefit. A stopped benefit can't be resumed.
REVOKEPENDING_APPROVALDRAFTWithdraws a benefit awaiting approval and returns it to DRAFT for further edits.

A benefit can only move along a valid transition. Applying an action from a status that doesn't allow it returns an error (HTTP 422).

Example request

curl -L -X PATCH 'https://nightly.api.capillarytech.com/v3/benefits/05da702a7eae468185835f5a74db54f6/status' \
-H 'Content-Type: application/json' \
-H 'Authorization: Basic RmOTJiOGQwMGM2ZmY5ZWMxNGEyYjE2YWNiYTg2MzA=' \
-H 'X-CAP-API-AUTH-ORG-ID: 100737' \
-d '{
    "action": "PAUSE",
    "lastUpdatedBy": 50685425
}'

Prerequisites

  • Authentication: Basic auth or OAuth token with loyalty program management permissions.
  • The benefit must be in a status that allows the action you're performing. See Lifecycle transitions.

Resource information

HTTP methodPATCH
AuthenticationBasic or OAuth
Pagination supported?NO
Rate limitYES
Batch supportNO

Path parameters

FieldTypeRequiredDescription
loyaltyBenefitIdstringRequiredUnique ID of the benefit, returned by Create Benefit.

Body parameters

FieldTypeRequiredDescription
actionenumRequiredLifecycle action to perform. Case-sensitive. Supported values: PAUSE: temporarily stops the benefit from applying, RESUME: reactivates a paused benefit — returns to LIVE if the start date has passed, or UPCOMING if it's still in the future, STOP: permanently ends the benefit; can't be resumed, REVOKE: withdraws a benefit awaiting approval and returns it to DRAFT for further edits. See Lifecycle transitions for the full set of valid from/to status pairs.
lastUpdatedByintegerRequiredTill ID of the person performing the action. Retrieve till IDs with the Get Active Tills API.

Example response

The Paused tab shows the response to a PAUSE action. The Stopped tab shows the response to a STOP action, which is terminal — a stopped benefit can't be resumed. Both examples show comments retaining the note from the most recent workflow action — here, the earlier approval — rather than being cleared on each subsequent action.

{
  "data": {
    "loyaltyBenefitId": "a70ae03d0f54486fa9c3f4e8d89ce6e5",
    "version": 7,
    "metadata": {
      "name": "Birthday bonus",
      "description": "Extra points on birthday month",
      "programId": "2352",
      "orgId": 50947,
      "expiryType": "CUSTOM",
      "status": "PAUSED",
      "customerEligibilityType": null,
      "benefitIdentifier": null,
      "loyaltyBenefitRecordId": null,
      "startDate": "2026-08-01T11:30:00+05:30",
      "endDate": "2027-02-01T11:29:59+05:30",
      "timezoneName": "Asia/Kolkata",
      "createdOn": "2026-06-23T15:08:08+05:30",
      "lastModifiedOn": "2026-06-23T15:29:07+05:30",
      "createdBy": 50821171,
      "lastModifiedBy": 50685425,
      "draftDetails": null
    },
    "benefitCategoryId": -1,
    "tierIds": [
      8159,
      8165,
      8166,
      10545,
      10656
    ],
    "optin": {
      "basedOn": null,
      "audienceMapping": null,
      "activities": null,
      "restrictions": null,
      "optInStartDate": "2026-08-01T20:30:00+05:30",
      "optInEndDate": "2027-02-01T05:30:00+05:30"
    },
    "activities": [
      {
        "type": "SINGLE",
        "event": "TransactionAdd",
        "allCycles": []
      }
    ],
    "limits": null,
    "configAttributes": null,
    "liabilityOwnerSplitInfo": null,
    "workflowMetadata": null,
    "communicationApprovalStatus": null,
    "parentId": null,
    "parentDetails": null,
    "comments": "TZ audit test submission",
    "id": "6a3a54007960e562c3e7c1c3"
  },
  "errors": null,
  "warnings": null
}
{
  "data": {
    "loyaltyBenefitId": "86c29c3653f74c0a9f1b2c3d4e5f6a7b",
    "version": 9,
    "metadata": {
      "name": "Birthday bonus",
      "description": "Extra points on birthday month",
      "programId": "973",
      "orgId": 12345,
      "expiryType": "CUSTOM",
      "status": "STOPPED",
      "customerEligibilityType": null,
      "benefitIdentifier": "5e9f6a2b-1c3d-4e5f-8a7b-9c1d2e3f4a5b",
      "loyaltyBenefitRecordId": 287,
      "startDate": "2026-08-01T00:00:00+05:30",
      "endDate": "2027-01-31T23:59:59+05:30",
      "timezoneName": "Asia/Kolkata",
      "createdOn": "2026-06-23T14:32:24+05:30",
      "lastModifiedOn": "2026-06-23T14:42:10+05:30",
      "createdBy": 123456,
      "lastModifiedBy": 123456,
      "draftDetails": null
    },
    "benefitCategoryId": -1,
    "tierIds": [
      8159,
      8165
    ],
    "optin": {
      "basedOn": null,
      "audienceMapping": null,
      "activities": null,
      "restrictions": null,
      "optInStartDate": "2026-08-01T09:00:00+05:30",
      "optInEndDate": "2027-01-31T18:00:00+05:30"
    },
    "activities": [
      {
        "type": "SINGLE",
        "event": "TransactionAdd",
        "allCycles": []
      }
    ],
    "limits": null,
    "configAttributes": null,
    "liabilityOwnerSplitInfo": null,
    "workflowMetadata": null,
    "communicationApprovalStatus": {
      "success": true,
      "message": "No communications to approve",
      "response": null,
      "statusCode": 200
    },
    "parentId": null,
    "parentDetails": null,
    "comments": "Approved for launch",
    "id": "6a3a4ba0c1d2e3f4a5b6c7d8"
  },
  "errors": null,
  "warnings": null
}

Response parameters

FieldTypeDescription
dataobjectObject containing the benefit after the action. Has the same fields as the Get Benefit response.
.metadataobjectObject containing workflow stage data.
..statusenumStage after the action. Possible values: DRAFT, PENDING_APPROVAL, LIVE, UPCOMING, PAUSED, STOPPED.
errorsarrayError list. null on success.
warningsarrayWarning list. null on success.

Error & warning codes

CodeTypeDescription
loyaltyBenefitId=<id>ErrorNo benefit matches the given loyaltyBenefitId. HTTP 404.
<current> → <target>ErrorThe action isn't allowed from the benefit's current status. The message names the attempted transition (for example, DRAFT → PAUSED). HTTP 422.

Note: These errors return a generic numeric code on the wire rather than an error-specific number. The Code column shows the identifying text carried in the error message.


Path Params
string
required
Body Params
string
enum
required
Allowed:
integer
required
Headers
string
Responses

401

Authentication failed

404

No benefit matches the given loyaltyBenefitId

422

Illegal status transition

Language
Credentials
Basic
base64
:
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json