> ## Documentation Index
> Fetch the complete documentation index at: https://voucherify-rc-lv2-guides.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Create point wallets

> Configure and manage point wallets

Point wallets control how points are earned, stored, spent, and expire. Point wallets work like a card definition or a set of rules for loyalty cards that are generated and then assigned to loyalty program members.

Go to **Loyalty hub** > **Point wallets** to **Create point wallet**.

You can also create a point wallet in the loyalty program **Designer** when creating a new loyalty program.

## Create a point wallet

Some settings depend on each other. If something is incompatible, you will see an Action required message.

You can also **Save draft** and finish the point wallet setup later.

<Steps>
  <Step>
    ### General settings

    Define the basic behavior of the point wallet:

    * **Type**:
      * **Individual**: Points are assigned to individual members.
      * **Team** (feature not released yet): Points are assigned to one card that's shared by several members.
    * **Allow card balance to go below zero**: Members' point balance can go below zero.

    <Note>
      This setting affects refunds and points expiration. Some options, such as revoking points below zero or expiration rules, depend on it.
    </Note>
  </Step>

  <Step>
    ### Code config

    Define how point wallet-related codes are generated:

    * **Charset**: Choose a predefined set, for example alphanumeric, or define your own.
    * **Code length**: Defines how many random characters the code contains.
    * **Pattern**: Create a custom structure using placeholders.
    * **#**: Replace with a random character from the selected charset. Overrides the code length.
    * **Prefix** and **Postfix**: Optional values added at the beginning or end of the code.

    **Code preview** shows an example of a generated code.

    The number of possible unique codes depends on the selected charset and code length.
  </Step>

  <Step>
    ### Points expiration

    Define when points expire.

    <Tabs>
      <Tab title="No expiration">
        Points never expire. No additional setup is required.
      </Tab>

      <Tab title="Rolling expiration">
        Points expire after a defined period from when they are earned.

        * **Expiration period**: how long points stay valid after earning.
        * **Period unit**: day (max 90), month (max 12), year (max 5).
        * **Expiration rounding**: round the expiration to the nearest period. Possible settings – **No rounding**, **End of month**, **End of quarter**, **End of half-year**, **End of year**, **End of particular month**.
      </Tab>

      <Tab title="Calendar expiration">
        Points expire on selected dates each year.

        Select **Month** and **Day of the month** to **Add date**.

        Add at least one date. You can define up to 20 expiration dates.
      </Tab>

      <Tab title="Sliding expiration">
        Points expire after a period of inactivity.

        * **Inactivity period**: How long points remain valid without activity.
        * **Period unit**: Day (max 90), month (max 12), year (max 1).

        Activity types:

        * **Earning activity**: Resets the inactivity timer when customers earn points.
        * **Spending activity**: Resets the inactivity timer when customers spend points.
        * **Custom activity**: Resets the inactivity timer based on selected custom events. You can add up to 20 custom events.

        Select at least one activity type. Only the selected activities reset the inactivity timer.
      </Tab>
    </Tabs>

    <Note>
      Points expiration is available only when **Allow card balance to go below zero** is disabled. If negative balance is enabled, only **No expiration – points never expire** is available.

      Time-related settings in point wallet configuration use the time zone configured in **Project settings**.
    </Note>
  </Step>

  <Step>
    ### Pending points

    Define when earned points become available.

    Pending points can't be spent until they're activated. Activation moves points from pending to the active balance.

    <Tabs>
      <Tab title="Immediate">
        Points activate immediately after earning.

        If pending points are set to **Immediate**, you cannot use **From pending** in **Refunds → Earned points refunds**, because points are activated right away. Choose a different pending points type if you need to revoke points before activation.
      </Tab>

      <Tab title="Period-based">
        Points activate after a defined time from when they are earned.

        * **Waiting period**: How long points remain pending before activation.
        * **Period unit**: Day (max 90), month (max 12), year (max 1).
      </Tab>

      <Tab title="Fixed dates">
        Points activate on selected calendar dates.

        Select **Month** and **Day of the month** to **Add date**.

        Add at least one date. You can define up to 20 activation dates.
      </Tab>

      <Tab title="Event-based">
        Points remain pending after selected events occur and activate after the defined cancellation period passes.

        * **Cancellation period**: Defines how long points remain pending before the points are cancelled if the custom event hasn't been triggered.
        * **Period unit**: Day (max 90), month (max 12), year (max 1).

        Select **Custom event** and use **Add activity** to define which custom events trigger point activation.

        Add at least one custom event. You can define up to 20 custom events.
      </Tab>
    </Tabs>
  </Step>

  <Step>
    ### Earning limits

    Control how customers earn points.

    Both **Global earning limit** and **Transactions earning limit** can apply at the same time, and the more restrictive condition applies.

    <Tabs>
      <Tab title="Global earning limit">
        Defines the overall limit on points a member can earn.

        * **No limit**: Members can earn an unlimited number of points.

        * **Limited**: Members can earn points only within the configured limits.

          When **Limited** is selected, configure the limit type:

          * **Balance-based**: Limits the maximum number of points a member can earn in total during the program lifetime.

            **Max balance**: Defines the maximum active point balance a member can reach. Once reached, the member won't be able to earn more points.

          * **Time-based**: Limits how many points a member can earn within a selected time period.

            **Period unit**: Defines the earning period (day, week, month, quarter, year). The period is a calendar period, so for **week** it's between Monday and Sunday, depending on locale settings.

            **Max points per period**: Defines the maximum number of points a member can earn during the selected period. Once reached, the member won't be able to earn more points during that period.
      </Tab>

      <Tab title="Transactions earning limit">
        Defines how many points can be earned in a transaction.

        * **No limit**: Members can earn an unlimited number of points in one transaction.

        * **Limited**: Members can't earn more than the configured transaction limits.

          When **Limited** is selected, configure:

          * **Max points earned per transaction**: Defines the maximum number of points a member can earn in a single transaction. Once reached, the member won't be able to earn more points in that transaction.

          * **Min amount spent per transaction**: Defines the minimum transaction amount required to earn points.
      </Tab>
    </Tabs>
  </Step>

  <Step>
    ### Spending limits

    Control how customers spend points.

    Both **Global spending limit** and **Transactions spending limit** can apply at the same time, and the more restrictive condition applies.

    <Tabs>
      <Tab title="Global spending limit">
        Defines the overall limit on how many points a member can spend.

        * **No limit**: Members can spend an unlimited number of points.

        * **Limited**: Members can spend points only within the configured limits.

          When **Limited** is selected, configure the limit type:

          * **Spending-based**: Limits the total number of points a member can spend across all transactions.

            **Max lifetime spending**: Defines the maximum total number of points a member can spend. Once reached, the member won't be able to spend more points.

          * **Time-based**: Limits how many points a member can spend within a selected time period.

            **Period unit**: Defines the spending period (day, week, month, quarter, year). The period is a calendar period, so for **week** it's between Monday and Sunday, depending on locale settings.

            **Max points per period**: Defines the maximum number of points a member can spend during the selected period. Once reached, the member won't be able to spend more points during that period.
      </Tab>

      <Tab title="Transactions spending limit">
        Defines how many points can be spent in a single transaction.

        * **No limit**: Members can spend an unlimited number of points in a single transaction.

        * **Limited**: Members can spend points only within the configured transaction limit.

          When **Limited** is selected, configure:

          * **Max points to spend per transaction**: Defines the maximum number of points a member can spend in a single transaction.
      </Tab>
    </Tabs>
  </Step>

  <Step>
    ### Pay with points

    Configure how customers can use points to pay for orders.

    **Enable pay with points** to allow payments using points.

    When enabled, define the conversion formula:

    * **Amount unit**: Fixed base unit (1 minor currency unit, for example 1 cent). This value cannot be edited.
    * **Points needed**: Number of points required to pay for that unit.

    The formula result defines how many points are needed to pay for 1 amount unit.

    For example, `111` means 111 points pay for 1 unit (for example, 1 cent in USD).

    You can:

    * Enter a formula manually
    * Use **Build formula** to create it using the formula builder
    * Reuse an existing expression in **Expression output**

    Use numeric values or functions such as `ORDER_METADATA("property")` to create dynamic conversion rules.
  </Step>

  <Step>
    ### Return policy

    Control how refunds affect points.

    **Point refunds** and **Point deduction** are applied separately.

    <Tabs>
      <Tab title="Point refunds">
        Defines whether points used in a transaction are returned after a refund.

        * **Non-refundable**: Spent points are not returned.
        * **Refundable**: Spent points can be returned after a refund.

        When **Refundable** is selected, configure the refund type:

        * **Refund all**: Returns all spent points.
        * **Refund by item**: Returns points related only to refunded items (not supported yet).
        * **Refund by amount**: Returns points proportionally to the refunded amount (not supported yet).
      </Tab>

      <Tab title="Point deduction">
        Defines whether points earned from a transaction are kept or revoked after a refund.

        * **Keep points**: Earned points remain unchanged after the refund.
        * **Deduct points**: Earned points are removed after the refund.

        When **Deduct points** is selected, configure the deduction source:

        * **Active balance**: Revokes points from the active balance.
        * **Pending points**: Revokes points only from pending points.

        When **Active balance** is selected, configure the deduction limit:

        * **Prevent negative**: Points are revoked until the balance reaches zero.
        * **Allow negative**: Points are revoked even if the balance becomes negative.

        <Note>
          Allowing negative balance requires enabling **Allow card balance to go below zero**. If this setting is disabled, **Allow negative** is not available. Revoking from pending requires **Pending points** not set to **Immediate**.
        </Note>
      </Tab>
    </Tabs>
  </Step>

  <Step>
    ### Metadata

    Add custom attributes for tracking, optimizing, or experimenting.

    You can either:

    * **Use an existing metadata schema**.
    * **Add unknown property**: Metadata that isn't defined and won't be added to the schema.
    * **Add to schema**: Define new metadata schema. Once saved, reload the schema to use the new metadata.

    <Note>
      Read [Metadata](/prepare/metadata) to learn more about custom attributes.
    </Note>
  </Step>

  <Step>
    ### Summary

    Review your configuration before saving.

    If everything is valid, **Save** becomes available.

    If something is incompatible, you will see **Action required**. **Go to step** to return to any section and make changes.

    You can also **Save draft** of the point wallet and return to the configuration later.
  </Step>
