Benefit Module
June 17, 2026 · 5 min read
The Benefit Module adds expirable records with a point system that can be used to implement loyalty programs, reward points, subscriptions or digital wallets. Benefits can be granted to customers manually or automatically using the Online Fulfillment module.
#Benefit Types
A Benefit Type is a record that defines the behavior of its instances and groups them together. Think of it like a subscription plan or a loyalty progam. Each benefit type can be of two kinds:
- Loyalty-like - Used to grant points to customers. Most importantly, the benefit does not expire when points reach zero, however it will expire when the expiration date has passed. This is useful for loyalty programs where customers can earn and redeem points over time.
- Membership - Used for managing memberships or subscriptions. The benefit will expire when the expiration date has passed or when the points reach zero. This is useful for memberships where customers have a limited time to use their benefits.
Please note that points are an optional feature and may be omitted when not applicable for a given use case.
#Customer Groups
Benefit Type allows for the definition of customer groups. When a benefit is granted to a customer, they will be automatically added to the customer group defined in the record. Conversely, when a benefit expires, the customer will be removed from the group.
Since Customer Groups are a core feature of MedusaJS, this allows for:
- Scoping promotions to customers with a specific benefit
- Easy retrieval of customers with a specific benefit without the need for using the
Benefit ModuleAPIs
#Benefit Instances
A Benefit Instance is a record that represents a specific benefit granted to a customer. It is associated with a Benefit Type and has an expiration date and points. When a benefit instance expires, it status will be set to expired and it will no longer be usable.
#Benefit Transactions
Benefit Instances may receive transactions that increase or decrease its points or extend its expiration date.
The transaction has two key properties:
points_change- Positive or negative number that represents the change in points for the benefit instance.expiry_change- Positive or negative number that represents the change in expiration date for the benefit instance. The value is in days and will be added to the current expiration date.
The transaction system was implemented in order to reduce the number of issues with manual management of benefits as well as to provide a clear history of changes.
#Admin Dashboard Usage
Navigate to the "Benefits & Memberships" section in the admin sidebar to open the benefit management dashboard.