L
LoyaltyDocs

Earning Rules

Defining how bills become points — what a rule looks at, what it awards, priority and lifecycle — and managing rules in the app

Earning rules are your policy for turning customer activity into points. You decide what a bill has to match and how many points it earns — the platform applies it all automatically on every transaction. Rules are tenant-defined: members earn nothing until a rule is earning.

The Rules Page — Settings → Earning Rules

The list shows each rule with its status, priority, the date it went live and how many times it has applied. Pause stops a rule without losing it, Resume starts it again, Retire archives it — a retired rule keeps its history and can be brought back.

Status

Meaning

Earning

Evaluated on every matching bill

Paused

Kept as is, not evaluated

Draft

Being written; never evaluated

Scheduled

Waiting for its start date

Retired

Archived; can be restored

Points already awarded by a rule are never touched by editing, pausing or retiring it.

Writing a Rule — New Rule

Basics

Field

Notes

Default

Rule name

What this rule rewards, in a few words

—

Priority

Higher runs first

1000

Status

Earning / Paused / Draft

Draft

Live from / Stops on

When it starts and, optionally, when it stops

Today / never

What it looks at

Choose The whole bill — the bill is checked as a whole — or Each item on the bill — each line is checked on its own, so the rule can award points per line. Then add conditions; a rule needs at least one.

Part of a condition

Your options

Look at

This bill / This item (item rules only) / The member / The event / Your account

Field name

Any field your systems send with the bill, item, member or event

Test

is / is not / is more than / is at least / is less than / is at most / is one of / is none of / contains / starts with / ends with / is present

Value and Compare as

The value, compared as text, a number, or yes/no

What it awards

Award

What it does

Award points

A fixed number of points

Award a share of the bill

A share of the bill amount, e.g. 0.02 for 2%

Award a share, by category

A share of the bill, scoped by item category

Tier bonus

A multiplier for members in a tier, e.g. 1.5

Channel bonus

A multiplier for a sales channel, e.g. 1.2

Award points, held

Points that land locked until their waiting period passes

Work it out with an expression

A formula over the bill's fields, with a fallback value if it cannot be worked out

Points from this rule

Expire after — how long this rule's points live. Leave blank to use the tenant default from Settings → Accrual.

A saved rule is live within a minute.

How Rules Combine on One Purchase

  1. Every matching rule contributes — their points add up, highest priority first, stopping after the number of matches you allow under Settings → Accrual (all, by default).
  2. The customer's tier multiplier applies (see Tiers & Multipliers).
  3. Your ceilings trim any excess — per purchase, per day, per month, per tier, per event type — and every trim is recorded transparently.
  4. If rounding is on, awards are rounded to whole points, per rule or on the bill's total.

Running Promotions

  • Add a promotion as its own rule — it stacks on top of everyday earning and you pause or retire it when the promotion ends.
  • Give it its own lifetime — 30-day bonus points create urgency without touching how regular points behave.
  • Scope it with conditions and dates — only weekends, only a category, only above a bill size, only this month.

For developers

Rules are created with [create rule](https://prod.freecustomer.in/api/v2/docs#tag/loyalty/POST/api/v2/loyalty/rule), listed, read and replaced with the `…/rules` endpoints, moved through their lifecycle with [change rule status](https://prod.freecustomer.in/api/v2/docs#tag/loyalty/PATCH/api/v2/loyalty/rules/{rule_id}/status), and measured with [rule statistics](https://prod.freecustomer.in/api/v2/docs#tag/loyalty/GET/api/v2/loyalty/rules/statistics) — executions and points per rule over a recent window. Updating a rule replaces its conditions and actions wholesale. Rule-level `expiry_duration_seconds` and `metadata.maturity_delay_seconds` override the tenant defaults.

Was this page helpful?

Last updated on

On this page