Inflation Books & Groups

To be Reviewed

Setup and usage guide for estimated pricing on future dates

Version 13 min read | March 5, 2026 Gallery

Overview

Inflation Books allow users to define inflation percentages per Inflation Group for future dates where supplier pricing has not yet been confirmed. This enables operators to sell packages with estimated pricing that automatically applies compounding inflation rates based on how far in the future the departure date falls.

When to use: When you need to sell departures that are 1-3+ years out and suppliers have not yet provided confirmed rates. The inflation percentage is applied on top of the base price to estimate future costs.

Object Model

ObjectPurpose
InflationBook__cContainer for inflation periods. Assigned to a Channel.
InflationPeriod__cDate range within a book (Valid From / Valid To). Creating a period auto-generates one Inflation Assignment per Inflation Group.
InflationAssignment__cJunction: links an Inflation Period to an Inflation Group with a specific percentage rate.
Group__cInflation Group — a grouping category used to assign different inflation rates to different types of services.

1. Create Inflation Groups

Inflation Groups categorise services that share the same inflation rate. For example, “Hotels EU” and “Hotels US” might have different inflation percentages.

  • Navigate to Inflation Setup in the Kaptio app menu

  • Go to the Inflation Group Manager tab

  • Create groups that represent your inflation categories (e.g. “Hotels EU”, “Transfers”, “Activities”)

  • Each group is a Group__c record (Inflation Groups are distinguished from other group types internally by the system)

2. Create Inflation Book

  • In Inflation Setup, create a new Inflation Book

  • Give it a descriptive name based on the region or market it covers (e.g. “EU Inflation Book”, “US Inflation Book”). The same book can cover multiple seasons by adding separate periods.

  • The book acts as a container for all inflation periods

3. Add Periods & Set Rates

  • Click the hyperlink showing the name of the book to open it for editing

  • Click New Period

  • Set Valid From date (and optionally Valid To — leave blank for open-ended)

  • One Inflation Assignment per Inflation Group is created automatically — click Edit to see them

  • Set the Percentage__c on each assignment (e.g. 3.5% for “Hotels EU”)

  • Use Copy rates from to duplicate an existing period’s rates as a starting point

4. Assign Book to Channel

  • Navigate to the Channel record

  • Set the Inflation Book lookup field to your book

  • In the Inflation section, enable the Enable Inflation checkbox — without this flag, inflation will not be applied

  • All pricing through this channel will now apply inflation when base prices exist

Service Profitability Strategy

The Service Profitability Strategy setting on the Channel controls how inflation applies to selling prices. This is a critical configuration choice:

  • Enabled: Only the cost price is inflated. The selling price is then calculated from the inflated cost using the Channel Markup/Margin or Profitability Group percentage.

  • Disabled: Both cost and selling prices are inflated independently. Fixed selling prices are inflated directly; markup-based selling prices are inflated after the markup is applied.

See the Pricing Behaviour sections below for full details and worked examples.

5. Assign Groups to Services

Assign an Inflation Group to each service type that needs estimated pricing:

ObjectFieldLevel
Price CategoryInflationGroup__cItem option level (highest priority)
Add-onInflationGroup__cItem option level (same priority as Price Category)
Meal PlanInflationGroup__cItem option level (same priority, when meal plans are priced exclusively)
ServiceInflationGroup__cService level (fallback when no item option group is set)

Resolution Order

The price engine checks whether loaded rates exist for the service dates first. If no rates are found, it resolves the Inflation Group to determine the inflation rate:

  • Loaded rates check: Are there loaded rates for the service dates? If yes, those rates are used directly — no inflation is applied.

  • Meal Plan → Inflation Group (when meal plans are priced exclusively)

  • Price Category / Add-on → Inflation Group (item option level — these are separate price requests at the same priority)

  • Service → Inflation Group (fallback)

Once the group is resolved, the engine finds the matching Inflation Assignment for that group within the active period and applies the percentage. If no inflation group is found at any of the above levels, the engine falls back to the inflation rate specified directly on the Channel.

Price Engine Logic

  • Inflation year: 364 days (52 weeks), not 365. This is intentional for week-aligned pricing.

  • Compound rate: Applied as (100 + percentage) / 100 per inflation year

  • Multi-year: If a departure is 2+ inflation years out, the rate compounds (e.g. 3% over 2 years = 1.03 × 1.03 = 6.09% total)

  • Range: Inflation periods can span any date range — there is no hardcoded maximum. The feature was originally called “24-month pricing” but the system supports arbitrary lookback windows. The standard lookback uses a 52-week (one inflation year) and 104-week (two inflation year) window, with extended lookback available via client configuration.

  • Period matching: The engine checks applicable_on(date) and applicable_for_range(start, end) on Inflation Periods

  • Cost vs selling: Both cost and selling prices can be inflated, but the calculation path differs depending on the Service Profitability Strategy setting on the Channel. See Pricing Behaviour for details.

  • Estimated indicators: Inflated prices are marked with EC (Estimated Cost) and ES (Estimated Selling) in the Kaptio UI. The ES label propagates: if the cost is estimated and the selling price is derived from that inflated cost (via markup/margin), the selling price is also marked as estimated.

