> ## Documentation Index
> Fetch the complete documentation index at: https://docs.voucherify.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Expire point bucket

> Expires an `ACTIVE` points bucket. Creates an `ADMIN_POINTS_EXPIRATION` card transaction. The transaction is created with status `PENDING` and processed asynchronously. No request body.

The bucket must be `ACTIVE`, and its `expiration_date` must be on or after the current project day. The program and the member must be `ACTIVE`, and the program must be inside its validity window. Otherwise the response is `423`.

Returns `404` when the program, the member, or the card definition doesn't exist, when the card isn't assigned to that member, or when the bucket isn't on that card.



## OpenAPI

````yaml /openapi/loyalties-v2.json post /v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/expiring-points/{bucketId}/expire
openapi: 3.1.0
info:
  title: Voucherify API - Loyalty v2
  version: v2018-08-01
  description: >-
    Voucherify promotion engine REST API. Please see
    https://docs.voucherify.io/docs for more details.
  contact:
    name: Voucherify Team
    url: https://www.voucherify.io/contact-support
    email: support@voucherify.io
  termsOfService: https://www.voucherify.io/legal/subscription-agreement
  license:
    name: MIT
    url: https://github.com/voucherifyio/voucherify-js-sdk/blob/main/LICENSE
servers:
  - url: https://{cluster}.voucherify.io
    description: Base URL
    variables:
      cluster:
        default: api
        enum:
          - api
          - us1.api
          - as1.api
          - download
          - us1.download
          - as1.download
security: []
paths:
  /v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/expiring-points/{bucketId}/expire:
    parameters:
      - name: programId
        in: path
        required: true
        description: Unique loyalty program ID (format `lprg_[a-f0-9]+`).
        schema:
          type: string
          pattern: ^lprg_[a-f0-9]+$
      - name: memberId
        in: path
        required: true
        description: Program member ID (format `lmbr_[a-f0-9]+`).
        schema:
          type: string
          pattern: ^lmbr_[a-f0-9]+$
      - name: cardId
        in: path
        required: true
        description: Loyalty card ID (format `lcrd_[a-f0-9]+`).
        schema:
          type: string
          pattern: ^lcrd_[a-f0-9]+$
      - name: bucketId
        in: path
        required: true
        description: Points expiration bucket ID (format `lcpeb_[a-f0-9]+`).
        schema:
          type: string
          pattern: ^lcpeb_[a-f0-9]+$
    post:
      tags:
        - Programs
      summary: Expire point bucket
      description: >-
        Expires an `ACTIVE` points bucket. Creates an `ADMIN_POINTS_EXPIRATION`
        card transaction. The transaction is created with status `PENDING` and
        processed asynchronously. No request body.


        The bucket must be `ACTIVE`, and its `expiration_date` must be on or
        after the current project day. The program and the member must be
        `ACTIVE`, and the program must be inside its validity window. Otherwise
        the response is `423`.


        Returns `404` when the program, the member, or the card definition
        doesn't exist, when the card isn't assigned to that member, or when the
        bucket isn't on that card.
      operationId: expireCardPointsBucket
      parameters: []
      responses:
        '200':
          description: Result of the points expiration.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/LoyaltiesProgramsMembersCardsExpiringPointsExpireResponseBody
              examples:
                Point expiration bucket response:
                  value:
                    transaction:
                      id: lctx_12f7dc8650267658b4
                      card_id: lcrd_128f962dbd8c4ba5e1
                      program_id: lprg_128f58429f4c4bf7b2
                      member_id: lmbr_128f962dbc8c4ba5dc
                      card_definition_id: lcdef_128f4a88414c4bed69
                      card_type: INDIVIDUAL
                      type: ADMIN_POINTS_EXPIRATION
                      details:
                        reason: Manual points expiration
                        rejection: null
                        metadata: {}
                        bucket:
                          id: lcpeb_139415d0be4d928f6e
                          points:
                            total: 220
                          expiration_date: '2026-12-31'
                          expiration_type: CALENDAR_EXPIRATION
                      status: PENDING
                      created_at: '2026-08-31T15:49:03.936Z'
                      updated_at: null
                      object: card_transaction
                    status: TRANSACTION_CREATED
                    message: Points expiration transaction created
        '404':
          description: Resource not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Program not found:
                  value:
                    code: 404
                    key: not_found
                    message: Resource not found
                    details: Cannot find program with id lprg_128f5849f4c4bf7b2
                    request_id: v-12f7deaa8ded51e922
                    resource_id: lprg_128f5849f4c4bf7b2
                    resource_type: program
                Member not found:
                  value:
                    code: 404
                    key: not_found
                    message: Resource not found
                    details: Cannot find member with id lmbr_128962dbc8c4ba5dc
                    request_id: v-12f7dec39b5e1ffd5b
                    resource_id: lmbr_128962dbc8c4ba5dc
                    resource_type: member
                Card not found:
                  value:
                    code: 404
                    key: not_found
                    message: Resource not found
                    details: Cannot find card with id lcrd_28f962dbd8c4ba5e1
                    request_id: v-12f7ded28cad51e96a
                    resource_id: lcrd_28f962dbd8c4ba5e1
                    resource_type: card
                Card definition not found:
                  value:
                    code: 404
                    key: not_found
                    message: Resource not found
                    details: >-
                      Cannot find card_definition with id
                      lcdef_128f4a88414c4bed00
                    request_id: v-12f7deda0cad51e97a
                    resource_id: lcdef_128f4a88414c4bed00
                    resource_type: card_definition
                Point bucket not found:
                  value:
                    code: 404
                    key: not_found
                    message: Resource not found
                    details: >-
                      Cannot find card_points_bucket with id
                      lcpeb_19415d0be4d928f6e
                    request_id: v-12f7dee4036d51e990
                    resource_id: lcpeb_19415d0be4d928f6e
                    resource_type: card_points_bucket
        '423':
          description: >-
            The program or member isn't `ACTIVE`, the program is outside its
            validity window, the bucket isn't `ACTIVE`, or the bucket
            `expiration_date` is before the current project day.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Program inactive:
                  value:
                    code: 423
                    key: non_active_program
                    message: >-
                      Cannot expire member's card points when program status is
                      not ACTIVE
                    details: Invalid program status
                    request_id: v-12f7de75256d51e8b1
                Program outside validity window:
                  value:
                    code: 423
                    key: program_outside_validity_window
                    message: Program is not available at this time
                    details: >-
                      Cannot expire member's card points when program is not
                      active at this time
                    request_id: v-12f7de75256d51e8b2
                Member inactive:
                  value:
                    code: 423
                    key: non_active_member
                    message: >-
                      Cannot expire member's card points when member status is
                      not ACTIVE
                    details: Invalid member status
                    request_id: v-12f7de75256d51e8b3
                Invalid point bucket status:
                  value:
                    code: 423
                    key: invalid_points_bucket_status
                    message: Invalid points bucket status
                    details: >-
                      Points bucket must be in ACTIVE status in order to be
                      expired
                    request_id: v-12f7de75256d51e8bf
                Bucket not eligible for manual expiration:
                  value:
                    code: 423
                    key: bucket_not_eligible_for_manual_expiration
                    message: Manual expiration not available
                    details: Only future-dated buckets can be expired manually
                    request_id: v-12f7de75256d51e8b5
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Internal server error:
                  value:
                    code: 500
                    key: api_error
                    message: >-
                      Something went wrong. Don't worry, your campaigns are
                      still safe and the Voucherify Team has been notified.
                      Check out our Help Center and forums for help, or head
                      back to home.
      security:
        - X-App-Id: []
          X-App-Token: []
        - bearerAuth: []
