# Every training discount scenario

Compare every training discount type, condition and combination through worked examples presented in tables.

Language : en
Updated : 2026-09-16
Source : https://app.staging.bookelio.app/docs/en/training-discount-scenarios

## How to read the tables on this page

This page covers every type of condition that you can configure under **Dashboard → Training courses → Pricing groups**. Amounts are fictional examples excluding VAT. A course must be linked to the pricing group containing the rule; otherwise, none of that group's rules can apply.

Unless stated otherwise, the examples use a course costing **€200 excluding VAT**, held on **15 October 2026**, with a registration made on **1 September 2026**, which is 44 calendar days in advance.

A rule must contain at least one condition based on history, early registration or the course cut-off date. These are the seven possible combinations:

| History | Advance | Cut-off date | Example rule | Outcome in the example |
| --- | --- | --- | --- | --- |
| Yes | No | No | 10% after 2 paid dates | Applied if the customer has at least 2 eligible dates |
| No | Yes | No | 10% at least 30 days in advance | Applied: 44 days in advance |
| No | No | Yes | 10% for a course no later than 31 October 2026 | Applied: 15 October is included |
| Yes | Yes | No | €20 after 2 dates and at least 30 days in advance | Applied only when both conditions are true |
| Yes | No | Yes | €20 after 2 dates and by 31 October 2026 | Applied only when both conditions are true |
| No | Yes | Yes | €20 at least 30 days in advance and by 31 October 2026 | Applied only when both conditions are true |
| Yes | Yes | Yes | €30 after 2 dates, 30 days in advance and by 31 October 2026 | Applied only when all three conditions are true |

Leaving all three conditions empty does not create a general discount: that configuration is rejected.

## Choosing a percentage or fixed amount

Both discount forms apply to the unit price for the date. A date-specific price replaces the general course price when one has been entered.

| Type | Fictional setting | Calculation on €200 excluding VAT | Discounted unit price |
| --- | --- | --- | --- |
| Percentage | 15% | €200 × 15% = €30 | €170 excluding VAT |
| Fixed amount | €30 | €200 − €30 | €170 excluding VAT |
| Maximum percentage | 100% | €200 discount | €0 excluding VAT |
| Fixed amount above the price | €250 | Discount capped at €200 | €0 excluding VAT |

The percentage must be positive and cannot exceed 100%. A fixed amount must be positive. A discount never makes the price negative and does not apply to a zero or negative target price.

## Deciding which courses are counted

History is found through the **billing customer's** email address, ignoring case, within the current organisation. The participant's email is not used. Several customer records carrying the same billing email may therefore contribute to the same history.

The same date is counted once, even when several participants or registrations are associated with it. The date currently being priced is always excluded. Both past and future dates may be counted when they pass the rule's filters.

### The required payment

A historical registration must be linked to a payment request containing **at least one payment with Completed status**. The calculation checks for that status, not full settlement of the balance, the amount paid, attendance or the course price.

| Historical course or registration | Linked payment | Counted before the other filters? | Explanation |
| --- | --- | --- | --- |
| Paid course, settled in full | At least one Completed payment | Yes | The required payment evidence is present |
| Instalments, only the deposit paid | Completed deposit, unpaid balance | Yes | One completed payment is enough |
| Payment request created but unpaid | No payment, or Pending payment | No | A request alone is not enough |
| Failed payment | Failed payment only | No | Only Completed status is accepted |
| Free €0 course | No completed payment | No | Being free does not replace payment evidence |
| Free €0 course with a linked completed payment record | Completed payment, even for €0 | Yes | The engine does not require a positive amount |
| Price manually reduced to €0 | No completed payment | No | The manual amount does not make the date eligible |
| Completed payment later refunded | The payment retains Completed status | Yes | Refunds and the net amount are not checked |
| Waitlisted registration | Linked Completed payment | Yes | Registration status is not filtered |
| Attendance recorded without completed payment | No Completed payment | No | Attendance is not payment evidence |
| Several participants on the same date | Completed payment linked to their registrations | Yes, once only | Dates are deduplicated by training date |
| Target date already present in history | Completed payment | No | The target date is always excluded from itself |
| Future date already paid | Completed payment | Yes | The time window may subsequently exclude it |
| Course from another organisation | Completed payment | No | History is limited to the current organisation |

A date passing this first check must still satisfy the rule's time window and pricing-group scope. “Counted” therefore does not mean “settled in full”, “attended” or “completed”.

### The three counting methods

Assume three eligible dates: 2 days and 14 hours, 1 day and 7 hours, then 1 day and 7 hours.

| History criterion | Calculated value | Fictional threshold | Eligible rule? |
| --- | --- | --- | --- |
| Number of courses | 3 distinct dates | 3 | Yes |
| Number of days | 2 + 1 + 1 = 4 days | 4 | Yes |
| Number of hours | 14 + 7 + 7 = 28 hours | 30 | No |

For days and hours, the date-specific duration takes priority, followed by the course duration. A missing duration contributes zero; it is not derived from the start and end times. Once the payment condition is met, the price — even zero — does not change the duration counted.

### The three group scopes

Assume one date in the same pricing group, one in another group and one with no group.

