Scheme Rates
The rates object allows you to set the rules for how customers can earn and spend points against this scheme. Both earn and redemption objects are optional in a scheme setup.
"rates": {
"burn": null,
"earn": {
"fabulousretailer": {
"default": {
"description": "",
"name": "",
"product": null,
"maximumQuantityPerProduct": null,
"rates": [
{
"bonus": null,
"ceiling": null,
"floor": null,
"amount": 1,
"step": 100,
"offset": 50
}
],
"type": "STANDARD",
"roundPoints": {
"active": false
}
}
}
}
} "rates": {
"burn": {
"fabulousretailer": {
"default": {
"rates": [
{
"bonus": 0,
"ceiling": 99999,
"floor": 100,
"pointsBack": 0,
"rate": 1,
"step": 100
}
]
}
}
},
"earn": null
} "rates": {
"burn": {
"fabulousretailer": {
"default": {
"rates": [
{
"bonus": 0,
"ceiling": 99999,
"floor": 100,
"pointsBack": 0,
"rate": 1,
"step": 100
}
]
}
}
},
"earn": {
"fabulousretailer": {
"default": {
"rates": [
{
"amount": 1,
"step": 100
}
],
"type": "STANDARD"
}
}
}
}Earn Rates
Customers can earn points based on three setups:
- Standard (example: earn 1 point per £1 spent)
- Fixed Points (example: earn 100 points when you spend between £1,000-9,999, 250 points when you spend £10,000-19,999...)
- Points Per Spend (example: at a minimum of £5, for every £2 spent, up to 49.99, earn 1 point per £, at a minimum of £50, for every £1 spent, up to 99.99, earn 2 points per £...)
Standard
Using a type of Standard for your earn rate allows customers to earn a set number of points per pence spent on their basket. Three values are set for this configuration:
| Key | Description |
|---|---|
| amount | Number of points that are issued when the qualifying amount is met. This value must between 1 and 999999. |
| step | Amount that needs to be spent to earn the number of points specified. This is always in the lowest common denominator (pence or cents). |
| offset | Also known as grace amount. This optional value adds to the transaction value, increasing points earned. For example, use 50 to treat 10.60 spend as 11.10 when calculating base earn. |
Fixed Points
Use Fixed Points to set a predetermined number of points that customers will earn based on earn tiers. When the transaction earn is within the floor and ceiling for each tier, the fixed amount of points earned will be rewarded.
| Key | Description |
|---|---|
| ceiling | The maximum spend value to qualify for a given tier |
| floor | The minimum value that needs to be spent to qualify for the points amount in a given tier |
| amount | The points reward that will be credited to a loyalty account when the customer spends between the floor and ceiling in a given tier |
Points Per Spend
Earn tiers can be setup based on the transaction amount spent. As the spend increases, so are the points earned. In short, this feature allows for: For every x pence spent, up to y, earn z points.
| Key | Description |
|---|---|
| ceiling | The maximum spend value to qualify for a given tier |
| floor | The minimum value that needs to be spent to qualify for the given tier |
| amount | The number of points that will be earned by each value in the step key spent in this tier |
| step | The spending amount that triggers points issuance each time it's reached |
"earn": {
"fabulousretailer": {
"default": {
"description": "",
"name": "",
"product": null,
"maximumQuantityPerProduct": null,
"rates": [
{
"bonus": null,
"ceiling": null,
"floor": null,
"amount": 1,
"step": 100,
"offset": 0
}
],
"type": "STANDARD",
"roundPoints": {
"active": false
}
}
}
} "earn": {
"fabulousretailer": {
"default": {
"description": "",
"name": "",
"product": null,
"maximumQuantityPerProduct": null,
"rates": [
{
"bonus": null,
"ceiling": 9999,
"floor": 1000,
"amount": 100,
"step": null,
"offset": 0
},
{
"bonus": null,
"ceiling": 19999,
"floor": 10000,
"amount": 250,
"step": null,
"offset": 0
},
{
"bonus": null,
"ceiling": 29999,
"floor": 20000,
"amount": 400,
"step": null,
"offset": 0
},
{
"bonus": null,
"ceiling": 39999,
"floor": 30000,
"amount": 550,
"step": null,
"offset": 0
},
{
"bonus": null,
"ceiling": 999999,
"floor": 40000,
"amount": 750,
"step": null,
"offset": 0
}
],
"type": "FIXED",
"roundPoints": {
"active": false
}
}
}
} "earn": {
"fabulousretailer": {
"default": {
"description": "",
"name": "",
"product": null,
"maximumQuantityPerProduct": null,
"rates": [
{
"bonus": null,
"ceiling": 4999,
"floor": 500,
"amount": 1,
"step": 200,
"offset": 0
},
{
"bonus": null,
"ceiling": 9999,
"floor": 5000,
"amount": 1,
"step": 100,
"offset": 0
},
{
"bonus": null,
"ceiling": 99999,
"floor": 10000,
"amount": 2,
"step": 100,
"offset": 0
}
],
"type": "VARIABLE",
"roundPoints": {
"active": false
}
}
}
}Rounding
Define whether points should be rounded and by multiples of a number. This is especially useful for loyalty programmes where the retailer wants to restrict customers from earning an fractional number of points (such as 1.5 points).
Consider an example where customers earn 1 point for every 1.00 spent and the value of the redemption rate (value) of each point is equal 0.005. As points are earned, you want to ensure points are issued at a multiple of 2 so that there is no chance of having an odd number of points (potentially equating to 0.005).
- A customer spending 5.78 with this setup will earn six points
- If rounding was disabled, they would earn five points
- If the customer spent 6.78 with this setup, they will earn six points as well
- With rounding disabled, they would earn six points
This example will always produce a points earn value on the wallet open call to a multiple of 2 (2, 4, 6, 8, 10, 12 etc). To enable, set roundPoints.active to true and provide the toMultipleOf value.
"roundPoints": {
"active": true,
"toMultipleOf": 2
}
Rounding rules set in the scheme will only apply to base points earned through settled wallet transactions. Using goodwill API, a credit points API call or Customer Care to credit points to a loyalty account and campaigns with fixed or variable points will not be impacted by the scheme's base earn rounding rules.
Advanced Earn Rules
We can limit the number of individual products that can earn base earn points within a loyalty Scheme at a redemption partner (banner) level. This restriction is typically applied to prevent shoppers from purchasing items in bulk and accumulating excessive base earn points.
For example, the Fabulous Retailer sells multiple high value items and wants to limit the points earned on bulk purchases. The following maximum quantity of points can be set against redemption partners. Using a value of 10 will limit points earn to no more than 10 of the same UPC/SKU.
"earn": {
"fabulousretailer": {
"default": {
"maximumQuantityPerProduct": 10,
"rates": [
{
"bonus": null,
"ceiling": null,
"floor": null,
"amount": 1,
"step": 100,
"offset": 0
}
]
}
}
}Overrides & Complements
Overrides allow for a default base earn rate to be overridden by different rates. This requires an override key to be passed in the POS Connect Wallet Open API call. When that key is identified in the Scheme rules, the override rate will be used instead the base earn.
Complements allow for an addition to the default base earn rate using a Points Per Unit metric to differ from the standard base earn (of Points per £/$).
In the Schemes request payload, overrides and complements are set in the earn.unitsafename container.
"PointsEarnOverride": {
"description": "",
"name": "",
"product": null,
"maximumQuantityPerProduct": null,
"rates": [
{
"bonus": null,
"ceiling": null,
"floor": null,
"amount": 2,
"step": 100,
"offset": 50
}
],
"type": "STANDARD"
} "default": {
"description": "",
"name": "",
"product": null,
"maximumQuantityPerProduct": 15,
"rates": [
{
"bonus": null,
"ceiling": null,
"floor": null,
"amount": 1,
"step": 100,
"offset": 5
}
],
"type": "STANDARD",
"complementaryRates": [
"ExtraFuelPoints"
],
"roundPoints": {
"active": true,
"toMultipleOf": 2
}
}Child Unit Earn Rules
Unique points earn rules can be set for child units that will be used when customers make transactions are particular redemption partners. In case a child unit required points earn that was different than the main company unit, specific earn rates, overrides, complements and product lists can be setup for each redemption partner.
"fabulousretailer-banner2": {
"default": {
"description": "",
"name": "",
"product": {
"collections": [
{
"products": {
"allRequired": false,
"excluded": {
"groups": null,
"items": [
"245871",
"245873",
"245872"
],
"skus": null,
"tags": null
},
"included": {
"groups": null,
"items": [
"245865",
"245866",
"245867",
"245868",
"245869",
"245870",
"245871",
"245872",
"245873",
"245874",
"245875",
"245876",
"245877",
"245878",
"245881",
"245882",
"245883",
"245884",
"245885",
"245886",
"245887",
"245888",
"245889",
"245890",
"245891",
"245892",
"245893",
"245894",
"245895",
"245896",
"245897",
"245898",
"245899",
"245900",
"245901",
"245902",
"245903",
"245904",
"245905",
"245906",
"245907"
],
"skus": null,
"tags": null
}
}
}
],
"logicalOperator": "OR"
},
"maximumQuantityPerProduct": 1,
"rates": [
{
"bonus": null,
"ceiling": null,
"floor": null,
"amount": 1,
"step": 150,
"offset": 0
}
],
"type": "STANDARD",
"complementaryRates": [
"Banner2Complement"
],
"roundPoints": {
"active": true,
"toMultipleOf": 2
}
},
"Banner2Override": {
"description": "",
"name": "",
"product": null,
"maximumQuantityPerProduct": null,
"rates": [
{
"bonus": null,
"ceiling": null,
"floor": null,
"amount": 2,
"step": 200,
"offset": 5
}
],
"type": "STANDARD"
},
"Banner2Complement": {
"description": "",
"name": "",
"product": {
"collections": [
{
"products": {
"allRequired": false,
"excluded": null,
"included": {
"groups": null,
"items": [
"245875",
"245876"
],
"skus": null,
"tags": null
}
}
}
],
"logicalOperator": "OR"
},
"maximumQuantityPerProduct": null,
"rates": [
{
"bonus": null,
"ceiling": null,
"floor": null,
"amount": 3,
"step": 200,
"offset": 50
}
],
"type": "STANDARD",
"decider": "UNITS"
}
}Points Spend
Default and child unit spend rules are also defined in the scheme setup. Default spend rules are set in the rates.burn.incomingIdentifier container and will apply to all child units (aka banner or redemption partner). Within you will identify how the points can be spent and what benefits are available within each spend tier. These burn rules are a calculation for conversion from points to a monetary value for use as tender against a transaction. You may just have a single tier where all points spend has the same monetary value, but an increase in value or bonus can be applied to different tiers based on the spend amount.
| Key | Description |
|---|---|
| bonus | Additional points that can be added to the conversion value |
| ceiling | The highest points value to which this spend tier applies |
| floor | The minimum points value to which this spend tier applies. Valid values are between 1 and 999,999. |
| pointsBack | The number of points to be credited back to the points account following a points spend transaction |
| rate | The points conversion value for the scheme. Up to four decimals can be used on the rate. 1 would mean 1 point = 1 cent/pence. A rate of 0.1 would result in 1 point = 1/10 of a cent. |
| step | The increments in which points can be spent. For example if points can only be spent in increments of 100, 200, 300, etc, enter 100. |
In a straight-forward example, let's say the Fabulous Retailer allows customers to burn points at a rate of 1 pence when a minimum of 100 points is available, in increments of 100. Burn rules are applied per transaction. The maximum points that can be redeemed at once is 50,000 (equivalent to £500.00).
"burn": {
"fabulousretailer": {
"default": {
"rates": [
{
"bonus": 0,
"ceiling": 50000,
"floor": 100,
"pointsBack": 0,
"rate": 1,
"step": 100
}
]
}
}
}
While bonus results in an immediate earn and spend of points, pointsBack will credit points back to the loyalty account for future use.
Using the above burn example as a starting point, if the Fabulous Retailer also wanted to give customers a 50 points bonus on each transaction they spend points on, 50 can be added as pointsBack.
"burn": {
"fabulousretailer": {
"default": {
"rates": [
{
"bonus": 0,
"ceiling": 50000,
"floor": 100,
"pointsBack": 50,
"rate": 1,
"step": 100
}
]
}
}
}If child units required different spend rules, unique rulesets can be defined per unit. For example if the main scheme points spend rule requires a minimum of 100 points, a certain child unit/brand may require the minimum balance of 500 points to allow spending of points instead. This can be accomplished by configuring separate rules for the child unit (brand).
"burn": {
"fabulousretailer": {
"default": {
"rates": [
{
"bonus": 0,
"ceiling": 50000,
"floor": 100,
"pointsBack": 0,
"rate": 1,
"step": 100
}
]
}
},
"banner2": {
"default": {
"rates": [
{
"bonus": 0,
"ceiling": 50000,
"floor": 500,
"pointsBack": 0,
"rate": 1,
"step": 100
}
]
}
}
}Updated about 4 hours ago
Check out additional Resource API details on retrieving, creating and editing scheme API requests.