</Steps>

Once saved, the point wallet is created in an active state and can be used in loyalty programs.

<Note>
  <Badge color="blue">Save and activate point wallet</Badge>

  Saving a point wallet makes it ready to use. However, you won't be able to edit the point wallet configuration with the exception of metadata and pay with points.
</Note>

If you use **Save draft**, the point wallet is saved in draft status and can be completed later.

## Point wallets in loyalty programs

You can create and manage point wallets directly while working on a loyalty program in the **Designer**.

### Create a point wallet in a loyalty program

<Info>
  <Badge color="gray">Prerequisite: Loyalty program draft</Badge>

  You can create or add point wallets only to a loyalty program that's in a draft state.
</Info>

In the **Programs**, open a loyalty program. In the **Building blocks** panel, use **+** next to **Point wallets**.

This opens the same point wallet builder used in the **Point wallets** section.

The point wallet is created while you are working inside a program. You can assign it to the program immediately. The point wallet is still saved globally and can be reused.

### Use point wallets in a program

In the program **Designer**, you can assign and manage point wallets directly in the program view.

In the **Building blocks** panel, you can:

* View all available point wallets and their status
* Assign a point wallet to the program
* Create a new point wallet using **+**
* Open a point wallet to view its full configuration and manage its status

In the **Point wallets** section, you can:

* View point wallets assigned to the program
* Edit or unassign a point wallet
* Assign an existing point wallet or create a new one
* Assign a tier structure to a point wallet

<Note>
  Point wallets are global objects, so assigning them to a program does not create a copy. Changes to a point wallet apply everywhere it is used. Unassigning a point wallet removes it from the program but does not delete it.
</Note>

## Managing point wallets

Go to **Loyalty hub** > **Point wallets**.

After you create a point wallet, it appears in the **Point wallets** section.

Use the **three-dot menu (⋮)** to:

* Activate or deactivate a point wallet
* Edit the point wallet
* Delete the point wallet

Active point wallets can be used in loyalty programs.

Deactivated point wallets remain available but cannot be used until reactivated.

Click on a point wallet to check its configuration details.

## Related features

Point wallets can be combined with the following features to build more advanced loyalty program flows.

<AccordionGroup>
  <Accordion title="Custom events">
    You can use [custom events](/prepare/custom-events#custom-events) to trigger Voucherify logic based on events defined in your integration.

    Custom events can be used for segmentation, validation rules, distributions, loyalty automation, and selected event-based configurations.
  </Accordion>

  <Accordion title="Loyalty programs">
    Point wallets can be assigned directly to loyalty programs in the [program Designer](/build/create-loyalty-campaign-v2).

    The same point wallet can be reused across multiple programs.
  </Accordion>

  <Accordion title="Tier structures">
    You can assign a [tier structure](/build/create-tier-structures) to a point wallet from the program view.

    Tier structures can be used together with point wallets to build tier-based loyalty programs.
  </Accordion>
</AccordionGroup>