| Rule option | Same group | Other group | No group | Counted total |
| --- | ---: | ---: | ---: | ---: |
| Neither option selected | Yes | Yes | Yes | 3 |
| Same pricing group | Yes | No | No | 1 |
| Only activities with a pricing group | Yes | Yes | No | 2 |

The two scope options are mutually exclusive: they cannot be enabled together.

### The four time windows

The window is centred on the course date being priced, here 15 October. Both boundaries are inclusive and an empty field means “unlimited” on that side. The fictional history contains 1 September, 1 October and 20 October.

| Past days | Future days | Eligible period | Counted dates |
| ---: | ---: | --- | --- |
| Empty | Empty | Unlimited before and after | 1 September, 1 October and 20 October |
| 30 | 0 | 15 September through 15 October, inclusive | 1 October |
| 0 | 10 | 15 through 25 October, inclusive | 20 October |
| 45 | 10 | 31 August through 25 October, inclusive | All three dates |

Entering only **Past days** does not remove future dates because the future boundary remains unlimited. Use zero to close one side of the window explicitly.

## Using a condition without history

Select **No history criterion** when a discount depends only on the registration timing or the course date.

| Scenario | Fictional setting | Example | Outcome |
| --- | --- | --- | --- |
| Early registration accepted | At least 30 days before | Registration on 1 September for 15 October: 44 days | Applied |
| Early registration rejected | At least 30 days before | Registration on 20 September for 15 October: 25 days | Not applied |
| Cut-off date included | Course by 15 October 2026 | Course on 15 October | Applied |
| Cut-off date exceeded | Course by 14 October 2026 | Course on 15 October | Not applied |

The cut-off concerns the course date, not the day on which the customer registers. An advance threshold of zero is met by a registration on the day of the course, but not by a later registration.

## Combining several conditions in one rule

Conditions within one rule use **AND** logic. Consider a €30 fixed discount, a minimum history of 2 dates, 30 days' advance and a cut-off of 31 October 2026.

| Eligible dates | Days in advance | Course date | Are all three conditions true? | Discount |
| ---: | ---: | --- | --- | ---: |
| 2 | 44 | 15 October 2026 | Yes | €30 |
| 1 | 44 | 15 October 2026 | No: insufficient history | €0 |
| 2 | 25 | 15 October 2026 | No: insufficient advance | €0 |
| 2 | 44 | 1 November 2026 | No: cut-off date exceeded | €0 |

Time-window and group filters are applied to the history before its value is compared with the threshold.

## Resolving several rules

Eligible rules are never cumulative. Bookelio calculates their values from the same unit price and keeps the financially largest discount, irrespective of which rule has the highest threshold. If values tie, the rule listed first wins.

| Rule on €200 | Calculated discount | Outcome |
| --- | ---: | --- |
| Eligible loyalty rule: 10% | €20 | Not selected |
| Eligible campaign rule: fixed €25 | €25 | Selected |
| Eligible early-registration rule: 12.5% | €25 | Not selected because it follows the fixed discount |
| Old rule: fixed €40, inactive | €40 | Ignored |

In this example, the discounted price is €175 excluding VAT, not €130: the €20, €25 and €25 discounts are not added together.

## Moving from unit price to registration total

The rule first produces a suggested price per participant. That result is multiplied by the participant count, after which the customer's VAT is calculated. An excluding-VAT amount entered manually by a manager replaces the suggested total; it does not alter the rule or history.

| Scenario with a €200 price and 10% discount | Participants | Initial total excl. VAT | Suggested discount | Total excl. VAT | VAT at 21% | Total incl. VAT |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| Individual registration | 1 | €200 | €20 | €180 | €37.80 | €217.80 |
| Group registration | 2 | €400 | €40 | €360 | €75.60 | €435.60 |
| Manual adjustment to €350 excl. VAT for 2 people | 2 | €400 | €40 suggested | €350 | €73.50 | €423.50 |

The new participant count multiplies the awarded discount; it does not help reach a history threshold. Ten participants registered together still represent a single date in a future history calculation.

## Recognising every no-discount scenario

| Situation | Why no automatic discount is applied |
| --- | --- |
| Course without a pricing group | No rule is associated with the course |
| Zero or negative target unit price | The engine does not reduce a non-positive price |
| Inactive rule | It is retained but ignored |
| No condition configured | The rule is invalid and cannot be saved |
| History criterion without a threshold | The configuration is incomplete |
| Threshold not met | The counted value is below the threshold |
| Insufficient advance | Too few days separate registration and course |
| Course date after the cut-off | The final boundary has been exceeded |
| History without a completed payment | The relevant registrations are ineligible |
| Missing or different billing email | The same customer's history is not found |
| Dates outside the window or group scope | They are removed before the threshold is calculated |
| Several eligible rules | Only the best is applied; the others are not added |

## Reproducing a scenario in the simulator

Open the discount simulator from **Training courses**, choose the customer and target date, then set the registration date. Select the history dates to test and inspect each rule's counted value, window, group, days in advance, and acceptance or rejection reason.

The option that treats dates as paid is only a simulator assumption. It records no payment. For the detailed operation of the tool and real history, read [Understanding and testing training discounts](/docs/en/pricing-and-discounts).
