# Managing Unit Transfers

## Overview

The **Managing Unit Transfers** page lets you take actions on existing unit transfers — whether they were generated by the system or created manually — and inspect detailed history for audit or correction purposes.\
From here, you can cancel, expire, block, or update information attached to unit transfers.

***

## What you can do

From this view or the member’s wallet view, you can:

* **Activate a pending transfer** — make a pending transfer live before its scheduled time
* **Cancel a transfer** — reverse its impact, if possible
* **Expire a transfer** — mark it as expired early when an expiration date exists
* **Block units** — reserve units without deducting balance
* **Unblock units** — cancel a blocked transfer
* **Edit custom attributes** — add or update metadata attached to the transfer
* **Show details** — view complete audit information
* **Run bulk actions** — apply activate, cancel, or expire actions to all filtered transfers

***

### Activate pending transfers

Some unit transfers are created in a **pending** state — meaning they are scheduled and not yet applied to a member’s available balance.

* Pending transfers appear with **Pending: Yes** in the list.
* **Pending transfers do not affect available balance** until activated.
* You can activate a pending transfer manually via the **⋯ (more)** menu when needed.

To activate a pending transfer:

{% stepper %}
{% step %}
**Find the pending transfer**

In the list, look for transfers with **Pending: Yes**.
{% endstep %}

{% step %}
**Open actions**

Open the **⋯ (more)** menu for the transfer.

<figure><img src="https://2658975168-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcNVX03KZzmrGwJihLiEx%2Fuploads%2FfNPxtgCZvrAiNccGRIuM%2Fimage.png?alt=media&#x26;token=264b1ecc-9fe1-4f81-8ca7-6bf8f87aff86" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
**Activate**

Click **Activate**.
{% endstep %}

{% step %}
**Confirm**

Confirm the action.
{% endstep %}
{% endstepper %}

Activating a transfer makes the units available immediately, overriding the scheduled activation.

This is useful when you need to apply transfers sooner than originally planned.

***

### Cancel a transfer

Canceling removes the effect of a transfer **only if the member still has enough units available to reverse it**.

To cancel a transfer:

{% stepper %}
{% step %}
**Find the transfer**

Locate the transfer in the list.
{% endstep %}

{% step %}
**Open actions**

Open the **⋯ (more)** menu for that row.
{% endstep %}

{% step %}
**Cancel**

Select **Cancel**.

<figure><img src="https://2658975168-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcNVX03KZzmrGwJihLiEx%2Fuploads%2FYbQymqNMEgRosQKH0w5l%2Fimage.png?alt=media&#x26;token=c9f5866b-1cb7-4892-92b2-c71c060d4b80" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
**Confirm**

Confirm the action.

<figure><img src="https://2658975168-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcNVX03KZzmrGwJihLiEx%2Fuploads%2F9AvJTEqwLurApQOKMFly%2Fimage.png?alt=media&#x26;token=ab894aaf-f701-4fbc-8385-d3b6b15216af" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

{% hint style="warning" %}
**Note:** If a transfer has already been **partially spent or used**, and the wallet doesn’t have sufficient free units to reverse it fully, **cancellation may fail**. The system prevents cancellation in such cases to maintain correct balances.
{% endhint %}

***

### Expire a transfer

Use this when a transfer has an **Expires on** date and is still active.

{% stepper %}
{% step %}
**Find the transfer**

Locate an active transfer with an **Expires on** date.
{% endstep %}

{% step %}
**Open actions**

Open the **⋯ (more)** menu.
{% endstep %}

{% step %}
**Expire**

Click **Expire**.

<figure><img src="https://2658975168-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcNVX03KZzmrGwJihLiEx%2Fuploads%2F4QbUstDx4lEtKPogqyCK%2Fimage.png?alt=media&#x26;token=17a5fb81-f2e3-4fc5-ae96-cdce199af6fb" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
**Confirm**

Confirm the action.

<figure><img src="https://2658975168-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcNVX03KZzmrGwJihLiEx%2Fuploads%2FrI9U0BWhnPUFQCe4HvbQ%2Fimage.png?alt=media&#x26;token=aa31c2ed-8f14-4dab-b144-b66d5fe99ede" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

Expired transfers no longer influence available wallet units.

***

### Block and unblock units

**Block units** to reserve them (they remain in the balance but cannot be spent).

#### Block units

{% stepper %}
{% step %}
**Open Unit transfers or a member wallet**

Go to *Unit transfers* or open a specific member’s wallet view.
{% endstep %}

{% step %}
**Start blocking**

Open **Actions** and choose **Block units**.

<figure><img src="https://2658975168-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcNVX03KZzmrGwJihLiEx%2Fuploads%2FQyiYeghlPpS0Tl8jByMl%2Fimage.png?alt=media&#x26;token=0a5ed7b2-589c-45e6-8145-aefff012260b" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
**Fill in details**

Enter the member, wallet, and amount.