Quick Reference

TaskWhere
Create/manage groupsInflation Setup → Inflation Group Manager
Create book & periodsInflation Setup → Inflation Books
Set rates per groupInflation Period → Inflation Assignments
Assign book to channelChannel → Inflation Book field
Assign group to servicePrice Category / Add-on / Item → Inflation Group field

Cost vs Selling Price Inflation

Inflation applies to both cost prices and selling prices, but they follow different calculation paths. The same inflation percentage from the Inflation Book is used for both, but how it is applied depends on the type of price and the Channel’s Service Profitability Strategy setting.

Cost Price Inflation

Cost prices are always inflated the same way, regardless of the Service Profitability setting:

  • Look back 52 weeks from the travel date to find last year’s cost

  • Apply the inflation rate to get the 12-month estimated cost

  • For 24-month: inflate the 12-month result again

Marked as EC (Estimated Cost) in the UI.

Selling Price Inflation

Selling prices depend on the Service Profitability Strategy on the Channel:

  • Enabled: Selling price is calculated from inflated cost + markup/margin. No direct inflation on the selling price.

  • Disabled: Selling prices can be inflated independently — fixed selling prices are inflated directly.

Marked as ES (Estimated Selling) when inflation is applied to the selling price — either directly, or propagated when the selling price is derived from an estimated cost.

Cost Price Estimation Flow

Add Service to Itinerary

Are there loaded rates for the service dates?

Yes

Use loaded rates

No inflation applied

No

Resolve Inflation Group, find Inflation Book on Channel

Are there rates within one inflation year (52 weeks)?

Yes

12-month inflation

Last year cost + inflation rate

EC

No

Are there rates within two inflation years (104 weeks)?

Yes

24-month inflation

12-month cost inflated again

EC

No

No Cost on Itinerary Item

Cost Price Worked Example

Last Year Cost Price: 550

Inflation Rate: 10%

PeriodFormulaResult
12-month550 + 10% = 550 × 1.10605.00 EC
24-month(550 + 10%) + 10% = 605 × 1.10665.50 EC

Selling Price: Service Profitability Enabled

When Service Profitability Strategy is enabled on the Channel, inflation is applied only to the cost price. The selling price is then derived from the inflated cost using whichever markup/margin applies. Fixed selling prices and Price Manager markup/margin are ignored — the system always recalculates from the inflated cost.

Key principle: Inflate the cost first, then apply profitability on top. The selling price is never inflated directly.

Selling Price Flow (Profitability Enabled)

Add Service to Itinerary (Service Profitability Enabled)

Fixed Sales Price?

Price Manager ignored

Channel Markup/Margin applied to inflated cost

12m: (Cost + Infl) + Ch. Markup ES

24m: ((Cost + Infl) + Infl) + Ch. Markup ES

Markup/Margin in Price Manager?

Price Manager ignored

Channel Markup/Margin applied to inflated cost

12m: (Cost + Infl) + Ch. Markup ES

24m: ((Cost + Infl) + Infl) + Ch. Markup ES

Profitability Group?

Profitability % applied to inflated cost

12m: (Cost + Infl) + Prof. %

24m: ((Cost + Infl) + Infl) + Prof. %

ES — sell is derived from estimated cost

Worked Example 1: Fixed/Markup Selling Price (Profitability Enabled)

Last Year Cost: 550

Inflation: 8%

Channel Markup: 25%

Fixed selling prices and Price Manager markup/margin are ignored. Channel Markup/Margin is applied to the inflated cost.

PeriodStep-by-StepResult
12-monthInflated cost: 550 × 1.08 = 594
Selling: 594 × 1.25742.50 ES
24-monthInflated cost: 550 × 1.08 × 1.08 = 641.52
Selling: 641.52 × 1.25801.90 ES

Worked Example 2: Profitability Group (Profitability Enabled)

Last Year Cost: 550

Inflation: 8%

Profitability Group: 40%

The Profitability Group percentage is applied to the inflated cost. Because the selling price is derived from an estimated cost, the ES label is also shown on the selling price.

PeriodStep-by-StepResult
12-monthInflated cost: 550 × 1.08 = 594
Selling: 594 × 1.40831.60 ES
24-monthInflated cost: 550 × 1.08 × 1.08 = 641.52
Selling: 641.52 × 1.40898.13 ES

Selling Price: Service Profitability Disabled

When Service Profitability Strategy is disabled on the Channel, selling prices can be inflated independently from cost prices. The behaviour depends on how the selling price was originally set up.

Key principle: Selling prices are inflated in their own right. Fixed selling prices are inflated directly; markup-based prices go through an inflate-markup-inflate chain.

Selling Price Flow (Profitability Disabled)

Add Service to Itinerary (Service Profitability Disabled)

Fixed Sales Price?

Inflate selling price directly

from last year’s fixed selling price

12m: Sell + Infl ES

