pointsThe loyalty balance is plain points.store_creditThe loyalty balance is Mage store credit, denominated in money.
This is Mage’s internal store credit, not Shopify native store credit. The loyalty engine treats both modes the same way, so points and store-credit shops share one API.
How values are denominated
Inpoints mode, every points field is a whole number of points. In store_credit mode, the same fields hold the balance in the currency’s minor units. For most currencies that means cents, so 450 means 4.50 in the shop currency. For zero-decimal currencies such as JPY and KRW the factor is 1, so 450 means 450 yen.
This applies to every points-named field the API returns or accepts, including current_points, lifetime_points, redeemed_points, a reward’s points_cost, an earning rule’s points, the adjustment on a points adjustment, and a tier’s threshold.
Detecting the mode
Responses that carry a loyalty value tell you the mode and currency so you can format correctly. Single-resource and list responses includeloyalty_mode and currency in their meta, and the customer object carries loyalty_mode in its attributes.
loyalty_mode is always one of points or store_credit. currency is the shop’s ISO 4217 code (for example GBP), and defaults to USD when the shop has not set one.
The store_credit object
On store-credit shops, the customer object includes astore_credit object with pre-converted representations of the balance, so you do not have to do the minor-unit math yourself. In points mode it is null.
Credit companions on write responses
Endpoints that report a change to a customer’s balance (adjusting points, awarding an earning rule, recording a custom action, purchasing a reward) returncredit_* companion fields alongside the raw minor-unit numbers. Each companion is the major-unit value as a decimal string. Companions appear only in store-credit mode; in points mode these fields are absent.
For example, a points adjustment of 500 on a GBP store-credit shop returns:
Redeeming rewards
Inpoints mode a reward is redeemed with Purchase a reward, whether it is a standard fixed-cost reward or a flexible one.
In store_credit mode, only flexible rewards can be redeemed. A standard fixed-cost reward returns 403 Forbidden with the detail This reward cannot be redeemed in store credit mode. A flexible reward lets the customer choose how much credit to spend, and the server pins the conversion at 1 minor unit of credit to 1 minor unit of discount. Read a reward’s redemption_mode and flexible_config from List rewards to know which flow applies and what range is valid.
Endpoints that carry mode context
These responses includeloyalty_mode and currency:
- Get a customer, List customers, Enroll a customer, Update a customer (customer object plus list
meta) - Adjust points
- List and get earning history
- List and get reward history
- List earning rules, Award an earning rule, Record a custom action
- List rewards, Purchase a reward
- List VIP tiers, Get a VIP tier
- The
points.earned,points.redeemed,customer.tier_upgrade, andcustomer.tier_downgradewebhook events