NP Entertainment Support


Table of Contents

1. Loyalty Reward Program
1.1 Member Community
1.2 Loyalty setup
1.3 Example of Date Formula in Navision
1.4 Item Points Setup
1.5 Members' Link to Loyalty Reward Programs
1.5.1 Membership Setup
1.5.2 Membership Sales Setup
1.5.3 Create Membership
1.6 Application of the Loyalty Reward Programs
1.6.1 Sale on POS to a Member
1.7 Loyalty Reports
1.7.1 Loyalty Points Summary
1.7.2 Report: Loyalty Points Value
1.7.3 Report: Loyalty Points Detail
1.8 Earning and Redeeming points
2. A Discount Case Study
2.1 Discount Coupons Setup
2.2 Loyalty Setup
2.3 Loyalty to Discount Setup
2.4 Activate Loyalty
2.5 Activate Discount Coupons from EAN box
2.6 Test and Setup Verification
2.7 Expiring points
2.8 Web Services
3. Cross Company Loyalty Setup Guide
3.1 Terms
3.2 Prerequisites
3.3 Server-Side Setup
Earn and Burn ratios
3.4 Store Setup
3.5 Client Store Access
3.6 Client Store Enrolment
3.7 Reconciliation
3.8 Client Side Setup
3.9 Behind the scenes
3.10 POS Menu Buttons
Select Membership
Pay with points
3.11 Analyzing a POS Sale
3.12 Appendix
Declined redemption and result codes

1. Loyalty Reward Program

"Loyalty programs are proven to increase customer lifetime value by up to 30% or more by increasing visit frequency, increasing spend per visit, and winning back lost customers," - Chris Luo, VP of Marketing of loyalty technology company FiveStars. A Customer Loyalty Program is a marketing tool used by businesses to motivate repeat customers to come back to the shop to make frequent purchases, and beat competitions, by offering some kind of reward system. Hence, a customer loyalty program is a structured and long-term marketing effort which offers incentives to frequent customers who demonstrate a "loyal buying behavior".

In Retail Industry, these programs generally reward loyal customers with discounts, special offers, rebates, points, or giveaways.NP Retail has developed the tool to setup various schemes. The principle is that the customer is awarded points based on certain purchase actions and these points are then consumed by converting them into discounts, special offers, rebates, points, giveaways and so on.All the functions for managing the Loyalty Reward Programs are found in the menu:

Departments > Retail Add Ons > Members

1.1 Member Community

The first level of configuration will be to set up a group with a common perspective or goal. In our case, it is a "Loyalty Club". The Member Community function is used to that effect. (Refer to section Membership Community for more details on how to set it up). For example, we can set the following group:




BK - A code used to link this community with other tables


Bamse Klubben - A use description of the community

External No. Search Order

CARDNO - An option to define what search term should be used when there is ambiguity

External Membership No. Series

NPR_MSHIP - Number series to generate the external membership identity

External Member No. Series

NPR_MEMBER - Number series to generate the external member identity

Member Unique Identity

EMAIL - The member value that must be used to uniquely identify a member

Create Member UI Violation

When a member is created and the unique identity is violated the system can react with in the following ways;

  • ERROR – An hard error is thrown

Member Logon Credentials

NA - Defined what term to use for logon credentials when a 3rd party member management soft is used

Membership to Cust. Rel.

Check On - This is field is used when memberships are linked with customers. This is required in the following scenarios;

  • When members have access to specific discount and price structures.
  • When members have access to their account on the web and can/must link their purchases with the membership account number.

Create Renewal Notification

Check On - Create a notification when membership requires renewal;

1.2 Loyalty setup

The Loyalty Reward Program to collect the points will vary with different businesses. We have developed the Loyalty Reward Programs that are commonly used in the Retail System. Nevertheless, it is not an end in itself. We will develop more schemes based on the client's requirements in the future.




A code used to identify the scheme; e.g. ADVANCED, PROGRESSIVE, SIMPLE


Description of the scheme

Collection Period

The period which determines when the customer is eligible to accumulate points. Hence the computation of the points will be based on the period for which the point will be collected;

  • As You Go – There is no fixed period, the points will be collected as and when the purchase is done
  • Fixed – A defined period is established for collection of points

Fixed Period Start

The Date formula in NAV is used to defined the period starting point based on the purchase date. (see table below for example of date formula in NAV)

Collection Period Length