24m: (Sell + Infl) + Infl ES

Markup/Margin in Price Manager?

Inflate cost → apply markup → inflate selling

Double inflation path

12m: ((Cost + Infl) + Markup) + Infl ES

24m: ((Cost + 2×Infl) + Markup) + 2×Infl ES

Profitability Group?

Profitability % applied to inflated cost

12m: (Cost + Infl) + Prof. %

24m: ((Cost + Infl) + Infl) + Prof. %

ES — sell is derived from estimated cost

Worked Example 1: Fixed Selling Price (Profitability Disabled)

Last Year Selling Price: 750

Inflation: 10%

Inflation is applied directly to the previous year’s fixed selling price.

PeriodStep-by-StepResult
12-month750 × 1.10825.00 ES
24-month750 × 1.10 × 1.10 = 825 × 1.10907.50 ES

Worked Example 2: Markup/Margin Selling Price (Profitability Disabled)

Last Year Cost: 550

Inflation: 10%

Selling Price Markup: 15%

The cost is inflated first, then the markup is applied, and then the result is inflated again to get the estimated selling price. This is the most complex calculation path.

PeriodStep-by-StepResult
12-monthInflated cost: 550 × 1.10 = 605
  • markup: 605 × 1.15 = 695.75
  • sell inflation: 695.75 × 1.10 | 765.33 ES | | 24-month | Inflated cost: 550 × 1.10 × 1.10 = 665.50
  • markup: 665.50 × 1.15 = 765.33
  • sell inflation: 765.33 × 1.10 × 1.10 | 926.04 ES |

Worked Example 3: Profitability Group (Profitability Disabled)

Last Year Cost: 550

Inflation: 10%

Profitability Group: 40%

With a Profitability Group, the behaviour is the same whether Service Profitability is enabled or disabled: inflate the cost, then apply the Profitability Group percentage. The ES label appears because the selling price is derived from an estimated cost.

PeriodStep-by-StepResult
12-monthInflated cost: 550 × 1.10 = 605
Selling: 605 × 1.40847.00 ES
24-monthInflated cost: 550 × 1.10 × 1.10 = 665.50
Selling: 665.50 × 1.40931.70 ES

Worked Examples Summary

All six selling price scenarios side by side, showing how Service Profitability Strategy changes the calculation. Cost price inflation (550 base) is the same in all cases.

Service Profitability Enabled

Only the cost is inflated. Selling price is always derived from inflated cost + markup/margin.

Selling Price TypeBase Values12-Month Selling24-Month Selling
Fixed Price / MarkupCost 550, Infl 8%, Ch. Markup 25%742.50 ES801.90 ES
Profitability GroupCost 550, Infl 8%, Prof 40%831.60 ES898.13 ES

Service Profitability Disabled

Both cost and selling can be inflated. Fixed selling prices are inflated directly; markup-based prices go through cost inflation + markup + selling inflation.

Selling Price TypeBase Values12-Month Selling24-Month Selling
Fixed Selling PriceSell 750, Infl 10%825.00 ES907.50 ES
Markup/MarginCost 550, Infl 10%, Markup 15%765.33 ES926.04 ES
Profitability GroupCost 550, Infl 10%, Prof 40%847.00 ES931.70 ES

Cost Price (Same in Both Modes)

Base Values12-Month Cost24-Month Cost
Cost 550, Inflation 10%605.00 EC665.50 EC

Key Differences at a Glance

  • Fixed/Markup + Enabled: Selling is derived from inflated cost. The original selling price is irrelevant.

  • Fixed + Disabled: The selling price itself is inflated directly — simplest path.

  • Markup + Disabled: Most complex — cost inflation, markup, then selling inflation (double inflation effect).

  • Profitability Group: Always the same regardless of the toggle — inflated cost + profitability %. ES label appears because selling is derived from estimated cost.

Salesforce Objects

  • InflationBook__c

  • InflationPeriod__c (child of Book)

  • InflationAssignment__c (junction: Period × Group)

  • Group__c (Inflation Group)

  • Channel__c.InflationBook__c (lookup)

  • Channel__c.EnableInflation__c (checkbox — required for inflation to be applied)

  • Channel__c.ProfitabilityStrategy__c (controls how selling price is derived from inflated cost)

  • Price_Category__c.InflationGroup__c

  • Item__c.InflationGroup__c

Code References

FilePurpose
kaptiotravel/InflationPeriods.clsAuto-creates Inflation Assignments when a period is inserted
kaptiotravel/Groups.clsCreates Inflation Assignments when a new Inflation Group is created
kaptiotravel/BaseFallbackBookService.clsInflation Book UI in Lightning
kaptiotravel/InflationGroupManagerController.clsInflation Group Manager UI controller
ktapi/pipes/mixins.pyInflation group resolution (Meal Plan → Price Category/Add-on → Service) and day handler
ktapi/InflationAssignmentCollectorCollects applicable inflation assignments for pricing
ktapi/response_helper.pyInflation rate calculation, 364-day year constant

See Also

Back to Gallery