The discounts are posted as refunding transactions that will benefit your customers immediately. This feature is available for both credit and prepaid products.

Key benefits:

  • Create a rewards program that is highly attractive to end users and stays relevant in comparison to your competitors.
  • Almost instant rewards to your customers – not only at the end of the month like comparable solutions.
  • Control on card level what transactions are applicable for a discount.
  • Control on card level how much the discount is and whether is it a fixed amount or a percentage.
  • All discount rules are controllable through APIs, allowing for real-time creation, viewing and updates.

Discount setup

When determining how discount should be calculated, for what and for whom it requires to set up rules that will determine the applicable terms. In the simplest form, the discount could be e.g. a 1% or 1£ discount on all transactions for all customers. It can also be limited to e.g. a specific transaction type, specific time, specific customer group or if line items are available, a specific item that has been purchased.

These predefined setups, called discount agreements are not specific to a customer, but created as an independent entity, allowing for multiple customers to utilise the same terms. Simultaneously, multiple discount agreements can apply to a single customer account. In other words, the discount agreement is a “container” of discount terms.

Discount agreements are comprised of several entities.

  1. The Price agreement is the top-level container to which transaction or purchase item-specific agreements are linked. Customer accounts are linked to the Price agreements and all price agreement periods, price lists and price list periods will be automatically applicable via the link.
  2. Price agreement periods are entities that determine for what purchases a discount should be calculated and how much the discount should be.
  3. Price list is a container to which predefined price lists are linked.
  4. Price list period can determine a fixed unit price that differs from the unit price in the transaction.

Price agreement

Price agreement is a container that is designed to enable the effortless creation of discount model packages for different customer segments. Within a price agreement, you can link all the discount models that apply to a predefined customer or customer group. If you decide to change any of the terms, it is sufficient to change it once and changes will be applied to all linked customer accounts. You can also have customer-specific price agreements in which case only one customer account is linked to.

Price agreement period

The price agreement period represents the applicable terms, i.e. defines how the discount should be calculated. There is a multitude of options as to how the discount is calculated:

  • it can be a fixed amount, or percentage of the transaction amount or in case the quantity is known it can also be calculated based on the quantity
  • a fixed amount that overrides the transaction amount (price list utilised)
  • the transaction amount is compared with a list price and the lowest applies

In addition to the actual discount calculation model, the price agreement period entity also has a ‘valid from’ date allowing you to define terms ahead of time and implement e.g. multiple agreements for different periods. A ‘valid to’ time can also be set to determine an end date for said terms, but it is not mandatory. Enfuce will apply the price agreement period that is valid based on the transaction date. Example: a transaction is done 3rd and posted on the 4th. The price agreement period that is valid on the 3rd is applied to the discount calculation.

The table below describes the data that is defined per price agreement period:

DataDescription
IDA unique ID is generated by Enfuce for each price agreement period. This ID is the primary key and can be used to view and update the price agreement period.
codeLine item level code that determines which purchase item(s) this price agreement period applies to.
validFromThe point of time from where this specific price agreement is applicable. Enfuce will validate to ensure that multiple price agreement periods concerning the same code are not valid simultaneously.
validToThe point of time after which this price agreement is no longer applicable. This can be empty in which case the agreement is valid until it is updated. Enfuce will validate to ensure that multiple price agreement periods concerning the same code are not valid simultaneously.
priceListIdThe applicable priceList if relevant.
lowestYes/No value that determines if the discount model applied is based on comparing the lowest value of two.
valueThe discount that should be applied either directly to the purchase amount or to the price list value.
typeDefines if the value of the discount is an absolute value, applied per each unit or a percentage of the purchase amount.

Price list

Price list is a container that is designed to enable effortless creation of predefined prices for different purchase items and customer segments. Within a price list, you can link all the prices that apply to a predefined customer or customer group. If you decide to change any of the terms, it is sufficient to change it once and changes will be applied to all linked customer accounts. You can also have customer-specific price lists in which case only one customer account is linked to.

Price list period

A price list period is a continuously updated entity that defines a fixed price (list price) for a predefined purchase item. The price list enables discount models where the customer can negotiate to receive a predefined price for a purchased item regardless of the purchase price at the merchant.

Enfuce will apply the price list period that is valid based on the transaction date. Example: a transaction is done 3rd and posted on the 4th. The price list period that is valid on the 3rd is applied to the discount calculation.

