Dynamic Markups


Dynamic Markups offer you the ideal solution to achieve optimal results - selling at maximum profit while maintaining competitiveness by offering lower prices compared to your leading competitors.

For instance, let's consider a specific hotel package offered by a supplier at a public rate of $500, while your Net rate is $300. By leveraging dynamic markups, you can configure the system to set the sale price slightly below the market rate - $490.

The markup system is highly customizable, offering a wide array of options and settings.
You have the flexibility to determine how much lower than the "market price" you want to price a particular room. Furthermore, in scenarios where your default markup is 15%, but the market price falls below your offering, Dynamic Markups allow you to adjust your selling price within the preset parameters, ensuring competitiveness and making successful sales.


Note -

The system's Dynamic Markup feature is advanced and the configuration process is complex and sensitive. We highly recommend thoroughly familiarizing yourself with the system before proceeding with the configuration. This will enable you to use the feature effectively and avoid any potential issues.

Offer categories

The system utilizes three distinct offer type categories (to be defined for each account in the contracts section) :

  • Not Participating (NP): Offers falling under this category will not be considered by the Dynamic Markup logic. Only standard static markups will be applied to these offers.
  • Market Price Source (MPS): Rate offers categorized under MPS will serve as the price reference for target offers. These offers act as the baseline for determining pricing.
  • Dynamic Markup Target (DMT): Rate offers falling under the DMT category will have the Dynamic Markup logic applied to them. Prices for these offers will be referenced to the MPS offers, enabling dynamic adjustments to maximize competitiveness and profitability.

Understanding Parity

Parity in the context of hotels refers to a situation where the price of a specific hotel is directly linked to another price, typically determined by the instructions provided by Gross type contract regarding the allowed pricing. This is often done to establish minimum prices for the hotel.

When parity exists for a hotel, it becomes essential for the system to consider it when determining the Goal Price. The Goal Price must not be set lower than the Market Price in such cases.

  • For MPS (Market Price Source) and DMT (Dynamic Markup Target) offers, you have the option to define whether parity should be taken into account.
  • MPS without parity: Dynamic Markup will not consider these offers for determining parity. Parity is not a factor in calculating the Goal Price for such offers.
  • DMT without parity: Dynamic Markup will be calculated for these price offers without any parity limitations. In other words, the Dynamic Markup logic will be applied to these offers without considering parity requirements.

To illustrate, suppose Dynamic Markup is considering 3 MPS with parity offers for $100, $105, and $109. The delta between the two lowest prices ($100 and $105) is $5.

Now, let's assume the 'Parity price delta' was defined as $4. The resulting delta of $5 does not fulfill the requirement. In such a scenario, Dynamic Markup will attempt to group the next two cheapest packages, which are $105 and $109. The resulting delta between these two prices is $4, which fulfills the delta requirement set by the user. Thus, the parity price, in this case, is $105.

By understanding and effectively configuring parity considerations for MPS and DMT offers, you can ensure that the Goal Price is accurately determined, respecting parity requirements and market dynamics.

Finding suppliers

To enable Dynamic Markups, you need to configure the contracts appropriately on the contract level.
A valid configuration should include at least one MPS account (Market Price Source) and at least one DMT account (Dynamic Markup Target).

Follow these steps to set up contracts:

  • Go to the Backoffice Website: Access the Back-Office website related to your Dynamic Markup system.

  • Navigate to the Contracts Screen: In the top-right corner of the page, look for the top-right icon, and click on it. From the dropdown menu, select "Contracts screen."

  • Choose Hotels Service: Once on the Contracts screen, select the "Hotels" service from the available options.

  • Select a Supplier: Look for the supplier name that you want to configure contracts for, and click on it. By doing this, all contracts associated with the selected supplier will be displayed on the right-hand side.

  • Configure Contracts: Review the contracts associated with the supplier, and ensure that you have at least one MPS account and at least one DMT account defined for the Dynamic Markup logic to work correctly.

