Royal Glow internal docs · now fully interactive — Steps, API tables, file trees & live status
Royal Glow Docs
Features

Loyalty — Gems

How customers earn gems on what they spend and redeem them for specific catalogue services — the rules behind earning, expiry, and redemption.

Loyalty — Gems

Gems are Royal Glow's loyalty currency. Customers earn them automatically when they pay for services, and spend them on specific services from a redeemable catalogue. It is a simple "spend a little, get a little back" programme that rewards repeat visits.

Gems are not a rupee discount. A customer redeems gems against a specific service (e.g. "70 gems for a Classic Manicure"), not as money off a bill.

What it is

A way to turn regular spending into free services over time. Every paid service visit quietly adds gems to the customer's balance. Once they have enough, they can claim a service from the gems catalogue without paying for it.

How it works

Earn

When a service booking is completed and invoiced, the customer earns 1 gem for every ₹100 invoiced, rounded down (floor). A ₹1,300 service invoice earns 13 gems.

See the balance

The customer's gems balance, lifetime totals, and transaction history appear on their /gems page, alongside the catalogue of services they can redeem.

Redeem

The customer picks a catalogue service their balance covers; the gems are deducted and the service is theirs.

Expire

Gems expire 365 days after they are earned. A background job sweeps expired gems automatically.

A quick example

ActionGems
Pays a ₹1,300 service invoice+13
Pays a ₹2,500 service invoice+25
Redeems a Classic Manicure−70

Earning always rounds down: a ₹1,099 invoice earns 10 gems, not 10.99.

Rules

Gems cannot combine with offers. Gems and an offer cannot both be applied to the same booking — a customer uses one or the other, never both.

Loyalty transactions are typed earned, redeemed, expired, or adjusted. A brand-new customer's loyalty account is created on first read, so they see a zero balance rather than an error.

OpenReport an issue

Was this page helpful?

On this page