<figure><img src="https://2658975168-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcNVX03KZzmrGwJihLiEx%2Fuploads%2FcMWa5QlGT9EasDU4iDAd%2Fimage.png?alt=media&#x26;token=ed18c816-31b8-40e8-b037-969174f9be5d" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
**Confirm**

Confirm the action.
{% endstep %}
{% endstepper %}

#### Unblock units

To **unblock units**, cancel the blocked transfer.

{% stepper %}
{% step %}
**Find the blocked transfer**

Locate a transfer with type/state **blocked**.
{% endstep %}

{% step %}
**Cancel the block**

Open the **⋯ (more)** menu and select **Cancel**.
{% endstep %}

{% step %}
**Confirm**

Confirm the action.
{% endstep %}
{% endstepper %}

***

### Edit custom attributes

**Custom attributes** let you attach extra metadata to a unit transfer — like reasons, external references, or internal tags — without affecting core fields.

To edit custom attributes:

{% stepper %}
{% step %}
**Find the transfer**

Select the unit transfer in the list.
{% endstep %}

{% step %}
**Open actions**

Open the **⋯ (more)** menu.
{% endstep %}

{% step %}
**Edit custom attributes**

Choose **Edit custom attributes**.

<figure><img src="https://2658975168-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcNVX03KZzmrGwJihLiEx%2Fuploads%2FHJwJEttXL36pnIqCiTlo%2Fimage.png?alt=media&#x26;token=1bcf6820-4207-44f2-912a-4f1b162d34ed" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
**Update key-value pairs**

Add or update attributes (for example `reason: "data correction"` or `sourceSystem: "CRM"`).

<figure><img src="https://2658975168-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcNVX03KZzmrGwJihLiEx%2Fuploads%2FzVeeFYxjcHfFrtxclIaT%2Fimage.png?alt=media&#x26;token=6c47dab2-4c2e-4de3-b63f-5fdc47e0a813" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
**Save**

Save your changes.
{% endstep %}
{% endstepper %}

Custom attributes are useful for tracking business context, reporting insights, or external integrations.

***

### Bulk actions

You can apply operations to multiple transfers simultaneously using the **Actions** menu located at the top of the transfer list.

{% stepper %}
{% step %}
**Filter the list (Crucial Step)**

Before triggering a bulk action, you **must** refine your view. Since mass actions apply to the entire filtered result set, precision is key to avoiding unintended changes.

* **Establish a Point of Reference:** Use specific criteria to isolate your target data. Common anchors include a specific **Date Range**, a unique **Campaign Name**, or a **Member ID**.
* **Verify the Count:** Always check the total record count after filtering to ensure it matches your expectations before proceeding.

<figure><img src="https://2658975168-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcNVX03KZzmrGwJihLiEx%2Fuploads%2FzGtjcszvrOCwgkkZxJek%2Fimage.png?alt=media&#x26;token=37e2fd2e-86f7-4db5-96c3-fe657659567b" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
**Run an action**

Click the **Actions** button and select the required operation:

* **Activate filtered transfers**: Moves all pending transfers to an active state.
* **Cancel filtered transfers**: Cancels all transfers within the filtered parameters.
* **Manage filtered transfers**: Opens a detailed menu to adjust expiration settings for the filtered set:
  * *Expire units transfers immediately:* Forces an instant expiration.
  * *Expire units transfers on a chosen date:* Sets a custom expiration date/time that overrides default rules.
  * *Do not expire:* Disables expiration for the selected records.

<figure><img src="https://2658975168-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcNVX03KZzmrGwJihLiEx%2Fuploads%2FURxmdJleRYs5dhEwD3XD%2Fimage.png?alt=media&#x26;token=149f6022-62ee-49b1-bf36-4f439b520b5a" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
**Confirm and Audit**

After selecting an action, you can add an optional **comment** to the action for the audit trail. Once you click **Confirm** (or **Adjust expiration**), the system will process the changes in the background.

<figure><img src="https://2658975168-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcNVX03KZzmrGwJihLiEx%2Fuploads%2Fk1haAdG8x413CYm9fdBN%2Fimage.png?alt=media&#x26;token=0a28f499-57d5-434e-998f-07e549553b14" alt=""><figcaption></figcaption></figure>

* **Tracking**: You can monitor the progress and history of these tasks in the **Mass Actions Log** located under **Imports/Exports.**
  {% endstep %}
  {% endstepper %}

***

## Unit transfer types and states

Common types you’ll see in the list include:

* `adding` — units added
* `spending` — units spent
* `blocked` — units reserved
* `expired` — units that have expired
* `p2p_adding` / `p2p_spending` — peer-to-peer moves

Understanding the type helps interpret the event and decide which action (like cancel or expire) is appropriate.

***

## Tips

* When editing custom attributes, use clear key names and descriptive values for easier reporting and audit trails.
* Always filter before running bulk actions to avoid unintended changes.
* If cancellation fails, check whether the member’s wallet still has enough available units to cover the reversal.


---

# 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/unit-transfers/managing-unit-transfers.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.