Configuring a Market Price Source Account

Market Price Source (MPS) accounts are normally Gross type contracts which are essential for the dynamic markups logic.

Dynamic Markup Target (DMT) accounts are Net type contracts which are essential for the dynamic markups logic..

Dyn.markup types

  • Not Participating (NP): Packages related to the account will not be considered in the Dynamic Markup logic. Standard static markups will apply to these offers.
  • Market Price Source , considering parity : Packages related to the account will serve as Market Price Sources (MPS). These offers act as the baseline for determining pricing.
  • Target, affected by parity : Packages related to the account will serve as Dynamic Markup Targets (DMT). The Dynamic Markup logic will be applied to these rate offers, and prices will be referenced to MPS offers for dynamic adjustments.
  • Market Price Source , ignoring parity : Packages related to the account will serve as Market Price Sources (MPS); however, the system will not consider them for determining parity. Parity considerations will not apply to these offers.
  • Target , unaffected by parity : Packages related to the account will serve as Dynamic Markup Targets (DMT). However, they will not be influenced by Parity, meaning that dynamic markups will be calculated for them as if no Parity was identified.

These offer categories help in customizing the pricing strategy for each account and enable you to maximize competitiveness while maintaining flexibility and control over the pricing of different packages.

Practical Example

Package Price: $90
Market Price for Related Package Group: $210
Min Markup (set on contract): $5
Package Delta from Market Price: $210 - $90 = $120
Amount Below Market Price Percentage: ~42% (0.42 as a decimal)

Goal Price = Market Price - [(Min Markup + Package Delta from Market Price) * Amount Below Market Price %]

Goal Price = $210 - [($5 + $120) * 0.42]

Goal Price = $210 - [($125) * 0.42]

Goal Price = $210 - $52.5

Goal Price = $157.5

So, in this example, the calculated Goal Price is $157.5. The Dynamic Markup logic will aim to set the final price for this package at $157.5 to remain competitive while taking into account the Min Markup and the Package Delta from Market Price, as well as the configured Amount Below Market Price Percentage.

Remember that the calculation of the Dynamic Markup takes place after the static markup calculations, which means that the system will first apply any standard static markups and then use the Dynamic Markup logic to further adjust the prices for optimal competitiveness and profitability.

Using the Dynamic Markups feature

To utilize the Dynamic Markup feature, you must enable the corresponding setting at the client level.
To do so, follow these steps:

  1. Enable 'Can use Dynamic Markup' feature: Under the 'client Settings' tab, ensure that the 'Can use Dynamic Markup' option is enabled. If you need assistance with enabling this feature, please reach out to support team.

  2. Configuring Dynamic Markup Settings: Once the feature is enabled, it's time to configure the dynamic markup settings. To do this, follow these steps:

    1. Navigate to a node or a user: Identify the relevant node or user account where you wish to apply the dynamic markup settings.
    2. Click on the 'Operational Settings' tab: Within the node or user account, locate the 'Operational Settings' tab and click on it.

By completing these steps, you will have successfully enabled and configured the Dynamic Markup feature for the specified client account.
This will allow you to dynamically adjust markups and optimize pricing for enhanced competitiveness and profitability.

To configure the Dynamic Markup feature effectively, follow these guidelines for each parameter

  • Markup Type: Set the markup type to "Group by price key" for the default recommended settings. This setting allows for advanced grouping of prices, which is beneficial for optimizing pricing strategies.
  • Parity Price Delta: Define the desired price delta (in the default user currency) to determine parity among the two lowest-priced Market Price Source (MPS) offers with parity offers.
    This helps ensure price competitiveness and alignment with the market.
  • Amount Below/Above Market Price: Specify the desired percentage price decrease allowed for non-parity offers.
    This setting allows you to adjust prices for non-parity offers, enabling you to remain competitive even when not at parity with the market.
  • Results Output: Choose the desired offer type to output based on the Dynamic Markup logic.

