# Wallet Types and Configuration

## Overview

Wallet types define how balances work in your loyalty program.

Each wallet can have its own unit names, expiration rules, pending logic, limits, and status.

<figure><img src="/files/kyd93SUYOsHPAJz0xUJx" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Each program needs at least one active wallet.

The default wallet cannot be deactivated.
{% endhint %}

***

### Create a wallet type

{% stepper %}
{% step %}
Go to **Wallets** -> **Types of Wallets**.
{% endstep %}

{% step %}
Click **ADD NEW WALLET TYPE**.
{% endstep %}

{% step %}
Fill in the required fields.
{% endstep %}

{% step %}
Set the Wallet Type status to **Active**.
{% endstep %}

{% step %}
Click **ADD WALLET TYPE**.
{% endstep %}
{% endstepper %}

***

### What you can configure

Wallet types let you define:

* Basic wallet details, translations, and internal code
* Unit labels, expiration rules, pending time, and balance limits
* Wallet availability, negative balance support, and import or export operations

### Basic settings

Use **Basic settings** to define the wallet identity and labels.

<figure><img src="/files/n3jVJljCKA3uZq7JmiGt" alt=""><figcaption></figcaption></figure>

* **Wallet name** — Display name of the wallet
* **Wallet description** — Short internal or customer-facing description
* **Add translation** — Additional language versions for the name and description
* **Wallet code** — Internal wallet identifier

### Unit settings

Use **Unit settings** to define how wallet units behave.

<figure><img src="/files/BUgJahHsnX7hu7gd2X2h" alt=""><figcaption></figcaption></figure>

* **Unit singular name** — Singular unit label, for example `Star`
* **Unit plural name** — Plural unit label, for example `Stars`
* **Unit expiration method** — When granted units expire
* **Unit pending method** — How long granted units stay locked
* **Global units limitation** — Maximum units granted across the whole program
* **Member units limitation** — Maximum units granted to one member

### Wallet type status

<figure><img src="/files/UU227XHrJY9CxT5xkb5w" alt=""><figcaption></figcaption></figure>

Use **Active** to control whether the wallet is available.

{% hint style="info" %}
After you create a wallet, activation can take a few minutes.
{% endhint %}

{% hint style="info" %}
The **Active** toggle is not available for the default wallet.
{% endhint %}

***

### Unit lifecycle rules

This section controls when units become available and when they expire.

#### Unit expiration method

Choose when granted units expire.

<figure><img src="/files/MXVN0zc4ntD8DYrmxDJB" alt="" width="563"><figcaption></figcaption></figure>

* **No expiration** — Units never expire
* **After X days** — Units expire after a fixed number of days
* **At the end of the month** — Units expire on the last day of the month
* **At the end of the X-th year** — Units expire at the end of the selected year
* **Annual expiration on a chosen date** — Units expire every year on the selected date

#### Unit pending method

Use pending to delay unit availability.

Pending units stay locked until the waiting period ends.

<figure><img src="/files/7AgKZ4BAeZhm9pHUHBhS" alt="" width="563"><figcaption></figcaption></figure>

* **No pending** — Units are available immediately
* **Pending for X days** — Units stay locked for a defined period

After the pending period ends, units become active automatically.

{% hint style="info" %}
**Pending affects expiration differently depending on the method:**

<img src="/files/8xq4K7CWgvta0xb6fLdN" alt="" data-size="original">

* **After X days** — The pending period extends the total time before expiration
* **At the end of the month or year** — Pending does not change the final expiration date
  {% endhint %}

***

### Transfer limits

Use limits to control how many units can be granted automatically.

You can configure:

* **Global units limitation** — Max units granted across all members
* **Member units limitation** — Max units granted to one member

If both limits are enabled, both are enforced.

The transfer is rejected if it exceeds either one.

These limits apply to automatic transfers, such as campaign effects.

You can still adjust units manually when needed.

{% hint style="info" %}
If an automatic transfer is canceled, the units return to the pool.
{% endhint %}

### Negative points balance

You can optionally allow a wallet balance to go below zero.

<figure><img src="/files/3SLfZP1jeNg0COAOoukO" alt=""><figcaption></figcaption></figure>

This lets members spend units even without enough available balance.

In practice, they borrow units from the business.

{% hint style="danger" %}
Use this option carefully! Negative balances can create financial exposure and abuse risk.
{% endhint %}

{% hint style="success" %}
**Good practices for negative balances:**

* Review all campaigns that grant units
* Set accrual limits to reduce abuse risk
* Monitor wallet balances for unusual negative spikes
  {% endhint %}

***

### Import, export, and copy wallet types

You can export and import wallet types as `.json` files.

#### Export wallet types

{% stepper %}
{% step %}
Go to **Wallets** -> **Types of Wallets**.
{% endstep %}

{% step %}
Click **SELECT TO EXPORT**.
{% endstep %}

{% step %}
Select the wallet types to export.
{% endstep %}

{% step %}
Click **EXPORT TO .JSON FILE (X)**.
{% endstep %}
{% endstepper %}

#### Import wallet types

{% stepper %}
{% step %}
Go to **Wallets** -> **Types of Wallets**.
{% endstep %}

{% step %}
Click **ADD WALLET TYPE** -> **Import wallet types**.
{% endstep %}

{% step %}
Upload the `.json` file in the popup window.
{% endstep %}

{% step %}
Click **IMPORT**.
{% endstep %}

{% step %}
Review the import results.
{% endstep %}
{% endstepper %}

#### Copy wallet types to another tenant

{% stepper %}
{% step %}
Go to **Wallets** -> **Types of Wallets**.
{% endstep %}

{% step %}
Click **SELECT TO EXPORT**.
{% endstep %}

{% step %}
Select the wallet types to copy.
{% endstep %}

{% step %}
Click **Export wallets to 'Different tenant' ->** Select the targeted tenant.
{% endstep %}

{% step %}
Click **Copy `Wallets and view the target tenant`**.
{% endstep %}

{% step %}
Review the copied wallet types in the target tenant.
{% endstep %}
{% endstepper %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.openloyalty.io/main-features/wallets/wallet-types-and-configuration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
