From 504ddad976aa4b7b80f5e62eaa0bf1eb8d047e23 Mon Sep 17 00:00:00 2001
From: MaciekVoucherify <130568368+MaciekVoucherify@users.noreply.github.com>
Date: Fri, 17 Apr 2026 14:14:11 +0200
Subject: [PATCH 1/6] Point wallet builder
---
documentation/build/point-wallet-builder.mdx | 435 +++++++++++++++++++
documentation/docs.json | 1 +
2 files changed, 436 insertions(+)
create mode 100644 documentation/build/point-wallet-builder.mdx
diff --git a/documentation/build/point-wallet-builder.mdx b/documentation/build/point-wallet-builder.mdx
new file mode 100644
index 000000000..a25acb637
--- /dev/null
+++ b/documentation/build/point-wallet-builder.mdx
@@ -0,0 +1,435 @@
+---
+title: Point wallet builder
+description: Configure and manage point wallets
+keywords: ['point wallet', 'wallet builder', 'pending points', 'point expiration', 'pay with points', 'earning limits', 'spending limits']
+---
+
+Point wallets control how points are earned, stored, spent, and expire.
+
+Go to **Loyalty hub → Wallets** and select **Create wallet**.
+
+## Create a wallet
+
+The wallet builder walks you through several steps. Each step controls a specific part of the points logic.
+
+The panel on the left shows your progress and a summary of selected settings for each step.
+
+Some settings depend on each other. If something is incompatible, you will see an **Action required** message.
+
+You can also **save a wallet as a draft** and finish the setup later.
+
+
+
+
+
+## General settings
+
+Define the basic behavior of the wallet.
+
+
+
+
+- **Individual**: points are assigned per customer
+
+
+
+- Allows customers to go below zero balance
+
+
+This setting affects refunds and points expiration.
+
+Some options, such as revoking points below zero or expiration rules, depend on it.
+
+
+
+
+
+
+
+
+
+
+## Code config
+
+Define how wallet-related codes are generated.
+
+
+
+
+Choose a predefined set, for example alphanumeric, or define your own.
+
+
+
+Defines how many random characters the code contains.
+
+
+
+- Create a custom structure using placeholders
+- `#` is replaced with a random character from the selected charset
+- Overrides the code length
+
+
+
+Optional values added at the beginning or end of the code.
+
+
+
+Shows an example of a generated code.
+
+
+
+
+
+
+The number of possible unique codes depends on the selected charset and code length.
+
+
+
+
+
+
+
+## Points expiration
+
+Define when points expire.
+
+
+
+
+Points never expire. No additional setup is required.
+
+
+
+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**: No rounding, End of month, End of quarter, End of half-year, End of year, End of particular month
+
+
+
+Points expire on selected dates each year.
+
+- Select **Month**
+- Select **Day of the month**
+- Use **Add date**
+
+Add at least one date. You can define multiple expiration dates.
+
+
+
+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**
+- **Spending activity**
+- **Custom activity**: add one or more custom events
+
+Select at least one activity type. Only selected activities reset the inactivity timer.
+
+
+
+
+
+
+
+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.
+
+
+
+
+
+
+
+## Pending points
+
+Define when earned points become available.
+
+
+
+
+Points activate immediately after earning.
+
+
+
+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)
+
+
+
+
+Points activate on selected calendar dates.
+
+- Select **Month**
+- Select **Day of the month**
+- Use **Add date**
+
+Add at least one date. You can define multiple activation dates.
+
+
+
+Points activate after selected events occur.
+
+- **Cancellation period**: how long the system waits for the selected event before canceling activation
+- **Period unit**: Day (max 90), Month (max 12), Year (max 1)
+
+Activation:
+- Select at least one event type
+- Use **Add activity** to add it
+
+
+
+
+
+Pending points are not spendable until they activate. Activation moves points from pending to active balance.
+
+
+
+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.
+
+
+
+
+
+
+
+## Earning limits
+
+Control how customers earn points.
+
+
+
+
+Defines the overall limit on points a customer can earn.
+
+Options:
+- **No limit**
+- **Limited**
+ - **Balance-based**: limits the maximum number of points a customer can have at any time
+ - **Time-based**: limits how many points a customer can earn within a defined period
+
+
+
+Defines how many points can be earned per transaction.
+
+Options:
+- **No limit**
+- **Limited**
+ - Configure **Max points earned per transaction**
+ - Configure **Min amount spent per transaction**
+
+
+
+
+Global earning limits set overall constraints on how many points a customer can earn, based on the selected limit type.
+
+Transaction limits define how many points can be earned from a single transaction.
+
+Both limits can apply at the same time, and the more restrictive condition applies.
+
+
+
+
+
+## Spending limits
+
+Control how customers spend points.
+
+
+
+
+Defines the overall limit on how many points a customer can spend.
+
+Options:
+- **No limit**
+- **Limited**
+ - **Spending-based**: limits the total number of points a customer can spend across all transactions
+ - **Time-based**: limits how many points a customer can spend within a defined period
+
+
+
+Defines how many points can be spent in a single transaction.
+
+Options:
+- **No limit**
+- **Limited**
+ - Configure **Max points to spend per transaction**
+
+
+
+
+Global spending limits set overall constraints on how many points a customer can spend, based on the selected limit type.
+
+Transaction limits define how many points can be spent in a single transaction.
+
+Both limits can apply at the same time, and the more restrictive condition applies.
+
+
+
+
+
+## Refunds
+
+Define how refunds affect points.
+
+
+
+
+Defines whether points used in a transaction are returned after a refund.
+
+Options:
+- **No refund**: spent points are not returned
+- **Refundable**:
+ - **Refund all**: all spent points are refunded
+ - **Refund by item**: points related to returned items are refunded
+ - **Refund by amount**: points are returned based on the refunded amount
+
+
+
+Defines whether points earned from a transaction are kept or revoked after a refund.
+
+Options:
+- **Keep points**: earned points are not affected
+- **Revoke points**:
+ - **From balance**: points are revoked from active balance
+ - **Stop at zero**: points are revoked until balance reaches zero
+ - **Allow negative**: points are revoked even if it results in a negative balance
+ - **From pending**: points are revoked from pending points only
+
+
+
+
+Spent and earned refund rules are applied separately.
+
+
+
+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**.
+
+
+
+
+
+
+
+## Summary
+
+Use this step to review your configuration before saving.
+
+- If everything is valid, **Save** becomes available
+- If something is incompatible, you will see **Action required**
+- Use **Go to step** to return to any section and make changes
+- You can also save the wallet as a draft
+
+
+
+
+
+## Create a wallet in a program
+
+You can also create a wallet while configuring a program in the Designer.
+
+In the **Building Blocks** panel, use **+** next to **Wallets**.
+
+This opens the same wallet builder used in the Wallets section.
+
+
+
+
+- The wallet is created while you are working inside a program
+- You can assign it to the program immediately
+- The wallet is still saved globally and can be reused
+
+
+
+- The configuration steps are the same as in the Wallets section
+- The same dependencies between settings apply (you may see **Action required** if something is incompatible)
+
+
+
+
+
+## Use wallets in a program
+
+In the program Designer, you can assign and manage wallets directly in the program view.
+
+
+
+
+- View all available wallets and their status
+- Assign a wallet to the program
+- Create a new wallet using **+**
+- Open a wallet to view its full configuration and manage its status
+
+
+
+- View wallets assigned to the program
+- Edit or unassign a wallet
+- Assign an existing wallet or create a new one using **+**
+- When creating a wallet, you can enter a name and **Save as Draft**, or use **Advanced options** to open the full wallet builder
+- Assign a tier structure to a wallet
+
+
+
+
+
+
+Wallets are global objects, so assigning them to a program does not create a copy.
+
+Changes to a wallet apply everywhere it is used.
+
+Unassigning a wallet removes it from the program but does not delete it.
+
+
+
+## Managing wallets
+
+Go to **Loyalty hub → Wallets**.
+
+After you create a wallet, it appears in the **Wallets** section.
+
+
+
+
+- View all wallets with their:
+ - Status
+ - Name
+ - Type
+ - Points expiration
+ - Pending period
+ - Created date
+- Search wallets by name using the search bar
+- Use **Add filter** to narrow results
+- Use the **three-dot menu (⋮)** to:
+ - Activate or deactivate a wallet
+ - Edit the wallet
+ - Delete the wallet
+
+ Available options depend on the wallet status.
+
+
+
+
+- Select a wallet by clicking its name
+- View the full configuration summary
+- Use available actions:
+ - **Edit**
+ - **Activate / Deactivate**
+
+Inactive wallets can be reactivated at any time.
+
+
+
+
\ No newline at end of file
diff --git a/documentation/docs.json b/documentation/docs.json
index 297bb9205..6a3b407f7 100644
--- a/documentation/docs.json
+++ b/documentation/docs.json
@@ -242,6 +242,7 @@
"root": "build/loyalty-campaign-overview",
"pages": [
"build/create-loyalty-campaign",
+ "build/point-wallet-builder",
"build/earning-rules",
"build/loyalty-points",
"build/loyalty-tiers",
From 994d73620a1a612964babd7a51c4474c45d76afe Mon Sep 17 00:00:00 2001
From: MaciekVoucherify <130568368+MaciekVoucherify@users.noreply.github.com>
Date: Mon, 20 Apr 2026 13:26:26 +0200
Subject: [PATCH 2/6] Update point-wallet-builder.mdx
---
documentation/build/point-wallet-builder.mdx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/documentation/build/point-wallet-builder.mdx b/documentation/build/point-wallet-builder.mdx
index a25acb637..b4ddd9210 100644
--- a/documentation/build/point-wallet-builder.mdx
+++ b/documentation/build/point-wallet-builder.mdx
@@ -175,9 +175,9 @@ Add at least one date. You can define multiple activation dates.
-Points activate after selected events occur.
+Points activate after selected events occur and a defined cancellation period passes, allowing time to cancel or validate the event.
-- **Cancellation period**: how long the system waits for the selected event before canceling activation
+- **Cancellation period**: how long points remain pending after the selected event occurs; during this time, points can be canceled (for example, if the related transaction is reversed) before they become active
- **Period unit**: Day (max 90), Month (max 12), Year (max 1)
Activation:
From 491acc616bdbd79e6dd4860b43dd903023d94aec Mon Sep 17 00:00:00 2001
From: p-woznikowski
Date: Tue, 28 Apr 2026 15:15:29 +0200
Subject: [PATCH 3/6] Point wallet edit
---
documentation/build/point-wallet-builder.mdx | 415 +++++++------------
1 file changed, 153 insertions(+), 262 deletions(-)
diff --git a/documentation/build/point-wallet-builder.mdx b/documentation/build/point-wallet-builder.mdx
index b4ddd9210..f10405cd2 100644
--- a/documentation/build/point-wallet-builder.mdx
+++ b/documentation/build/point-wallet-builder.mdx
@@ -6,78 +6,46 @@ keywords: ['point wallet', 'wallet builder', 'pending points', 'point expiration
Point wallets control how points are earned, stored, spent, and expire.
-Go to **Loyalty hub → Wallets** and select **Create wallet**.
+Go to **Loyalty hub** > **Wallets** to **Create wallet**.
## Create a wallet
The wallet builder walks you through several steps. Each step controls a specific part of the points logic.
-The panel on the left shows your progress and a summary of selected settings for each step.
-
Some settings depend on each other. If something is incompatible, you will see an **Action required** message.
-You can also **save a wallet as a draft** and finish the setup later.
+You can also **Save draft** and finish the wallet setup later.
-## General settings
-
-Define the basic behavior of the wallet.
-
-
-
-
-- **Individual**: points are assigned per customer
-
-
-
-- Allows customers to go below zero balance
-
-
-This setting affects refunds and points expiration.
+### General settings
-Some options, such as revoking points below zero or expiration rules, depend on it.
-
+Define the basic behavior of the wallet:
+- **Type** - **Individual**: points are assigned per individual customers.
+- **Allow card balance to go below zero**: Customers' point balance can go below zero.
-
+
+ This setting affects refunds and points expiration.
-
+ Some options, such as revoking points below zero or expiration rules, depend on it.
+
-## Code config
-
-Define how wallet-related codes are generated.
-
-
-
-
-Choose a predefined set, for example alphanumeric, or define your own.
-
-
-
-Defines how many random characters the code contains.
-
-
-
-- Create a custom structure using placeholders
-- `#` is replaced with a random character from the selected charset
-- Overrides the code length
-
-
-
-Optional values added at the beginning or end of the code.
-
+### Code config
-
-Shows an example of a generated code.
-
+Define how 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.
+- **#** is replaced 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.
@@ -89,50 +57,45 @@ The number of possible unique codes depends on the selected charset and code len
-## Points expiration
+### Points expiration
Define when points expire.
-
+
+
+ Points never expire. No additional setup is required.
+
-
-Points never expire. No additional setup is required.
-
+
+ Points expire after a defined period from when they are earned.
-
-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**.
+
-- **Expiration period**: how long points stay valid after earning
-- **Period unit**: Day (max 90), Month (max 12), Year (max 5)
-- **Expiration rounding**: No rounding, End of month, End of quarter, End of half-year, End of year, End of particular month
-
+
+ Points expire on selected dates each year.
-
-Points expire on selected dates each year.
+ Select **Month** and **Day of the month** to **Add date**
-- Select **Month**
-- Select **Day of the month**
-- Use **Add date**
+ Add at least one date. You can define up to 20 expiration dates.
+
-Add at least one date. You can define multiple expiration dates.
-
+
+ Points expire after a period of inactivity.
-
-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).
-- **Inactivity period**: how long points remain valid without activity
-- **Period unit**: Day (max 90), Month (max 12), Year (max 1)
+ Activity types:
+ - **Earning activity**
+ - **Spending activity**
+ - **Custom activity**: add one or more custom events (up to 20).
-Activity types:
-- **Earning activity**
-- **Spending activity**
-- **Custom activity**: add one or more custom events
-
-Select at least one activity type. Only selected activities reset the inactivity timer.
-
-
-
-
+ Select at least one activity type. Only the selected activities reset the inactivity timer.
+
+
@@ -146,49 +109,41 @@ If negative balance is enabled, only **No expiration – points never expire** i
-## Pending points
+### Pending points
Define when earned points become available.
-
-
-
-Points activate immediately after earning.
-
-
-
-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)
-
-
+
+
+ Points activate immediately after earning.
+
-
-Points activate on selected calendar dates.
+
+ 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).
+
-- Select **Month**
-- Select **Day of the month**
-- Use **Add date**
+
+ Points activate on selected calendar dates.
+
+ Select **Month** and **Day of the month** to **Add date**
-Add at least one date. You can define multiple activation dates.
-
+ Add at least one date. You can define up to 20 activation dates.
+
-
-Points activate after selected events occur and a defined cancellation period passes, allowing time to cancel or validate the event.
+
+ Points activate after selected events occur and a defined cancellation period passes, allowing time to cancel or validate the event:
+ - **Cancellation period**: Defines how long points remain pending before the activation is finalized in the event-based flow.
+ - **Period unit**: Day (max 90), Month (max 12), Year (max 1)
-- **Cancellation period**: how long points remain pending after the selected event occurs; during this time, points can be canceled (for example, if the related transaction is reversed) before they become active
-- **Period unit**: Day (max 90), Month (max 12), Year (max 1)
+ Select **Custom event** and **Add activity**.
-Activation:
-- Select at least one event type
-- Use **Add activity** to add it
+ Add at least one custom event. You can define up to 20 custom events.
+
+
-
-
-
-
-Pending points are not spendable until they activate. Activation moves points from pending to active balance.
+Pending points can't be spent until they're activated. Activation moves points from pending to the active balance.
@@ -202,113 +157,90 @@ Choose a different pending points type if you need to revoke points before activ
-## Earning limits
+### Earning limits
Control how customers earn points.
-
-
-
-Defines the overall limit on points a customer can earn.
-
-Options:
-- **No limit**
-- **Limited**
- - **Balance-based**: limits the maximum number of points a customer can have at any time
- - **Time-based**: limits how many points a customer can earn within a defined period
-
-
-
-Defines how many points can be earned per transaction.
-
-Options:
-- **No limit**
-- **Limited**
- - Configure **Max points earned per transaction**
- - Configure **Min amount spent per transaction**
-
+Both **Global earning limit** and **Transactions earning limit** can apply at the same time, and the more restrictive condition applies.
-
+
-Global earning limits set overall constraints on how many points a customer can earn, based on the selected limit type.
+
+Defines the overall limit on points a customer can earn:
+- **No limit**: Customers can earn an unlimited number of points.
+- **Limited**: Customers can't earn more than a defined number.
+ - **Balance-based**: Limits the maximum number of points a customer can have at any time.
+ - **Time-based**: Limits how many points a customer can earn within a defined period (day, week, month, quarter, year).
+
-Transaction limits define how many points can be earned from a single transaction.
+
+Defines how many points can be earned in a transaction:
+- **No limit**: Customers can earn an unlimited number of points in one transaction.
+- **Limited**:
+ - **Max points earned per transaction**: Customers can't earn more than a defined number.
+ - **Min amount spent per transaction**: Customers have to spend minimum the defined amount to earn points.
+
-Both limits can apply at the same time, and the more restrictive condition applies.
+
-## Spending limits
+### 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.
-
-Defines the overall limit on how many points a customer can spend.
+
-Options:
-- **No limit**
+
+Defines the overall limit on how many points a customer can spend:
+- **No limit**: Customers can spend an unlimited number of points in a transaction.
- **Limited**
- - **Spending-based**: limits the total number of points a customer can spend across all transactions
- - **Time-based**: limits how many points a customer can spend within a defined period
-
-
-
-Defines how many points can be spent in a single transaction.
+ - **Spending-based**: Limits the total number of points a customer can spend across all transactions.
+ - **Time-based**: Limits how many points a customer can spend within a defined period (day, week, month, quarter, year).
+
-Options:
+
+Defines how many points can be spent in a single transaction:
- **No limit**
- **Limited**
- Configure **Max points to spend per transaction**
-
-
-
+
-Global spending limits set overall constraints on how many points a customer can spend, based on the selected limit type.
-
-Transaction limits define how many points can be spent in a single transaction.
-
-Both limits can apply at the same time, and the more restrictive condition applies.
+
-## Refunds
+### Refunds
Define how refunds affect points.
-
+**Spent points refunds** and **Earned points refunds** are applied separately.
-
-Defines whether points used in a transaction are returned after a refund.
+
-Options:
-- **No refund**: spent points are not returned
+
+Defines whether points used in a transaction are returned after a refund:
+- **No refund**: spent points are not returned.
- **Refundable**:
- - **Refund all**: all spent points are refunded
- - **Refund by item**: points related to returned items are refunded
- - **Refund by amount**: points are returned based on the refunded amount
-
-
-
-Defines whether points earned from a transaction are kept or revoked after a refund.
-
-Options:
-- **Keep points**: earned points are not affected
+ - **Refund all**: All spent points are refunded.
+ - **Refund by item**: Points related to returned items are refunded.
+ - **Refund by amount**: Points are returned based on the refunded amount.
+
+
+
+Defines whether points earned from a transaction are kept or revoked after a refund:
+- **Keep points**: Earned points are not affected.
- **Revoke points**:
- - **From balance**: points are revoked from active balance
- - **Stop at zero**: points are revoked until balance reaches zero
- - **Allow negative**: points are revoked even if it results in a negative balance
- - **From pending**: points are revoked from pending points only
-
-
-
-
-Spent and earned refund rules are applied separately.
+ - **From balance**: Points are revoked from the active balance.
+ - **Stop at zero**: Points are revoked until the balance reaches zero.
+ - **Allow negative**: Points are revoked even if it results in a negative balance.
+ - **From pending**: Points are revoked from pending points only.
@@ -316,73 +248,59 @@ Allowing negative balance requires enabling **Allow card balance to go below zer
If this setting is disabled, **Allow negative** is not available.
-Revoking from pending requires pending points not set to **Immediate**.
+Revoking from pending requires **Pending points** not set to **Immediate**.
+
+
+
+
-## Summary
+### Summary
-Use this step to review your configuration before saving.
+Review your configuration before saving.
-- If everything is valid, **Save** becomes available
-- If something is incompatible, you will see **Action required**
-- Use **Go to step** to return to any section and make changes
-- You can also save the wallet as a draft
+- If everything is valid, **Save** becomes available.
+- If something is incompatible, you will see **Action required**.
+- Use **Go to step** to return to any section and make changes.
+- You can also **Save draft** of the wallet.
-## Create a wallet in a program
-
-You can also create a wallet while configuring a program in the Designer.
-
-In the **Building Blocks** panel, use **+** next to **Wallets**.
+Once saved, the wallet is created and it can be used in loyalty programs.
-This opens the same wallet builder used in the Wallets section.
+## Create a wallet in a loyalty program
-
+You can also create a wallet while configuring a loyalty program in the Designer.
-
-- The wallet is created while you are working inside a program
-- You can assign it to the program immediately
-- The wallet is still saved globally and can be reused
-
-
-
-- The configuration steps are the same as in the Wallets section
-- The same dependencies between settings apply (you may see **Action required** if something is incompatible)
-
+In the **Building Blocks** panel, use **+** next to **Wallets**.
-
+This opens the same wallet builder used in the **Wallets** section.
+The wallet is created while you are working inside a program. You can assign it to the program immediately. The wallet is still saved globally and can be reused.
## Use wallets in a program
In the program Designer, you can assign and manage wallets directly in the program view.
-
-
-
-- View all available wallets and their status
-- Assign a wallet to the program
-- Create a new wallet using **+**
-- Open a wallet to view its full configuration and manage its status
-
+Building blocks panel:
+- View all available wallets and their status.
+- Assign a wallet to the program.
+- Create a new wallet using **+**.
+- Open a wallet to view its full configuration and manage its status.
-
-- View wallets assigned to the program
-- Edit or unassign a wallet
-- Assign an existing wallet or create a new one using **+**
-- When creating a wallet, you can enter a name and **Save as Draft**, or use **Advanced options** to open the full wallet builder
-- Assign a tier structure to a wallet
-
-
-
+**Wallets** section:
+- View wallets assigned to the program.
+- Edit or unassign a wallet.
+- Assign an existing wallet or create a new one using **+**.
+- When creating a wallet, you can enter a name and **Save as Draft**, or use **Advanced options** to open the full wallet builder.
+- Assign a tier structure to a wallet.
@@ -390,46 +308,19 @@ Wallets are global objects, so assigning them to a program does not create a cop
Changes to a wallet apply everywhere it is used.
-Unassigning a wallet removes it from the program but does not delete it.
+Unassigning a wallet removes it from the program but it does not delete it.
## Managing wallets
-Go to **Loyalty hub → Wallets**.
-
-After you create a wallet, it appears in the **Wallets** section.
+Go to **Loyalty hub** > **Wallets**.
-
+After you create a wallet, it appears in the **Wallets** sectio.
-
-- View all wallets with their:
- - Status
- - Name
- - Type
- - Points expiration
- - Pending period
- - Created date
-- Search wallets by name using the search bar
-- Use **Add filter** to narrow results
-- Use the **three-dot menu (⋮)** to:
+Use the **three-dot menu (⋮)** to:
- Activate or deactivate a wallet
- Edit the wallet
- - Delete the wallet
-
- Available options depend on the wallet status.
-
-
-
-
-- Select a wallet by clicking its name
-- View the full configuration summary
-- Use available actions:
- - **Edit**
- - **Activate / Deactivate**
-
-Inactive wallets can be reactivated at any time.
-
-
+ - Delete the wallet
-
\ No newline at end of file
+Click on a wallet to check its configuration details.
From 148a95787de77ff7475e7c67f52c236b8304cf03 Mon Sep 17 00:00:00 2001
From: MaciekVoucherify <130568368+MaciekVoucherify@users.noreply.github.com>
Date: Tue, 28 Apr 2026 17:24:55 +0200
Subject: [PATCH 4/6] Update point-wallet-builder.mdx
---
documentation/build/point-wallet-builder.mdx | 340 +++++++++++--------
1 file changed, 206 insertions(+), 134 deletions(-)
diff --git a/documentation/build/point-wallet-builder.mdx b/documentation/build/point-wallet-builder.mdx
index f10405cd2..9cec12493 100644
--- a/documentation/build/point-wallet-builder.mdx
+++ b/documentation/build/point-wallet-builder.mdx
@@ -6,7 +6,7 @@ keywords: ['point wallet', 'wallet builder', 'pending points', 'point expiration
Point wallets control how points are earned, stored, spent, and expire.
-Go to **Loyalty hub** > **Wallets** to **Create wallet**.
+Go to **Loyalty hub** > **Wallets** and use **Create wallet**.
## Create a wallet
@@ -14,7 +14,7 @@ The wallet builder walks you through several steps. Each step controls a specifi
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 wallet setup later.
+You can also use **Save draft** and finish the wallet setup later.
@@ -23,14 +23,14 @@ You can also **Save draft** and finish the wallet setup later.
### General settings
Define the basic behavior of the wallet:
-- **Type** - **Individual**: points are assigned per individual customers.
-- **Allow card balance to go below zero**: Customers' point balance can go below zero.
+- **Type** - **Individual**: points are assigned to individual customers
+- **Allow card balance to go below zero**: allows customers' point balance to go below zero
-
- This setting affects refunds and points expiration.
+
+This setting affects refunds and points expiration.
- Some options, such as revoking points below zero or expiration rules, depend on it.
-
+Some options, such as revoking points below zero or expiration rules, depend on it.
+
@@ -39,18 +39,16 @@ Define the basic behavior of the wallet:
### Code config
Define how 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.
-- **#** is replaced 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.
+- **Charset**: select a predefined set or define your own
+- **Code length**: defines how many random characters the code contains
+- **Pattern**: create a custom structure using placeholders
+- **#** is replaced with a random character from the selected charset and overrides 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.
-
@@ -62,47 +60,47 @@ The number of possible unique codes depends on the selected charset and code len
Define when points expire.
-
- Points never expire. No additional setup is required.
-
-
- Points expire after a defined period from when they are earned.
+
+Points never expire. No additional setup is required.
+
- - **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**.
-
+
+Points expire after a defined period from when they are earned.
-
- Points expire on selected dates each year.
+- **Expiration period**
+- **Period unit**: Day (max 90), Month (max 12), Year (max 5)
+- **Expiration rounding**: No rounding, End of month, End of quarter, End of half-year, End of year, End of particular month
+
+
+
+Points expire on selected dates each year.
- Select **Month** and **Day of the month** to **Add date**
+Select **Month** and **Day of the month** and use **Add date**.
- Add at least one date. You can define up to 20 expiration dates.
-
+Add at least one date. You can define up to 20 expiration dates.
+
-
- Points expire after a period of inactivity.
+
+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).
+- **Inactivity period**
+- **Period unit**: Day (max 90), Month (max 12), Year (max 1)
- Activity types:
- - **Earning activity**
- - **Spending activity**
- - **Custom activity**: add one or more custom events (up to 20).
+Activity types:
+- **Earning activity**
+- **Spending activity**
+- **Custom activity**: add up to 20 custom events
+
+Select at least one activity type. Only selected activities reset the inactivity timer.
+
- Select at least one activity type. Only the selected activities reset the inactivity timer.
-
-
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.
-
+If negative balance is enabled, only **No expiration** is available.
@@ -114,43 +112,45 @@ If negative balance is enabled, only **No expiration – points never expire** i
Define when earned points become available.
-
- Points activate immediately after earning.
-
-
- 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).
-
+
+Points activate immediately after earning.
+
+
+
+Points activate after a defined time from when they are earned.
+
+- **Waiting period**
+- **Period unit**: Day (max 90), Month (max 12), Year (max 1)
+
+
+
+Points activate on selected calendar dates.
-
- Points activate on selected calendar dates.
-
- Select **Month** and **Day of the month** to **Add date**
+Select **Month** and **Day of the month** and use **Add date**.
- Add at least one date. You can define up to 20 activation dates.
-
+Add at least one date. You can define up to 20 activation dates.
+
+
+
+Points activate after selected events occur and the defined period passes.
-
- Points activate after selected events occur and a defined cancellation period passes, allowing time to cancel or validate the event:
- - **Cancellation period**: Defines how long points remain pending before the activation is finalized in the event-based flow.
- - **Period unit**: Day (max 90), Month (max 12), Year (max 1)
+- **Cancellation period**
+- **Period unit**: Day (max 90), Month (max 12), Year (max 1)
- Select **Custom event** and **Add activity**.
+Select **Custom event** and use **Add activity**.
+
+Add at least one custom event. You can define up to 20 custom events.
+
- Add at least one custom event. You can define up to 20 custom events.
-
-Pending points can't be spent until they're activated. Activation moves points from pending to the active balance.
+Pending points can't be spent until they are activated. Activation moves points from pending to the active balance.
-
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.
-
@@ -161,24 +161,22 @@ Choose a different pending points type if you need to revoke points before activ
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.
+Both **Global earning limit** and **Transactions earning limit** can apply at the same time. The more restrictive condition applies.
-Defines the overall limit on points a customer can earn:
-- **No limit**: Customers can earn an unlimited number of points.
-- **Limited**: Customers can't earn more than a defined number.
- - **Balance-based**: Limits the maximum number of points a customer can have at any time.
- - **Time-based**: Limits how many points a customer can earn within a defined period (day, week, month, quarter, year).
+- **No limit**
+- **Limited**
+ - **Balance-based**
+ - **Time-based**
-Defines how many points can be earned in a transaction:
-- **No limit**: Customers can earn an unlimited number of points in one transaction.
-- **Limited**:
- - **Max points earned per transaction**: Customers can't earn more than a defined number.
- - **Min amount spent per transaction**: Customers have to spend minimum the defined amount to earn points.
+- **No limit**
+- **Limited**
+ - **Max points earned per transaction**
+ - **Min amount spent per transaction**
@@ -191,23 +189,21 @@ Defines how many points can be earned in a transaction:
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.
+Both **Global spending limit** and **Transactions spending limit** can apply at the same time. The more restrictive condition applies.
-Defines the overall limit on how many points a customer can spend:
-- **No limit**: Customers can spend an unlimited number of points in a transaction.
-- **Limited**
- - **Spending-based**: Limits the total number of points a customer can spend across all transactions.
- - **Time-based**: Limits how many points a customer can spend within a defined period (day, week, month, quarter, year).
+- **No limit**
+- **Limited**
+ - **Spending-based**
+ - **Time-based**
-Defines how many points can be spent in a single transaction:
-- **No limit**
-- **Limited**
- - Configure **Max points to spend per transaction**
+- **No limit**
+- **Limited**
+ - **Max points to spend per transaction**
@@ -216,40 +212,67 @@ Defines how many points can be spent in a single transaction:
+### 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)
+- **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.
+
+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.
+
+
+If **Enable pay with points** is selected, the formula is required.
+
+
+
+
+
+
### Refunds
-Define how refunds affect points.
+Control how refunds affect points.
**Spent points refunds** and **Earned points refunds** are applied separately.
-Defines whether points used in a transaction are returned after a refund:
-- **No refund**: spent points are not returned.
-- **Refundable**:
- - **Refund all**: All spent points are refunded.
- - **Refund by item**: Points related to returned items are refunded.
- - **Refund by amount**: Points are returned based on the refunded amount.
+- **No refund**
+- **Refundable**
+ - **Refund all**
+ - **Refund by item**
+ - **Refund by amount**
-Defines whether points earned from a transaction are kept or revoked after a refund:
-- **Keep points**: Earned points are not affected.
-- **Revoke points**:
- - **From balance**: Points are revoked from the active balance.
- - **Stop at zero**: Points are revoked until the balance reaches zero.
- - **Allow negative**: Points are revoked even if it results in a negative balance.
- - **From pending**: Points are revoked from pending points only.
+- **Keep points**
+- **Revoke points**
+ - **From balance**
+ - **Stop at zero**
+ - **Allow negative**
+ - **From pending**
-
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**.
-
@@ -260,67 +283,116 @@ Revoking from pending requires **Pending points** not set to **Immediate**.
+### Metadata
+
+Define additional properties for the wallet.
+
+The metadata structure must match the schema defined in **Project settings**.
+
+The main view displays existing metadata keys and their types.
+
+- Use **Reload schema** to refresh the list of available properties
+
+There are two ways to work with metadata:
+
+- **Add unknown property**
+ Adds a metadata entry directly in the wallet.
+ Enter the **property name (key)** and select the **value type**.
+ The property appears in the list as **unknown** until it is added to the schema.
+
+- **Add to schema**
+ Creates a new metadata definition.
+ This opens the metadata builder, where you define:
+ - whether the property is **required** or **optional**
+ - whether it contains **single** or **multiple** values
+ - the **type** (for example: String, Number, Date, Datetime, Flag, Image URL, Object)
+ - optional validation rules (for example: length or allowed values)
+
+ After saving, the property:
+ - is added to the **project metadata schema**
+ - becomes available in the wallet metadata list
+ - is stored as a reusable definition
+
+
+
+Metadata definitions are managed in **Project settings**.
+
+You cannot remove metadata from a single wallet.
+To remove or edit a property, update the metadata schema in Project settings.
+
+Changes apply to all wallets using that schema.
+
+
+
+
+
+
+
### Summary
Review your configuration before saving.
-- If everything is valid, **Save** becomes available.
-- If something is incompatible, you will see **Action required**.
-- Use **Go to step** to return to any section and make changes.
-- You can also **Save draft** of the wallet.
+- If everything is valid, **Save** becomes available
+- If something is incompatible, you will see **Action required**
+- Use **Go to step** to return to a section and fix issues
+- You can also use **Save draft**
-Once saved, the wallet is created and it can be used in loyalty programs.
+Once saved, the wallet is created in an **active** state and can be used in loyalty programs.
+
+If you use **Save draft**, the wallet is saved in a **draft** state and can be completed later.
+
+## Wallets in loyalty programs
-## Create a wallet in a loyalty program
+You can create and manage wallets directly while working on a loyalty program in the Designer.
-You can also create a wallet while configuring a loyalty program in the Designer.
+### Create a wallet in a loyalty program
+
+To create a wallet within a program, use the **Building Blocks** panel.
In the **Building Blocks** panel, use **+** next to **Wallets**.
This opens the same wallet builder used in the **Wallets** section.
-The wallet is created while you are working inside a program. You can assign it to the program immediately. The wallet is still saved globally and can be reused.
+The wallet is created within the program and can be assigned immediately. It is still saved globally and can be reused.
-## Use wallets in a program
+### Use wallets in a program
-In the program Designer, you can assign and manage wallets directly in the program view.
+Once a wallet is created or assigned, you can manage it directly in the program view.
-Building blocks panel:
-- View all available wallets and their status.
-- Assign a wallet to the program.
-- Create a new wallet using **+**.
-- Open a wallet to view its full configuration and manage its status.
+In the program Designer, you can:
+- view available wallets
+- assign a wallet to the program
+- create a new wallet using **+**
+- open a wallet to view its configuration
-**Wallets** section:
-- View wallets assigned to the program.
-- Edit or unassign a wallet.
-- Assign an existing wallet or create a new one using **+**.
-- When creating a wallet, you can enter a name and **Save as Draft**, or use **Advanced options** to open the full wallet builder.
-- Assign a tier structure to a wallet.
+In the **Wallets** section:
+- view assigned wallets
+- edit or unassign a wallet
+- assign an existing wallet or create a new one
+Wallets are global objects. Assigning them to a program does not create a copy.
-Wallets are global objects, so assigning them to a program does not create a copy.
-
-Changes to a wallet apply everywhere it is used.
-
-Unassigning a wallet removes it from the program but it does not delete it.
+Changes apply everywhere the wallet is used.
+Unassigning a wallet removes it from the program but does not delete it.
## Managing wallets
Go to **Loyalty hub** > **Wallets**.
-After you create a wallet, it appears in the **Wallets** sectio.
+After you create a wallet, it appears in the **Wallets** section.
Use the **three-dot menu (⋮)** to:
- - Activate or deactivate a wallet
- - Edit the wallet
- - Delete the wallet
+- activate or deactivate a wallet
+- edit the wallet
+- delete the wallet
+
+Active wallets can be used in loyalty programs. Deactivated wallets remain available but cannot be used until reactivated.
-Click on a wallet to check its configuration details.
+Click a wallet to view its configuration details.
\ No newline at end of file
From 823d9dd1c4772eb7b2ab5b2f3ab11e6faf1c94fa Mon Sep 17 00:00:00 2001
From: MaciekVoucherify <130568368+MaciekVoucherify@users.noreply.github.com>
Date: Wed, 6 May 2026 16:48:50 +0200
Subject: [PATCH 5/6] Update point-wallet-builder.mdx
---
documentation/build/point-wallet-builder.mdx | 354 +++++++++++--------
1 file changed, 214 insertions(+), 140 deletions(-)
diff --git a/documentation/build/point-wallet-builder.mdx b/documentation/build/point-wallet-builder.mdx
index 9cec12493..6f3f5a718 100644
--- a/documentation/build/point-wallet-builder.mdx
+++ b/documentation/build/point-wallet-builder.mdx
@@ -4,17 +4,17 @@ description: Configure and manage point wallets
keywords: ['point wallet', 'wallet builder', 'pending points', 'point expiration', 'pay with points', 'earning limits', 'spending limits']
---
+import MetaConfig from '/snippets/metadata-configuration.mdx'
+
Point wallets control how points are earned, stored, spent, and expire.
-Go to **Loyalty hub** > **Wallets** and use **Create wallet**.
+Go to **Loyalty hub** > **Wallets** to **Create wallet**.
## Create a wallet
-The wallet builder walks you through several steps. Each step controls a specific part of the points logic.
-
-Some settings depend on each other. If something is incompatible, you will see an **Action required** message.
+Some settings depend on each other. If something is incompatible, you will see an Action required message.
-You can also use **Save draft** and finish the wallet setup later.
+You can also **Save draft** and finish the wallet setup later.
@@ -23,13 +23,13 @@ You can also use **Save draft** and finish the wallet setup later.
### General settings
Define the basic behavior of the wallet:
-- **Type** - **Individual**: points are assigned to individual customers
-- **Allow card balance to go below zero**: allows customers' point balance to go below zero
+- **Type** - **Individual**: points are assigned to individual customers.
+- **Allow card balance to go below zero**: customers' point balance can go below zero.
-This setting affects refunds and points expiration.
-Some options, such as revoking points below zero or expiration rules, depend on it.
+This setting affects refunds and points expiration. Some options, such as revoking points below zero or expiration rules, depend on it.
+
@@ -39,16 +39,18 @@ Some options, such as revoking points below zero or expiration rules, depend on
### Code config
Define how wallet-related codes are generated:
-- **Charset**: select a predefined set or define your own
-- **Code length**: defines how many random characters the code contains
-- **Pattern**: create a custom structure using placeholders
-- **#** is replaced with a random character from the selected charset and overrides code length
-- **Prefix** and **Postfix**: optional values added at the beginning or end of the code
+- **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.
+
@@ -62,45 +64,53 @@ Define when points expire.
+
Points never expire. No additional setup is required.
+
+
Points expire after a defined period from when they are earned.
-- **Expiration period**
-- **Period unit**: Day (max 90), Month (max 12), Year (max 5)
-- **Expiration rounding**: No rounding, End of month, End of quarter, End of half-year, End of year, End of particular month
+- **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**.
+
+
Points expire on selected dates each year.
-Select **Month** and **Day of the month** and use **Add date**.
+Select **Month** and **Day of the month** to **Add date**.
Add at least one date. You can define up to 20 expiration dates.
+
+
Points expire after a period of inactivity.
-- **Inactivity period**
-- **Period unit**: Day (max 90), Month (max 12), Year (max 1)
+- **Inactivity period**: how long points remain valid without activity.
+- **Period unit**: day (max 90), month (max 12), year (max 1).
Activity types:
-- **Earning activity**
-- **Spending activity**
-- **Custom activity**: add up to 20 custom events
+- **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.
-Select at least one activity type. Only selected activities reset the inactivity timer.
-Points expiration is available only when **Allow card balance to go below zero** is disabled.
-If negative balance is enabled, only **No expiration** is available.
+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.
+
@@ -114,43 +124,51 @@ Define when earned points become available.
+
Points activate immediately after earning.
+
+
Points activate after a defined time from when they are earned.
-- **Waiting period**
-- **Period unit**: Day (max 90), Month (max 12), Year (max 1)
+- **Waiting period**: how long points remain pending before activation.
+- **Period unit**: day (max 90), month (max 12), year (max 1).
+
+
Points activate on selected calendar dates.
-Select **Month** and **Day of the month** and use **Add date**.
+Select **Month** and **Day of the month** to **Add date**.
Add at least one date. You can define up to 20 activation dates.
+
-Points activate after selected events occur and the defined period passes.
-- **Cancellation period**
-- **Period unit**: Day (max 90), Month (max 12), Year (max 1)
+Points remain pending after selected events occur and activate after the defined cancellation period passes.
+
+- **Cancellation period**: defines how long points remain pending before activation is finalized.
+- **Period unit**: day (max 90), month (max 12), year (max 1).
-Select **Custom event** and use **Add activity**.
+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.
+
-Pending points can't be spent until they are activated. Activation moves points from pending to the active balance.
+Pending points can't be spent until they're activated. Activation moves points from pending to the active balance.
-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.
+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.
+
@@ -161,22 +179,46 @@ Choose a different pending points type if you need to revoke points before activ
Control how customers earn points.
-Both **Global earning limit** and **Transactions earning limit** can apply at the same time. The more restrictive condition applies.
+Both **Global earning limit** and **Transactions earning limit** can apply at the same time, and the more restrictive condition applies.
-- **No limit**
-- **Limited**
- - **Balance-based**
- - **Time-based**
+
+Defines the overall limit on points a customer can earn.
+
+- **No limit**: customers can earn an unlimited number of points.
+
+- **Limited**: customers 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 customer can have at any time.
+
+ **Max balance**: defines the maximum active point balance a customer can reach.
+
+- **Time-based**: limits how many points a customer can earn within a selected time period.
+
+ **Period unit**: defines the earning period (day, week, month, quarter, year).
+
+ **Max points per period**: defines the maximum number of points a customer can earn during the selected period.
+
-- **No limit**
-- **Limited**
- - **Max points earned per transaction**
- - **Min amount spent per transaction**
+
+Defines how many points can be earned in a transaction.
+
+- **No limit**: customers can earn an unlimited number of points in one transaction.
+
+- **Limited**: customers 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 customer can earn in a single transaction.
+
+**Min amount spent per transaction**: defines the minimum transaction amount required to earn points.
+
@@ -189,21 +231,44 @@ Both **Global earning limit** and **Transactions earning limit** can apply at th
Control how customers spend points.
-Both **Global spending limit** and **Transactions spending limit** can apply at the same time. The more restrictive condition applies.
+Both **Global spending limit** and **Transactions spending limit** can apply at the same time, and the more restrictive condition applies.
-- **No limit**
-- **Limited**
- - **Spending-based**
- - **Time-based**
+
+Defines the overall limit on how many points a customer can spend.
+
+- **No limit**: customers can spend an unlimited number of points.
+
+- **Limited**: customers 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 customer can spend across all transactions.
+
+ **Max lifetime spending**: defines the maximum total number of points a customer can spend.
+
+- **Time-based**: limits how many points a customer can spend within a selected time period.
+
+ **Period unit**: defines the spending period (day, week, month, quarter, year).
+
+ **Max points per period**: defines the maximum number of points a customer can spend during the selected period.
+
-- **No limit**
-- **Limited**
- - **Max points to spend per transaction**
+
+Defines how many points can be spent in a single transaction.
+
+- **No limit**: customers can spend an unlimited number of points in a single transaction.
+
+- **Limited**: customers 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 customer can spend in a single transaction.
+
@@ -216,29 +281,24 @@ Both **Global spending limit** and **Transactions spending limit** can apply at
Configure how customers can use points to pay for orders.
-- **Enable pay with points** to allow payments using points
+**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)
-- **Points needed**: number of points required to pay for that unit
+- **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.
-Example:
-- `111` means 111 points pay for 1 unit (for example, 1 cent in USD)
+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**
+- 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.
-
-If **Enable pay with points** is selected, the formula is required.
-
-
@@ -252,77 +312,60 @@ Control how refunds affect points.
-- **No refund**
-- **Refundable**
- - **Refund all**
- - **Refund by item**
- - **Refund by amount**
-
-
-- **Keep points**
-- **Revoke points**
- - **From balance**
- - **Stop at zero**
- - **Allow negative**
- - **From pending**
+Defines whether points used in a transaction are returned after a refund.
-
-Allowing negative balance requires enabling **Allow card balance to go below zero**.
+- **No refund**: spent points are not returned.
-If this setting is disabled, **Allow negative** is not available.
+- **Refundable**: spent points can be returned after a refund.
-Revoking from pending requires **Pending points** not set to **Immediate**.
-
+When **Refundable** is selected, configure the refund type:
-
+**Refund all**: returns all spent points.
-
+**Refund by item**: returns points related only to refunded items.
-
+**Refund by amount**: returns points proportionally to the refunded amount.
-
+
-### Metadata
+
+
+Defines whether points earned from a transaction are kept or revoked after a refund.
-Define additional properties for the wallet.
+- **Keep points**: earned points remain unchanged after the refund.
-The metadata structure must match the schema defined in **Project settings**.
+- **Revoke points**: earned points are removed after the refund.
-The main view displays existing metadata keys and their types.
+When **Revoke points** is selected, configure the revocation source:
-- Use **Reload schema** to refresh the list of available properties
+- **From balance**: revokes points from the active balance.
-There are two ways to work with metadata:
+- **From pending**: revokes points only from pending points.
-- **Add unknown property**
- Adds a metadata entry directly in the wallet.
- Enter the **property name (key)** and select the **value type**.
- The property appears in the list as **unknown** until it is added to the schema.
+When **From balance** is selected, configure the revocation behavior:
-- **Add to schema**
- Creates a new metadata definition.
- This opens the metadata builder, where you define:
- - whether the property is **required** or **optional**
- - whether it contains **single** or **multiple** values
- - the **type** (for example: String, Number, Date, Datetime, Flag, Image URL, Object)
- - optional validation rules (for example: length or allowed values)
+ **Stop at zero**: points are revoked until the balance reaches zero.
- After saving, the property:
- - is added to the **project metadata schema**
- - becomes available in the wallet metadata list
- - is stored as a reusable definition
+ **Allow negative**: points are revoked even if the balance becomes negative.
-Metadata definitions are managed in **Project settings**.
+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**.
-You cannot remove metadata from a single wallet.
-To remove or edit a property, update the metadata schema in Project settings.
+
-Changes apply to all wallets using that schema.
+
-
+
+
+
+
+
+
+### Metadata
+
+
@@ -332,18 +375,18 @@ Changes apply to all wallets using that schema.
Review your configuration before saving.
-- If everything is valid, **Save** becomes available
-- If something is incompatible, you will see **Action required**
-- Use **Go to step** to return to a section and fix issues
-- You can also use **Save draft**
+- If everything is valid, **Save** becomes available.
+- If something is incompatible, you will see Action required.
+- Use **Go to step** to return to any section and make changes.
+- You can also **Save draft** of the wallet.
-Once saved, the wallet is created in an **active** state and can be used in loyalty programs.
+Once saved, the wallet is created in an active state and can be used in loyalty programs.
-If you use **Save draft**, the wallet is saved in a **draft** state and can be completed later.
+If you use **Save draft**, the wallet is saved in draft status and can be completed later.
## Wallets in loyalty programs
@@ -351,35 +394,32 @@ You can create and manage wallets directly while working on a loyalty program in
### Create a wallet in a loyalty program
-To create a wallet within a program, use the **Building Blocks** panel.
-
In the **Building Blocks** panel, use **+** next to **Wallets**.
This opens the same wallet builder used in the **Wallets** section.
-The wallet is created within the program and can be assigned immediately. It is still saved globally and can be reused.
+The wallet is created while you are working inside a program. You can assign it to the program immediately. The wallet is still saved globally and can be reused.
### Use wallets in a program
-Once a wallet is created or assigned, you can manage it directly in the program view.
+In the program Designer, you can assign and manage wallets directly in the program view.
-In the program Designer, you can:
-- view available wallets
-- assign a wallet to the program
-- create a new wallet using **+**
-- open a wallet to view its configuration
+In the **Building Blocks** panel, you can:
+- view all available wallets and their status
+- assign a wallet to the program
+- create a new wallet using **+**
+- open a wallet to view its full configuration and manage its status
-In the **Wallets** section:
-- view assigned wallets
-- edit or unassign a wallet
-- assign an existing wallet or create a new one
+In the **Wallets** section, you can:
+- view wallets assigned to the program
+- edit or unassign a wallet
+- assign an existing wallet or create a new one
+- assign a tier structure to a wallet
-Wallets are global objects. Assigning them to a program does not create a copy.
-Changes apply everywhere the wallet is used.
+Wallets are global objects, so assigning them to a program does not create a copy. Changes to a wallet apply everywhere it is used. Unassigning a wallet removes it from the program but does not delete it.
-Unassigning a wallet removes it from the program but does not delete it.
## Managing wallets
@@ -389,10 +429,44 @@ Go to **Loyalty hub** > **Wallets**.
After you create a wallet, it appears in the **Wallets** section.
Use the **three-dot menu (⋮)** to:
-- activate or deactivate a wallet
-- edit the wallet
-- delete the wallet
+- activate or deactivate a wallet
+- edit the wallet
+- delete the wallet
+
+Active wallets can be used in loyalty programs.
+
+Deactivated wallets remain available but cannot be used until reactivated.
+
+Click on a wallet to check its configuration details.
+
+## Related features
+
+Wallets can be combined with the following features to build more advanced loyalty program flows.
+
+
+
+
+
+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.
+
+
+
+
+
+Wallets can be assigned directly to loyalty programs in the [Designer](placeholder).
+
+The same wallet can be reused across multiple programs.
+
+
+
+
+
+You can assign a [tier structure](placeholder) to a wallet from the program view.
+
+Tier structures can be used together with wallets to build tier-based loyalty programs.
-Active wallets can be used in loyalty programs. Deactivated wallets remain available but cannot be used until reactivated.
+
-Click a wallet to view its configuration details.
\ No newline at end of file
+
\ No newline at end of file
From b2da343374f92693e7a13755c3e5830bd7bcc7a2 Mon Sep 17 00:00:00 2001
From: MaciekVoucherify <130568368+MaciekVoucherify@users.noreply.github.com>
Date: Mon, 15 Jun 2026 14:13:22 +0200
Subject: [PATCH 6/6] Update point-wallet-builder.mdx
---
documentation/build/point-wallet-builder.mdx | 2 ++
1 file changed, 2 insertions(+)
diff --git a/documentation/build/point-wallet-builder.mdx b/documentation/build/point-wallet-builder.mdx
index 6f3f5a718..497687881 100644
--- a/documentation/build/point-wallet-builder.mdx
+++ b/documentation/build/point-wallet-builder.mdx
@@ -111,6 +111,8 @@ Select at least one activity type. Only the selected activities reset the inacti
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 wallet configuration use the time zone configured in project settings. They are not calculated in UTC.
+