> ## Documentation Index
> Fetch the complete documentation index at: https://help-loyalife.xoxoday.com/llms.txt
> Use this file to discover all available pages before exploring further.

# v7.23 — February 2026

> Loyalife v7.23 standardises decimal point calculations, expands transaction API capabilities, introduces role-based report sharing, and adds four new custom reports.

# v7.23 — February 2026

**Released:** February 2026

## Points & Calculations

### Decimal-Based Point Calculation

Points are now calculated, stored, and reported using decimal values as the standard:

* Rule engine computes points to 2 decimal places; stored with **1 decimal place** (single rounding applied at the second decimal)
* **Ceiling rounding examples:** 13.68 → 13.70; 13.35 → 13.40
* **Floor rounding example:** 13.32 → 13.30
* Point spoilage displays up to 2 decimal places (e.g., 0.04)
* Stored values are used consistently across balances and reports — no additional rounding occurs during display
* **Historical data is not recalculated or migrated**

**Modules affected:** Member balances, Reports, Rule Engine, Approval Workflow (time-bound rules), Dashboard accrual metrics, Transaction Amount, Redeem Points, Peer Transfer, API Transactions (Pay with Rewards, Cashback, BNS), Points Expiry, Communication credit events

**Excluded modules:** Tier Bonus, Campaign Bonus, Manual Add/Remove Points, BNS Upload, Bulk Point Upload, Referral

### Accrual Reversal via Bulk Upload

* Negative values in the upload file are accepted exclusively for accrual reversals
* All other transaction types continue to require non-negative values
* File handling updated from "Debit – Accrual Reversal" to "Credit – Accrual Reversal"

***

## Transaction API

### Additional Loyalty Transaction Types Parameter

A new `AdditionalLoyaltyTxnTypes` parameter allows passing multiple loyalty transaction types in a single API call:

* Values are comma-separated: e.g., `"AdditionalLoyaltyTxnTypes": "1,8"`
* The system evaluates both `LoyaltyTxnType` and `AdditionalLoyaltyTxnTypes` together
* Invalid or incorrect combinations return `ErrorCode 204: "No Transaction details are available"`
* `LoyaltyTxnType` continues to accept only a single value

***

## Reports

### View All Generated Reports

All report types are now accessible from a unified view — Auto-generated, Manual, Exported, One-time, Custom, and Shared:

* Pagination adapts based on available data; horizontal scroll enabled when columns exceed viewport width
* **Member search** is enabled when the report contains Member ID, Relation Reference, or Relation Reference fields
* **Date filter** is enabled when the report contains Processing Date or Enrollment Date

### Empty Report Tabs Hidden

* Report tabs (e.g., Transaction, Members) no longer appear when no data is available for that section
* Users only see tabs with available report data

### Transaction Summary Default View

* No automatic date range is pre-selected; the system displays the **latest 10 transactions** by default (most recent first)
* Helper text shown: *"Showing latest 10 transactions. Select a date range to view more"*
* When a date range is applied and results exceed 10 records, pagination activates (10 per page)

### Role-Based Report Sharing

* Reports can now be shared at the **role level**, giving access to all users in that role
* Individual user sharing continues to work as before
* Reports shared to a role without "View Report" permission will only become visible once that permission is granted to the role

### Persistent Column Configuration

* Column preferences in the Member Transaction Summary are saved per user
* Configuration persists across logouts, browser refreshes, and session timeouts
* Default columns for first-time users: Transaction Date, Transaction Amount, Transaction Type

### Four New Custom Reports

* **Expiry Report** — member-level points expiry with columns for Member ID, BIN, Month, Year, Earning, Bonus Rewards, Rewards Expired, and Expiry Status
* **Projected Expiry Report** — forward-looking version of the Expiry Report showing points expiring in future months (up to 3 years of schedule data)
* **Detailed Customer Profile Report** — customisable profile columns with support for monthly and custom date-range generation
* **Admin User Audit Report** — captures User ID (email), Activity, Date, Time, IP, Device, and Browser from the Loyalife audit trail; supports monthly and custom generation

***

## Security

### BDI Credential Encryption

* Client credentials (Client ID, Secret Key, Access Token, Refresh Token) are now encrypted using **SHA-256**

***

## Access Control

### Advanced Configuration Permissions

* Advanced Configuration is now restricted for default roles: **Program Admin**, **Program Manager**, and **Customer Executive**
* User-created custom roles continue to show the Advanced Configuration permission

***

## Rule Engine

### Dynamic Segment Linkage with Rule Groups

Rule Groups can now be linked to **Dynamic (Smart) Segments** for automatic member eligibility:

* When a member attribute changes (e.g., tier upgrade), a MemberProfileUpdated event triggers the Segment Evaluation Service
* The service re-evaluates members against linked segments and updates membership automatically
* Members become eligible or ineligible for associated Rule Groups without manual intervention
* **Constraint:** Once a segment is configured to a Rule Group, it cannot be changed

***

## Additional Improvements

* **MemberActivation API** now returns specific error messages per scenario (e.g., *"Member is already active"*, *"Member is suspended"*, *"Member is cancelled"*) instead of generic errors
* **BNS and CRD email notifications** now include an error log link so recipients can view failure reasons directly from the notification
* **Disabled template display** in campaigns: disabled templates appear in a locked state with the tooltip *"This template is disabled and cannot be selected"*
* **Inactive Rule Groups** (time-bound, expired): editing is now prevented; groups appear as read-only with an expiry message
* **Cashback requests**: no daily limit — multiple cashback requests are allowed per day as long as sufficient points are available; existing *Pay with Rewards* restriction (one active request at a time) is unchanged
* **Max Points field** now enforces integer-only input; decimal values (e.g., 10.50) are rejected
* **Loyalife branding** is now optionally hideable at environment and program level via a configuration toggle