The Date formula in NAV is used to defined the period length in which the points will be collected. (see table below for example of date formula in NAV)

Expired Uncollected Points

This field determine if any uncollected points will have expired and not taken into the calculation of the points for collection.

Voucher Point Source

It is the basis to collect the points to use in the calculation of the reward.

  • Uncollected Points – Unused points
  • Previous Period – points from previous period

Voucher Point Threshold

The minimum number of points to start the calculation for the loyalty program.

Voucher Creation

The method to be used to create the Discount Voucher or Coupon;

  • Note: Currently we are developing the program to create the coupon – so far we have the solution to compute the points, but not the conversion of the points into coupons.

Base Point

It is the base to calculate the value for the Discount Voucher or Coupon;

  • Amount – The calculation of points to be allocated will be based on amount purchase.
  • Item Point Setup – The calculation of points will be based on a predefine points for the purchase of a particular item
  • Amount and Item Point Setup – A combination of both of the above

Amount Base

The base amount is to include or exclude VAT amount in it calculation when converting to Loyalty Currency. For example, if the amount including 25% of VAT is 125, then the base will be on:

  • Including VAT – 125.
  • Excluding VAT – 100

Point on Discounted Sales

If the check box is ticked, then we will use discounted amount to calculate the points or else, it will not be taken into the calculation.

1.3 Example of Date Formula in Navision






9/29/13 (Sunday)

Returns the last date of the current week


9/30/13 (Monday)

Returns the last date of the current month


9/30/13 (Monday)

Returns the last date of the current quarter


10/15/13 (Tuesday)

Returns the next 15th of the month

D15 + 1M

11/15/13 (Friday)

Returns 1 month after the next 15th of the month

Same result as 1M + D15

1M + D15

11/15/13 (Friday)

Returns 15th day after the date is advanced 1 month

Same result as D15 + 1M

1M – 15D


Returns the date 15 days less than a full month after reference date

1M + 15D


Returns the date 15 days more than a full month after reference date

CM +1D

10/1/13 (Tuesday)

Returns the 1st of the following month


10/30/13 (Wednesday)

Returns the last date of the current month advanced by one month

If the reference date had been 02/23/2013 the returned date would be 03/28/13

CM + D10 + 90D

1/8/2014 (Wednesday)

Returns a date 90 days after the next 10th of the month


10/31/13 (Thursday)

Returns the last date of the following month

If the reference date had been 02/23/2013 the returned date would be 03/31/13

CW+1D or CW+WD1

9/30/13 (Monday)

Returns the Monday of Next Week

CW+5D or CW+WD5

10/4/2013 (Friday)

Returns the Friday of Next Week


10/21/2013 (Monday)

Returns 3 Weeks from Next Monday


9/28/2013 (Saturday)

Returns Saturday of This Week

If the reference date had been 09/29/2013 (Sunday) the returned date would still be 09/28/2013. The week starts on Monday in NAV.


10/21/13 (Monday)

Returns the Monday after the next 15th of the month

WD4 + 6W

11/7/13 (Thursday)

Returns the Thursday 6 weeks after the next Thursday.

Imagine a vendor that ships only once a week with a long time in transit.

1.4 Item Points Setup

After defining the Loyalty Reward Programs in the Loyalty Setup menu, we now need to define the method of calculation for accumulating the points. This is done in the Item Point Setup menu.




This check box is use to deactivate the formula to calculate the points


It is the selection criteria to group items into using a calculation formula.

  • Item
  • Item group
  • Vendor


The set of values for the type selected.


This is a very important flag. We use this flag to include or exclude set of values in the calculation of the points for a particular selection. For example, we can have a Loyalty Reward Program for items supplied by a specific vendor, but the same specific vendor supply item that we want to exclude from the Loyalty Reward Program. Then we can define a line for Vendor = Include & another line for the Item = Exclude (e.g. exclude cigarette in a café shop)

Allow On Discounted Sale

We can allow a discounted sale on a item which is used to calculate points for a Loyalty Reward Program.


This field determine the basis for the calculation of the points for collection.

  • Points – We have a fix point attached to purchase of an item
  • Amount – We have a conversion factor of amount purchased into equivalent point
  • Points + Amount – We have a combination of both.


The fix point that is collected on purchasing a unit of one particular item.

Amount Factor

It is the conversion factor of amount purchased into equivalent point.