Markup limits - Min & Max

The Dynamic Markups logic takes into account the Min-Max Markup Limits that have been configured for the node.
(Manage Company โ†’ Node โ†’ Node Markups โ†’ Account Markups & Commissions screen)

The Min Markup Limit
Sets a threshold for the Dynamic Markup Target (DMT) packages.
The system will attempt to lower the price of all DMT packages, provided that it remains higher than the Goal Price, while adhering to the Min Markup value. In other words, the system will strive to decrease the price as close as possible to the Goal Price, considering the specified Min Markup value.

If no Min Markup Limit is defined, the system will reduce the price up to the node's minimum static markup. This ensures that the final price stays within the acceptable range and maintains consistency with the node's pricing policies.

The Max Markup Limit
determines the upper threshold for Dynamic Markup Target (DMT) packages. The system will attempt to increase the price of all DMT packages up to the Goal Price, while ensuring that the total markup does not exceed the specified Max Markup Limit.

In case no Max Markup Limit value is defined, the system has the flexibility to apply markup without any upper limit on the DMT package. This means that the markup can be adjusted freely until the Goal Price is reached without any constraints.

How Dynamic Markups are reflected

Once Dynamic Markup is enabled, it operates behind the scenes, grouping identical rooms from various suppliers, using sophisticated business logic.

It applies markups according to predefined settings and configurations, then incorporates these markups into the GetPackages Response, which includes the package details.

To view markups for different rooms, refer to the session logs, which provide two options:

  1. DynMarkupDumpWithPrices.csv
  2. HotelPackagesMarkups


The DynMarkupDumpWithPrices is a ".csv" file that is being generated once the dyn.markup logic is being initiated.

The file will contain a row for each room that was returned in the GetPakcages Step, along with monetary information, room information, markups, profits and much more .

ColumnField NameField Description
APriceKeyPrice key - used to group packages by pricing.
* separate explanation.
BRoomNameRoom names as returned in the GetPackages .
CRefundabilityRefundable / Non-refundable.
DAvailabilityAvailable / unavailable .
ERoomsCountRooms count.
FRoomBasis Room basis as returned in the GetPakcages.
GBucketKeyForPricingBucket key for grouping by prices .
* separate explanation.
HSupplierNameSupplier short name.
IContractIdThe used contract's id.
JDynMarkupTypeDynamic markup type : Source / Target
KNodeMarkupsMarkups breakdown by Nodes.
LCommissionFromParentCommission of the packages from Parent Node (when applicable).
MNodeProfitProfits of the package by Nodes.
NDynamicMarkupFeeDynamic markup added fee.
OFinalConvertedPriceAllNodesFinal converted price of all Nodes.
POriginalConvertedNetOriginal converted package Net price.
QFinalConvertedPriceFinal converted package price.
RSumOfAllNodesProfitSum of all Nodes profit .
SBiasPriceBiased price (when applicable).
TDisplayKeyA key for displaying .
* separate explanation.
UBucketKeyForDisplayBucket key for displaying.
* separate explanation.
VWinningRateTrue / False .
In each "BucketKeyForDisplay" - there's only 1 winning rate (the cheapest while profit is the highest).
WHiddenPostDynMarkupRulesV2True / False .
True - when the package was hidden before the markup logic is applied .
False - when not.
XWinningRateHiddenByRuleTrue / False .
True - when the package is hidden by "Hotel Rules".
YPackageIdPackageID as returned in the GetPackages .



After downloading the "DynMarkupDumpWithPrices.csv" file - it is required to change the name from ".txt" to ".csv".


The "HotelPackagesMarkups" log is also generated once the the dyn.markup logic is being initiated.

The "HotelPackagesMarkups" log includes details like room descriptions, node markups, commissions, profits, and a detailed breakdown of markups by nodes, including financial data.

To find specific information, use "Ctrl + F" to search for the PackageID from the GetPackages.