DataDescription
IDA unique ID is generated for each priceList entity. This ID is the primary key and can be used to view and update information.
codeLine item level purchase item code that determines which purchase item this priceList applies to.
validFromThe point of time from where this specific price is applicable. Enfuce will validate to ensure that multiple price lists concerning the same purchase item are not valid simultaneously.
validToThe point of time after which this price is no longer applicable. This can be empty in which case the price is valid until it is updated. Enfuce will validate to ensure that multiple price lists concerning the same purchase item are not valid simultaneously.
valueThe price of the respective purchase item that the price list defines.

After you have created price agreements, price agreement periods and price lists you can link customer accounts to the price agreement. By linking to the price agreement, all linked price agreement periods and price lists automatically become applicable. The link is done on account, not card level as the assumption is that all cards linked to the same account will have the same terms. The API allows you to link multiple accounts simultaneously allowing you to effortlessly update entire customer groups with one API call.

Example of a discount model setup

In the below visualisation, there are two different customer groups, both with their terms.

  • Segment X has a ‘per_each’ discount model where they receive a discount per litre they purchase. There has been a campaign in January that has rewarded the customers with a higher discount level. In February the discount will decrease from 0,2£ to 0,15£.
  • Segment Y utilises price lists for fuel. For car washes a ‘percent’ discount model is applied.

Discount calculation and posting process

The discount is calculated after the transaction has been processed. The discount is calculated based on a customer-specific discount model (“Agreement”) that will determine the discount level or if there is a fixed price based on the line item quantity. The issuer defines on account level the applicable discount models and provides potential fixed prices to be used (ref price list).

The discount process is described in the visualisation below.

  1. The customer makes a purchase at a merchant.
  2. Information about the purchase is conveyed to Enfuce.
    • Enfuce receives the financial transaction (and potentially line item data) in the card scheme clearing file.
    • Enfuce receives the potential line item data from the merchant.
  3. The financial transaction is posted to the card account as per the clearing file, i.e. with the transaction amount the merchant has sent it with.
    • It should be noted that in setups where line item data is received directly from the merchant, this step is triggered only after financial transactions and line items have been successfully matched.
  4. Enfuce determines if a discount is applicable for the transaction or a single item of the transaction by looking up the account´s discount agreement(s), the applicable purchase items and the time interval when they are valid.
    • If no match is found, i.e. no price agreements linked to the account or the products being purchased, no discount is calculated or posted.
  5. If a discount applies to the transaction (or part of it), Enfuce will calculate the correct discount amount by using the data in the discount agreement and potentially a separate price list (when applicable).
  6. After the discount calculation has been done, Enfuce will post a refunding discount transaction to the card.

Posting of discount transaction

After the applicable discount is calculated, a discount transaction (with the equivalent amount as the calculated discount) is automatically posted on the card. There are two different discount transactions:

Transaction typeDescriptionCode in API (original/reversal)Code Data Export Transaction file (original/reversal)
Discount TransactionDiscount transaction. This is a crediting transaction to the customer.DISCT/disctDISCT-P / DISCT-R
Discount Transaction DebitDiscount transaction correction. This is a debiting transaction to the customer.DISCTD/disctdDISCTD-P / DISCTD-R

Enfuce will post one discount transaction per calculated discount. In other words, if the financial transaction includes several line items and for each a discount is calculated then multiple discounts will be posted. Enfuce will generate a discount-level purchase detail record that will capture the details of the discount transaction. The discount details are available in the invoice files as well as via the purchase details API.

For the issuer to be able to match the financial transaction, purchase details, discount transactions and discount details there are links between the different entities (visualised below). This will allow you to group the discount transactions logically on invoices and user interfaces.

Discount transactions in invoice file

All transactions and their purchase details are available in the invoice file. The financial transactions can be identified by their transactionType, e.g. “Retail”. The purchase details that are linked to the financial transaction, are found in the same data element in the file. There is also the transactionId in the purchase detail that links it to a specific financial transaction.

The discount transactions have their own transaction types that allow you to identify them from the file. It has direct links to the financial transaction (DISC_LINK_TRANSACTION_ID) and the purchase detail (DISC_LINK_PURCHASE_DETAIL_ID). The purchase detail data of a discount transaction is the purchase detail for which the discount has been calculated for, i.e. the same as the purchase detail of the financial transaction. This allows you easy access e.g. to the VAT data which you can consider in the total VAT amount.

Correction of errors

There might come situations where the price agreement periods or price lists are not up to date or perhaps the customer has been linked to an incorrect price agreement. In these cases, there might be a need to post a correction to either add or reduce the posted discount.

The discount transaction types are available for the issuer to post via the Transaction API allowing them to independently determine the needed correction and posting it directly to the card accounts.

Fuel card discount models

Discounts are very common for fuel and fleet cards, and Enfuce has predefined this vertical’s most common discount models. The models are based on fuel purchases and are based on the assumption that line item level data is available and therefore the quantity and type of item that is purchased.