Let go through the following examples to have a better understanding on how to set up the Loyalty Item Point calculation basis:

  • The first line describe how we select a list of items which are attached to the Item Group 301. Given that we set its constraint to Include, then whenever we purchase an item belonging to that item group, we get a 30,000 points in our bucket. The method of reward is granted by fixed points.
  • The second line has a constraint set to exclude which means that we do not get any points if we purchase an item belonging to the item group 404.
  • The third line indicates that we get 2 points for each unit of currency we spend on the purchase of the items belonging to the item group 101. (e.g. Kr 200 = 400 pts. > 1:2)
  • The forth line bring into the equation a constraint that we do not get any point when purchasing an item which is supplied by the vendor CR000003, Coca-Cola Company, even though it is a cold drink as set by the previous line whose rule includes item group 101 for Cold Drink.
  • The fifth line allows us to get 1,500 points on the purchase a unit of item 40003.
  • The last line gives us the right to a point for each unit currency we spend on the item 40005 irrespective of whether it is on discount or not. (e.g. Kr 100 = 100 pts. > 1:1)

Note: The above rules are associated to the Loyalty Code: ADVANCE. And ADVANCE is under the Member Community: BK. Hence any member under this Member Community: BK. will benefit from ADVANCE.

1.5 Members' Link to Loyalty Reward Programs

In the above paragraphs, we have seen how to set up different Loyalty Reward Programs and now we will look into how to link the member to benefit from these programs. We need to go to the Membership Setup to set up a group of members who will be associated with the Loyalty Reward Program - Code: ADVANCE under Community Code BK.

1.5.1 Membership Setup

Menu: Departments > Retail Add Ons > Members > Setup > Membership Setup

Setting up the group of members, using Membership Setup menu:





CLUB-VIP - A code used to identify this community


Bamse klubben - A use description of the membership

Membership Type

Controls how members and memberships are related.

  • COMMUNITY – This is simple type of membership where all members are put into one big group. This is practical when the "membership" is informal and like in email register f.ex. Members may still have a member card and there may be benefits for the individual members.
  • GROUP – Similar to the COMMUNITY mode. In this mode the membership time-frame plays a predominant role. Number of members in a group can be limited. The members can have individual roles.
  • INDIVIDUAL – One membership – one member.

Community Code

BK - A link to the community this membership belongs to

Loyalty Code

ADVANCED – This code determines which Loyalty Reward Program is attached to the Community Code.

Loyalty Card

Define whether a Loyalty Card is to be issued to the member or not. It is in this screen that we make the relationship between the Community (Member Community) & the Loyalty Reward Program (Loyalty Setup)

Customer Template Code

WEB - This code identifies a template for how the customer associated with the membership will be created. This field is required when the "Membership to Cust. Rel." field on community is checked. Note: The customer template is defined the Configuration Template which is the new standard for Navision as from version 2016 onwards.

Member Information

How the member entity should be treated.

  • NAMED – The member must exist
  • ANONYMOUS - Membership can be anonymous – there is no member, just the card (Membership Type COMMUNITY)


The setup is blocked from usage

Blocked At

Time of block


The membership validity can be perpetual (everlasting)

Member Role Assignment

How members are assigned their role in the membership


Create Renewal Notification

Create a notification when membership requires renewal

Create Welcome Notification

Create a notification when member is created

Membership Member Cardinality

Maximum members in a GROUP membership

Allow Membership Delete

This options allow memberships to be deleted.

Confirm Member On Card Scan

When a POS function requires the member card to be scanned, the member card will pop up for visual confirm.

Account Print Object Type

The type of object used for generating printing for the account information

Account Print Object ID

The Object ID to be developed

Receipt Print Object Type

The type of object used for generating printing for the receipt

Receipt Print Object ID

The object ID used for generating the printout.

Membership card section

The following fields defined how the member card number should be handled. The member card number is public and should not be a sequential number only.

Card Number Scheme

Who responsible of creating the member card number

  • NA

Card Number Prefix

Specific prefixes can be defined (or generated by the number series)

Card Number Length

The length is used to pad a number that is too short

Card Number Validation

If there should be a check digit appended to end of the generated number

Card Number No. Series

The number series used generated the base of member card number

Card Number Valid Until

For how long a member card should be valid

Card Number Pattern