components:
  schemas:
    LoyaltiesProgramsMembersCardsExpiringPointsExpireResponseBody:
      type: object
      title: Loyalties Programs Members Cards Expiring Points Expire Response Body
      description: >-
        Response body schema for **POST**
        `/v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/expiring-points/{bucketId}/expire`.


        Result of expiring an expiration point bucket. This endpoint always
        returns status `TRANSACTION_CREATED` on success.
      properties:
        transaction:
          $ref: '#/components/schemas/CardTransaction'
          description: The created `ADMIN_POINTS_EXPIRATION` card transaction.
        status:
          type: string
          enum:
            - TRANSACTION_CREATED
          description: Result status. The API endpoint returns `TRANSACTION_CREATED`.
        message:
          type: string
          enum:
            - Points expiration transaction created
          description: >-
            Human-readable result message - "Points expiration transaction
            created".
      required:
        - transaction
        - status
        - message
    ErrorResponse:
      type: object
      description: Standard error response returned by all Loyalty v2 endpoints.
      properties:
        code:
          type: integer
          description: HTTP status code of the error.
        key:
          type: string
          description: Machine-readable error key.
        message:
          type: string
          description: Human-readable error message.
        details:
          type: string
          description: Additional details about the error.
        request_id:
          type: string
          description: Unique identifier of the request that produced the error.
        resource_id:
          type: string
          description: Unique identifier of the resource that produced the error.
        resource_type:
          type: string
          description: Type of the resource that produced the error.
    CardTransaction:
      type: object
      description: A card transaction.
      properties:
        id:
          type: string
          pattern: ^lctx_[a-f0-9]+$
          description: Unique card transaction ID assigned by Voucherify.
        card_id:
          type: string
          pattern: ^lcrd_[a-f0-9]+$
          description: ID of the card the transaction belongs to. Assigned by Voucherify.
        program_id:
          type: string
          pattern: ^lprg_[a-f0-9]+$
          description: ID of the loyalty program. Assigned by Voucherify.
        member_id:
          type: string
          pattern: ^lmbr_[a-f0-9]+$
          description: ID of the member owning the card. Assigned by Voucherify.
        card_definition_id:
          type: string
          pattern: ^lcdef_[a-f0-9]+$
          description: ID of the card definition of the card. Assigned by Voucherify.
        card_type:
          type: string
          enum:
            - INDIVIDUAL
          description: Card type.
        type:
          type: string
          enum:
            - ADMIN_CREDIT
            - ADMIN_DEBIT
            - ADMIN_POINTS_EXPIRATION
            - POINTS_EARNED
            - POINTS_SPENT_ON_REWARD
            - POINTS_PURCHASED
            - POINTS_PURCHASE_REVERSED
            - POINTS_SPENT_ON_ORDER
            - POINTS_REFUNDED
            - POINTS_RETURNED
            - POINTS_EXPIRED
            - PENDING_POINTS_ADDED
            - PENDING_POINTS_ACTIVATED
            - PENDING_POINTS_CANCELED
          description: >-
            Transaction type. Options depend on the endpoint and the transaction
            variant.
        details:
          description: >-
            Card transaction details. `reason`, `rejection` and `metadata` are
            present on all variants; the remaining fields depend on the
            transaction `type`:


            - `ADMIN_CREDIT`: `points` (`total`, `expiration_date`)

            - `ADMIN_DEBIT`: `points` (`total`)

            - `ADMIN_POINTS_EXPIRATION`: `bucket` (the point bucket expired
            manually by an admin)

            - `POINTS_EARNED`: `points` (`total`, `expiration_date`)

            - `POINTS_EXPIRED`: `points` (`total`), `date`, `buckets`

            - `POINTS_SPENT_ON_REWARD`: `points` (`total`), `reward`,
            `reward_transaction`,`target_card`, `purchase_transaction`

            - `POINTS_PURCHASED`: `points` (`total`, `expiration_date`,
            `expiration_type`), `reward`, `reward_transaction`,
            `card_transaction`

            - `POINTS_PURCHASE_REVERSED`: `points` (`total`, `expiration_date`,
              `expiration_type`), `reward`, `purchase`, `reward_transaction`
            - `POINTS_SPENT_ON_ORDER`: `points` (`total`), `order`,
            `order_transaction`

            - `POINTS_REFUNDED`: `points` (`total`)

            - `POINTS_RETURNED`: `points` (`total`, `expiration_date`,
            `expiration_type`), `reward`, `purchase`, `reward_transaction`

            - `PENDING_POINTS_ADDED` / `PENDING_POINTS_ACTIVATED` /
            `PENDING_POINTS_CANCELED`: `points` (`total`, `date`, `type`)
          oneOf:
            - $ref: '#/components/schemas/CardTransactionDetails'
            - type: 'null'
        status:
          type: string
          enum:
            - PENDING
            - PROCESSING
            - APPROVED
            - REJECTED
          description: >-
            Transaction processing status. Transactions are created as `PENDING`
            and processed asynchronously.
        created_at:
          type: string
          format: date-time
          description: Timestamp when the transaction was created (ISO 8601).
        updated_at:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            Timestamp when the transaction was last updated (ISO 8601), or
            `null`.
        object:
          type: string
          const: card_transaction
          description: Object type marker, always `card_transaction`.
      required:
        - id
        - card_id
        - program_id
        - member_id
        - card_definition_id
        - card_type
        - type
        - details
        - status
        - created_at
        - updated_at
        - object
    CardTransactionDetails:
      type: object
      description: >-
        Card transaction details. Variant-dependent fields are not present on
        all variants.
      properties:
        reason:
          type:
            - string
            - 'null'
          description: >-
            Reason for the transaction (e.g. the reason provided in a manual
            adjustment request).
        rejection:
          description: Rejection details when the transaction was rejected, or `null`.
          oneOf:
            - type: object
              properties:
                reason:
                  type: string
                  description: Rejection reason.
                details:
                  type: string
                  description: Detailed rejection description.
            - type: 'null'
        metadata:
          type: object
          description: Transaction metadata (empty object when none).
        points:
          type: object
          description: >-
            Points affected by the transaction (variant-dependent fields;
            pending points don't return `expiration_date` and
            `expiration_type`.).
          properties:
            total:
              type: number
              description: Number of points. Negative for debits.
            expiration_date:
              type:
                - string
                - 'null'
              format: date
              description: >-
                Expiration date of the affected points (`YYYY-MM-DD`), or
                `null`.
            expiration_type:
              type:
                - string
                - 'null'
              enum:
                - NO_EXPIRATION
                - ROLLING_EXPIRATION
                - CALENDAR_EXPIRATION
                - SLIDING_EXPIRATION
                - null
              description: Points expiration type of the affected points, or `null`.
            date:
              type: string
              format: date
              description: >-
                Activation date of the pending points (`YYYY-MM-DD`). Pending
                points variants only.
            type:
              type: string
              enum:
                - IMMEDIATE
                - PERIOD_BASED
                - FIXED_DATES
                - EVENT_BASED
              description: Pending points activation type. Pending points variants only.
        bucket:
          $ref: '#/components/schemas/LoyaltyV2CardPointsBucketSimple'
          description: The points bucket being expired (`ADMIN_POINTS_EXPIRATION` only).
        buckets:
          type: array
          description: The points buckets that expired (`POINTS_EXPIRED` only).
          items:
            $ref: '#/components/schemas/LoyaltyV2CardPointsBucketSimple'
        date:
          type: string
          format: date
          description: Expiration date (`POINTS_EXPIRED` only, `YYYY-MM-DD`).
        reward:
          description: Reference to the reward involved, or `null`.
          oneOf:
            - type: object
              properties:
                id:
                  type: string
                  description: Reward ID (`lrew_[a-f0-9]+`) assigned by Voucherify.
            - type: 'null'
        reward_transaction:
          description: Reference to the related reward transaction, or `null`.
          oneOf:
            - type: object
              properties:
                id:
                  type: string
                  description: >-
                    Reward transaction ID (`lrtx_[a-f0-9]+`) assigned by
                    Voucherify.
            - type: 'null'
        card_transaction:
          description: >-
            Reference to the linked card transaction (e.g. the spend side of a
            points purchase), or `null`.
          oneOf:
            - type: object
              properties:
                id:
                  type: string
                  description: >-
                    Card transaction ID (`lctx_[a-f0-9]+`) assigned by
                    Voucherify.
            - type: 'null'
        purchase:
          description: >-
            References to the original purchase transactions (reversal/return
            variants), or `null`.
          oneOf:
            - type: object
              properties:
                card_transaction:
                  oneOf:
                    - type: object
                      properties:
                        id:
                          type: string
                          description: >-
                            Card transaction ID (`lctx_[a-f0-9]+`) assigned by
                            Voucherify.
                    - type: 'null'
                reward_transaction:
                  oneOf:
                    - type: object
                      properties:
                        id:
                          type: string
                          description: >-
                            Reward transaction ID (`lrtx_[a-f0-9]+`) assigned by
                            Voucherify.
                    - type: 'null'
            - type: 'null'
        order:
          description: >-
            Reference to the order paid with points (`POINTS_SPENT_ON_ORDER`
            only), or `null`.
          oneOf:
            - type: object
              properties:
                id:
                  type: string
                  description: Order ID assigned by Voucherify.
            - type: 'null'
        order_transaction:
          description: >-
            Reference to the related order transaction (`POINTS_SPENT_ON_ORDER`
            only), or `null`.
          oneOf:
            - type: object
              properties:
                id:
                  type: string
                  description: >-
                    Order transaction ID (`lotx_[a-f0-9]+`) assigned by
                    Voucherify.
            - type: 'null'
        target_card:
          description: >-
            Reference to the target card credited by a points purchase
            (`POINTS_SPENT_ON_REWARD` only), or `null`.
          oneOf:
            - type: object
              properties:
                id:
                  type: string
                  description: Card ID (`lcrd_[a-f0-9]+`) assigned by Voucherify.
            - type: 'null'
        purchase_transaction:
          description: >-
            Reference to the linked purchase card transaction
            (`POINTS_SPENT_ON_REWARD` only), or `null`.
          oneOf:
            - type: object
              properties:
                id:
                  type: string
                  description: >-
                    Card transaction ID (`lctx_[a-f0-9]+`) assigned by
                    Voucherify.
            - type: 'null'
    LoyaltyV2CardPointsBucketSimple:
      title: Loyalty Card Points Bucket
      type: object
      description: |-
        Simple representation of a points expiration bucket, embedded in card
        transaction details.
      properties:
        id:
          type: string
          pattern: ^lcpeb_[a-f0-9]+$
          description: Point expiration bucket ID.
        points:
          type: object
          description: Points affected by the transaction.
          properties:
            total:
              type: number
              description: Number of points affected.
          required:
            - total
        expiration_date:
          type: string
          format: date
          description: Date when the points expire.
        expiration_type:
          type: string
          enum:
            - NO_EXPIRATION
            - ROLLING_EXPIRATION
            - CALENDAR_EXPIRATION
            - SLIDING_EXPIRATION
          description: Expiration type of the points.
      required:
        - id
        - points
        - expiration_date
        - expiration_type
  securitySchemes:
    X-App-Id:
      type: apiKey
      name: X-App-Id
      in: header
    X-App-Token:
      type: apiKey
      name: X-App-Token
      in: header
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.