List price

This discount model is based on a list price per litre that is applied regardless of the pump price. The list price ensures the customer the same price irrespective of which station the fuelling happens. The list price can additionally include an option where the list price is discounted with a fixed amount, e.g. 0,2£. This model could also be applied to EV charging in which case the quantity would be kW and the list price per kW.

The fuel retailer is expected to update the list prices per item to Enfuce so that the correct price can be applied when calculating the discount.

Use case

  • Item purchased: Diesel
  • Pump price: 1,76 £/litre
  • List price: 1,77 £/litre
  • Discount on list price 0,2 £/litre
  • Quantity: 50 litres
  • Transaction amount: 88 £

Based on the data received in the line item level data, the list price for the item and the discount amount Enfuce will calculate and post a discount.

Price agreement periodPrice listResult
code: “diesel”code :”diesel”Discounted purchase price = quantity * list price * discount from list price
87,50£ = 50 * (1,77 -0,2)
Discount to be posted = transaction amount – discounted purchase price
0,5£ = 88 – 87,50
value: 0,2value: 1,77£
type: perEach

Lowest price

Customers with the Lowest type of discount get either a pure list discount price or pump price depending on which one is most favourable to the customer at the time of purchase. This discount model ensures that the customer can benefit from lower station prices when available and at the same time avoid station prices that are higher than the list price (reduced with discount).

Use case

  • Item purchased: Diesel
  • Pump price: 1,76 £/litre
  • List price: 1,77 £/litre
  • Discount on list price 0,2 £/litre
  • Quantity: 50 litres
  • Transaction amount: 88 £

Based on the data received in the line item level data, the list price for the item and the discount amount Enfuce will be able to determine the lowest option and post a discount accordingly.

Price agreement periodPrice listResult
code: “diesel”code :”diesel”1. Use the lowest price = pump price: 1,76 > discounted list price
1,75 (1,77-0,2)
2. Discount to be posted = transaction amount – discounted purchase price with the lowest option
0,5£ = 88 – 87,50
value: 0,2value: 1,77£
type: perEach
lowest: true

Pump price discount

Customers with a Pump price discount will get a fixed discount per litre on the pump price. This model is not dependent on external prices (unknown to the customer) but can be determined based on the data available at the point of purchase.

Use case

  • Item purchased: Diesel
  • Pump price: 1,76 £/litre
  • List price: 1,77 £/litre
  • Discount on pump price 0,2 £/litre
  • Quantity: 50 litres
  • Transaction amount: 88 £

Based on the data received in the line item level data and knowing the discount per litre that should be applied, Enfuce will be able to determine and post a discount accordingly.

Price agreement periodPrice listResult
code: “diesel”n/a1. Discounted purchase price = quantity * discounted pump price87£ = 50 * (1,76 -0,2)
2. Discount to be posted = transaction amount – discounted purchase price1£ = 88 – 87
value: 0,2
type: perEach

Wholesale + surcharge

There are global benchmark wholesale prices in the oil industry. In this discount model the price is determined based on a benchmark wholesale price (e.g. Platts) added with a fuel retailer-defined surcharge. Logically it works the same way as the list price discount model, i.e. an external unit price is applied.

Use case

  • Item purchased: Diesel
  • Pump price: 1,76 £/litre
  • Wholesale price: 1,50 £/litre
  • Fuel retailer surcharge: 0,15£/litre
  • Discount on list price 0,2 £/litre
  • Quantity: 50 litres
  • Transaction amount: 88 £

Based on the data received in the line item level data, the list price for the item and the discount amount Enfuce will calculate and post a discount.

Price agreement periodPrice listResult
code: “diesel”code :”diesel”1. Discounted purchase price = quantity * list price82,50£ = 50 * 1,65
2. Discount to be posted = transaction amount – discounted purchase price5,5£ = 88 – 82,50
value: 0,2Value: 1,65£ (wholesale + surcharge)
type: perEach

CO2 compensation

The discount solution works in reverse as well, i.e. it can be used to calculate compensations. Carbon dioxide (Co2) compensations are common in many value proposals and can provide an attractive added value feature for your customers.

We can utilise the discount engine features and possibilities to define purchase (or line item) specific compensations.

Use case

  • Purchase: Flight tickets
  • Transaction amount: 500 £

Based on the data received in the transaction and knowing the compensation model that should be applied, Enfuce will be able to determine and post compensation accordingly.

Price agreement periodPrice listResult
code: “flight tickets”n/aCompensation = transaction amount * Compensation10£ = 500 * 0,02
value: -2
type: percent