A patter can be entered to control how the card number should be generated. A pattern consists of keywords that will create a number that is a bit more difficult to guess. Available keywords are listed below and must be included between [ and ].

  • MA - Member Account Number
  • MS – Membership Number
  • S – The number generated by the number series
  • N – A random number
  • A – A random character
  • X – A random alphanumeric character. N, A, X can be suffixed by a * and number to repeat it, that number of times.

    The default pattern is [X*4][MA][X*4][MS][S]

    Which would generate a member card number similar to: RQ41MM-00147VBH7MS-0013100087

Card Print Object Type

The type of object used for generating printing for the member card

Card Print Object ID

The object ID used for generating the printout.

Membership ticket section

Ticket Item Barcode

This barcode is created as a sales line in environment of Ticketing. It is not used for Loyalty purpose. E.g 2900000311015 is an item on the POS which in a scenario where that this item can be given free to the member. It is used as a quick sales item on a specific button in the POS. When scanning the membership number, it will trigger a sales line for that ticket or item number (2900000311015).

1.5.2 Membership Sales Setup

The next step is to set the parameters for the sales of the membership.




An option to define what type of "item" we are selling.

  • ITEM
  • ACCOUNT – This option is reserved for future use. Currently a membership sale must be an item


The Item or Account used for membership sales

Membership Code

Links the Membership Setup table. The item sold will create a membership of this type.


If parameter is not used, then it is blocked

Blocked At

Date the block was done

Valid From Base

An option to define how the membership time frame start date should be calculated.


Sales Cut-Off Date Calculation

Reserved for future use.

Valid From Date Calculation

Date formula for activation date

Valid Until Calculation

An option to define the duration of the membership. Options are;


Duration Formula

Date formula for duration

Assign Loyalty Points On Sale

Determine whether points should be assigned when sales are done on this membership type

1.5.3 Create Membership

The member for the group will be created from the "Create membership" shortcut in the Home Tab from the Membership Sales Setup.

1.6 Application of the Loyalty Reward Programs

1.6.1 Sale on POS to a Member

The solution Loyalty will be available under Transcendence. The process is to attach a sale to the member while doing the sale from the POS. If the member who has a Loyalty Reward Program configured.

From the POS, use the Select Membership function to set the sale to the member:

By selecting the member number, the customer attached to the member will be selected as well.

Then we can sell an item under the Loyalty Reward Program and based on the configuration, the points will be allocated accordingly.If we have a look at the "Memberships" card in the menu: Departments > Retail Add Ons > Members > Memberships, then we can see the statistics on the Points allocated to the member.

Note:The points are not computed on the Member Card, but it is on the Membership Card of the member which belongs to a particular Membership. The logic is that the member is allocated points due the status he or she has as being under a membership. The Loyalty Reward Programs reward the Membership as a group and consequently a member belonging to the membership.

1.7 Loyalty Reports

The reports regarding Loyalty Reward Programs are found in the Action Tab in Memberships. Menu: Departments > Retail Add Ons > Members > Memberships

1.7.1 Loyalty Points Summary

Based on table MM Membership 6060127 where you find all fields except Customer Name:

  • The points fields are flow fields.
  • There is a flow filter for Date – so I would like the default filter to be ..TODAY and visible on report request
  • The report must clearly distinguish the Membership Code. Membership with different Membership codes should be reported in different sections. The description for membership code is found in table 6060124

The content for one membership code should be something similar to this:

1.7.2 Report: Loyalty Points Value

Similar to the previous report, but we will translate the Remaining Points to monetary value.There are setup from several table required.

  • MM Membership 6060127 – important to have the membership per membership code (6060124)
  • 6060124 has field Loyalty Code
  • Primary key in table "6060140" Loyalty Setup
  • Field "Voucher Point Threshold" You need to have this amount of points or more the be able to redeem points
  • Points to amount distribution in table 6060141. This table is has / can have a "ladder". Meaning you can make many lines 100 points translates to 3 money, 1000 points translates to 45 money.

The point to amount distribution is a user setup thing. You need to apply modular math here (MOD and DIV) Example of setup in table 6060141: 

This reads as for every 100 points you get 3 money (rupees/DKK/EUR) and for every 1000 points you get 45 money.Applying this to our remaining amount from membership 46 above:4869 points => 4 * 1000 + 8 * 100 => 4 * 45 + 8 * 3 => 204 money. There is no rule for the remaining 69 points so they are not included in the calculations in this example. There can be any number of rules.

  • There must be at least one rule for a calculation to occur.
  • The thresholds (100, 1000 in this case) may be any integer number
  • The largest number must be handled first (not necessarily the key order)

In my example setup, the threshold for minimum number points is set to 500. The MS47 membership has 473 points, which is insufficient, and thus get 0 in the "points to redeem" column (red box). (If the threshold was lower than 473, two lines would be displayed 73 points with amount 0, and 400 with amount 4*3 => 12The content for one membership should be something similar to this: the total must sum the groups individually. (Don't apply the amount distribution in the total section on the total of points to redeem)Filters:

  • Date Filter (flow filter) on Membership
  • Membership Code

1.7.3 Report: Loyalty Points Detail

This is a plaint list of a membership points entries

  • Table 6060127
  • Table 6060130


  • Date Filter (flow filter) on Membership

1.8 Earning and Redeeming points



Issue Coupon Module

Issuing module needs to be Member_Loyalty

The function to Redeem Points in transcendence is Redeem Points
Parameter : Redeem Points
The function for Select Coupon in transcendence is Available Coupons.
Parameter : Available Coupons
When you click on the POS button redeem, you will be asked to enter the Member Card No. :

The member detail card will be displayed:

When trying to redeem points without any sale, the below message will be displayed.

Selecting the redeem function a second time will display the below message as the coupon has already been created in the previous step. 

To use the coupon, click on:

A list of available coupon for the member will be displayed:

Select an item that has been defined in the Coupon type for the sale transaction and select a coupon

The coupon discount will be added in the sale and applied to the sale transaction as shown below:

2. A Discount Case Study

2.1 Discount Coupons Setup

3 discount coupon types are needed, one each of 3, 4, 5 percent discount. The fields are self-explanatory.

2.2 Loyalty Setup

The loyalty setup specifies:


  • "Collection Period": fixed
  • "Fixed Period Start": -8M-1Y+CY+8M+CM+1DThis date formula will calculate the start of the collection period. Step by step explanation of the date formula:
    • -8M; decrease today (2019-03-01) with 8 months: 2018-07-01
    • -1Y; decrease with 1 year: 2017-07-01
    • CY; force last date of the year (2017): 2017-12-31
    • +8M; increase with 8 months: 2018-08-31
    • CM; force last day of month: 2018-08-31
    • +1D; add one day: 2018-09-01
  • "Earn Period Start": (virtual) Visual aid and result of "Fixed Period Start". It defaults to do the calculation for TODAY, but this date can be overridden when editing the hidden field "Period Test Date".
  • "Collection Period Length": 11M+CMThis date formula controls the collection period length. It adds to the result of "Fixed Period Start". Step by step explanation of the date formula:
    • 11M; add 11 months (to 2018-09-01): 2019-08-01
    • CM; force last day of that month: 2019-08-31
  • "Earn Period End": (virtual)) Visual aid and result of "Fixed Period Start" + "Collection Period Length"
  • "Expire Collected Points": true
  • "Expire Uncollected After": 1M
    • 1M; add one month to "Earn Period End". This will be the cutoff date the previous period points are valid (and will be expired)
  • "Expire Points At" (virtual): visual aid and result of ""Expire Uncollected After" applied to "Earn Period End"
  • "Voucher Point Source": Previous Period
  • "Voucher Point Threshold": 0
  • "Voucher Creation": Single Voucher – Highest Value
  • "Amount Factor": 1 point earned compared to amount spent
  • "Point Base":
    • Amount;
      • earn points on sales amount, no exceptions
    • Amount and Item Point Setup;
      • Default assumption is that item is included, and points are based on amount
      • Exception are handled in "Item Points Setup
    • Item Point Setup;
      • Default assumption is that item is excluded
      • Exception are handled in "Item Points Setup

2.3 Loyalty to Discount Setup

This setup determines the minimum points required for the different discount coupons:

  • 0 – 999: no discount coupon available
  • 1000 – 2999: 3% discount coupon
  • 3000 – 4999: 4% discount coupon
  • 5000 -: 5% discount coupon

Alternatively, change the "Value Assignment" to "Loyalty Setup" and specify a point rate, f.ex. 0,01 for a 1% coupon discount.
Note: When Loyalty creates the coupon value, the "Voucher Creation" on "Loyalty Setup" must have value "Prompt".
The difference in these 2 approaches are the with "Coupon Setup" you will get X% discount coupon valid according to coupon setup. Points consumed will be either "Points Threshold" or all your collected points.
With "Loyalty Setup", your points count will be converted to an amount given the point factor. This will result in a discount based on points.

2.4 Activate Loyalty

To activate loyalty point collection, the checkbox on community must be set to true, and the loyalty program set on membership set. (Note, both fields are hidden by default.)

2.5 Activate Discount Coupons from EAN box

The way discount is applied is creating a coupon and then applying the coupon using the EAN box. This requires EAN box setup to accept discount coupons.

2.6 Test and Setup Verification

  • Create a member
  • Use member card to register points to membership
  • Points will be registered to membership:

Important: To get the correct price and discount percentage, the customer card must be set to show prices including VAT. This can be automated by specifying the value in the customer template for membership.

“Prices Including VAT” on customer must be checked.

The points collected for member, membership card in the background. Drill-down on the “Remaining points” field.

[For testing purposes only]

We can’t spend these points without adjusting the posting dates, since our setup states that we can only spend from our previous period and only during 1 Sept – until last Sept.

(Run the table 6060130, and adjust posting date on a few lines to get points to spend on a discount coupon)

You will also need to uncheck the expire checkbox on the loyalty setup, (we are not in the “spend window” – which is from 1 September to last of September. Or you need to change expire date formula so we are inside.

If all goes well, you will get a 5% discount.

All points in the period are consumed.

2.7 Expiring points

There is a job that will expire points on all memberships belonging to a specific loyalty program. This is a manual step that should be executed by the customer. The job will expire points from the previous collection period and can be executed any number of times.

This step is required from a transparency point of view and will create entries on the memberships points ledger.
From a spending point of view, it's not required as the points that should be expired for a given membership is calculated at the time of coupon redemption.

2.8 Web Services

2 related actions exist in the loyalty_services web service:

  • GetLoyaltyPoints; this action return the membership points balance as of today
  • GetLoyaltyPointsEntries; this actions returns membership point balance summary to a specific date, and transactions from date until today.

Example response can be:

3. Cross Company Loyalty Setup Guide

This document will describe how to setup and operate the NPR Cross Company Member & Loyalty services.

3.1 Terms

  • Server: Members and their loyalty points are stored in a central company that all clients have access to. This company, its information and related services are referred to as the server side.
  • Client:Client accesses the server to validate member cards and register sales to store the loyalty points.

3.2 Prerequisites

The server company must be setup with:

  • NPR Membership
    • Web service "member_services" must be setup (codeunit 6060128).
  • NPR Loyalty
    • Web service "loyalty_serrvices" must be setup (codeunit 6060141)

3.3 Server-Side Setup

Earn and Burn ratios

In the server company you define the template for earn & burn ratios, this will be replicated to client companies when they are enrolled

Amount Factor is the multiplier when earning points. An amount factor of 3 will earn you 3 times the amount in points.
Example: when POS sales end with the balance of 15, member will earn 45 points.
Point Ratio is the multiplier when burning points. To pay for a sales, the amount is divided with point ratio to calculate points required.
Example: when balance is 15 and you want to pay for the entire sales using points, you would need 15 / 0,015 points -> 1000 points.
Note: points are stored as integers and rounded up or down according to the nearest principle.

3.4 Store Setup

The loyalty store setup is a vital part of the server setup, as this is how the client stores will be handled.
On the server, the following is managed.

  • Client store access
  • Client store reconciliation

3.5 Client Store Access

For a client store to be able to report loyalty points, there needs to be a corresponding record for each client setup. The identifiers the client will send to server are:

  • Client Company Name – for a Navision company, this default to the company name.
  • Store Code – the store code
  • Unit Code – the unit code (optional) when all units in a store share the same server setup. (will be reconciled as one unit)
  • Authorization Code – Since the web service credentials are share among all clients, the authorization code prevents clients from impersonating a different store.

These fields must be setup prior to a client store can connect and deposit loyalty points to server.
For reconciliation the followings fields are used:

  • Customer No. – The customer number representing the client company, store, pos unit. This customer will be invoiced / credited of the balance between earn and burn points.
  • Posting Model – The posting model determines how points are transformed back to currency in the general ledger.
    • Local Currency – the Point Ratio is used to revert points to LCY when posting to customer ledger. Loyalty Setup Code determines which point ratio to use.
    • Currency – the customer ledger is posted with the points amount and the currency code is set to "Burn Points Currency Code"
  • Loyalty Setup Code – the link to the loyalty setup.
  • Burn Points Currency Code – currency code to use when reconciling using currency model.
  • G/L Account – the account to post the reconciled amount to
  • Invoice No. Series – When posting the reconciliation, it will select first general journal with type General and recurring false. If there is a number series for that journal, that number series will be as the document number / invoice number.
  • Reconciliation Period – decides which transaction will be subjected to reconciliation.
    • Today – Finds all transaction up to today. Posting date will be TODAY.
    • Previous Month – Finds all transaction up end of previous month. Posting date will be last date of previous month.

  • Outstanding Earn Points – flow fields to show sum of points earned, that has not been reconciled yet. (The flowfilter field "Date Filter" determines date range)
  • Outstanding Burn Points - flow fields to show sum of points burned, that has not been reconciled yet. (The flowfilter field "Date Filter" determines date range)

When the client store has been setup to specification, "Accept Client Transactions" fields needs to be checked.

3.6 Client Store Enrolment

When client store is enrolled, client store needs to be setup first on server side and this information needs to be communicated to client store administrator.
The enrolment process is a bit of a ping-pong between client and server administrators.

Client applies for access

Depending on what level reconciliation client wants, the following information needs to be passed to server administrator:

  • Client Company Name
  • Store Code
  • Unit Code (optional)

Server administrator completes the Loyalty Store Setup, described above and returns the following information:

  • Authorization Code
  • URL for web service.
    • Username
    • Password
  • Membership Code(s) for the memberships the will be made available to this client
  • Amount Factor
  • Points Rate

Client administrator can now run the setup wizard and complete the client setup. More on the client setup in the next chapter.


The client enrolment can be simplified when client and server exist in the same database. The client enrolment wizard can specify the server company and when that is done, the client information is pushed to the server side.
In this case server administrator provides the following information to client administrator:

  • URL for web service.
    • Username
    • Password
  • Membership Code(s) for the memberships the will be made available to this client
  • Amount Factor
  • Points Rate

Server administrator must still complete the reconciliation setup and enable the client store after client administrator has finished the wizard.

3.7 Reconciliation

When a member makes a purchase and thereby earns points, that store will have to make a payment to the store where member then burns the points. This process is managed by the server in the reconciliation process. The server will issue either an invoice (when the value of earned points exceed the value of the burned points) or a credit memo (when the reverse applies).
How the stores actually resolve the difference in earn & burn, might only occur if there is a severe unbalance in-between them. The reconcile store action can resolve this issue.

Selecting one of the reconciliation actions will sum the outstanding points and recreate the required document.
Looking at the transaction entries:

Transaction can be "navigated" to get further details.

Entry Type:

  • Receipt – a transaction sent from client as a part of the end-of-sale workflow. This transactions registers the earned and burned points in the transaction.
  • Reserve – the transaction sent when client request a payment with points. The number of points are reserved until the receipt transaction captures the reserved points.
  • Reconcile – The sum of all receipt and reconcile transaction up-to and including transaction date, with reverse sign. Makes the balance zero at that point in time.

Company Name: client company name
POS Store Code: the store code of the client
POS Unit Code: the unit code of the client
Card Number: unmasked card number of loyalty transaction
Reference Number: the receipt number of sales for this transaction
Foreign Transaction Id: the client's unique transaction number
Transaction Date: client date of transaction
Transaction Time: client time of transaction
Authorization Code: the server's authorization code in response to client request
Earned Points: the number of points earned on this transaction
Burned Points: number of points burned (or reserved) in this transaction
Balance: the members remaining points after transaction
Reservation Captured: makes it possible to find and correct half transactions (transactions that are reserved but not captured).

3.8 Client Side Setup


Some information regarding how to access the remote loyalty and member system is required in order to setup the client side of the integration. This information must be acquired from the server administrator before proceeding.

  • URL for web service.
    • Username
    • Password
  • Membership Code(s) for the memberships the will be made available to this client
  • Amount Factor
  • Points Rate
  • Authorization Code (optional depending database in relation to server company)



  • Create a new community
  • Configure "Foreign Membership Setup"
  • Select and run Cross Company Client Setup wizard

  1. Create a new community, specify code and description
  2. Click "Foreign Membership Setup"

3. Select "NPR_MEMBER" as Manager Code

4. Click "Show Setup" to proceed

Warning, running the setup multiple times will overwrite any manually changes done to your setup.

The client setup wizard might be prefilled with some values.

Description of the fields:
Membership Code: A membership a setup for the community with predefined settings. The code needs match code defined on the server. (Segmentation of the community).
Payment Method Code: A payment method and a payment type is created.
Payment G/L Account: is required for the payment type – the posting when redeeming loyalty points
Description: used on the artifacts created by the wizard.
Server Communication:
Base URL: The URL (not ending in member_services or loyalty_services) for the web service. The url must end with a /
Username: Credentials for web service
Password: Credentials for web service
Server Company Name: When the server company is in the same database, all stores in this company will also be setup in the server company.
Loyalty Authorization Code: Code provided by the server administrator or you can specify your own when Server Company Name is specified.
Earn Factor: the factor amount is multiplied with to calculated points earn
Burn Factor: the factor amount is divided with to calculate the points required to make a payment with points.

3.9 Behind the scenes

When wizard runs, the following entities are created or modified:

  • The community is updated with number series, etc.
  • A membership setup is created with the code "System Prefix"+"Membership Code" and is configured for anonymous members.
    • When multiple memberships exists on server, the other membership needs to be setup manually as the wizard will only set up one.
  • A Loyalty program is created with the code "Community Code"+"-LOYALTY", earn and burn factors are applied.
  • Endpoints for member_services and loyalty_services are created using the base URL and provided credentials.
  • A POS Payment Method is created and configured.
  • A Payment Type is created and configured.
  • An EFT Setup is created for POS Payment Method.
  • Loyalty Store Setup is created for entities in POS Store;
    • The server side is updated provided the Server Company Name is provided.
  • Currency Code 'NPLP' is created with an exchange rate from beginning of month equivalent of the burn factor. Currency code is assign to POS Payment Method.

3.10 POS Menu Buttons

Two buttons are required in the POS.

Select Membership

Create a button with a following properties:

  1. Caption: Select Membership Action Type: Action POS Action: MM_MEMBERMGT Parameters:
    1. Dialog Prompt - Member Card Number
    2. Function – Select Membership

Pay with points

  1. Caption: Redeem Loyalty Points Action Type: Payment Type POS Action: MM-LOYALTY (This value was specified in the setup wizard earlier) Parameters: None Advanced

Captions are capable to show runtime data. The NPR Loyalty integration extends this functionality and by specifying the following caption string in the Caption field, remaining points and remaining value can be shown on the button. The Data Source Name field on the POS Menu button must also be configured.
To enable this functionality, the "Activate Loyalty Program" on Community Setup must be set to value TRUE. (Not done by wizard)
Example of button in POS:

Caption: Redeem Loyalty Points <small>LOYALTY.RemainingPoints / DKK LOYALTY.RemainingValue<br>(100 point = 1.5)</small> Data Source Name: BUILTIN_SALE

3.11 Analyzing a POS Sale

The client can analyze a loyalty point sale by looking at the EFT Transactions for the sale. One way of navigating the sale could be from "POS Entry List", shown below:

Note: in this setup, the earn factor is 1, thus we earn 12 points for the 12.50 we paid.

3.12 Appendix

Declined redemption and result codes

The EFT Transaction table will also show the failed redemption attempts. For example:

The following error response codes are defined:

  • Class -11xx relate to authorization and content validation
  • Class -12xx relate to reservation failures


    The authorization block in the XML body is empty


    The referenced store setup in server is not found


    The authorization code from client does not match code registered in server


    Reference number (receipt number) is blank


    Transaction date is empty or invalid


    Transaction time is empty or invalid


    Card number is invalid


    Card number is not related to a membership


    Foreign Transaction Id is empty


    Reference Number has already been upload from this client




    Inconsistent membership on loyalty server


    Loyalty code not specified for membership setup on server


    Invalid loyalty code for membership on server




    Points for sales transactions must be positive


    Points for return transaction must be negative


    Incorrect type on sales line


    Sales line amount must be express in the currency code of server


    Points for payment must be positive


    Points for refund must be negative


    Incorrect type in payment line


    Payment line is missing its authorization code (from reserve points message)


    Incorrect authorization code for payment


    Incorrect authorization code for payment


    Reserved points does not match captured points


    The authorization code was already captured


    Point cashback is not supported


    Number of points to reserve must be positive for payment


    Number of points to allocate must be negative for refund


    Incorrect type for reservation


    Insufficient points to reserve