Cost & Pricing Architecture

To be Reviewed

How cost modes (Fixed Cost, Dynamic Cost) and sales price modes (Fixed Price, Channel Markup/Margin, Profitability Markup/Margin) work together, price season configuration, markup/margin chains, and how to verify margins are correct.

Version 22 min read | March 4, 2026 Gallery

Overview

Pricing in Kaptio connects two numbers: what you pay the supplier (net cost) and what the customer pays (sell price). The gap between them is your margin, and how that gap is calculated depends on two independent choices:

  1. How you get the cost — the net cost can be entered manually (Fixed Cost) or pulled automatically from an external supplier feed (Dynamic Cost).
  2. How you calculate the sell price — the sell price can be set explicitly (Fixed Price), derived from a percentage applied at the channel level (Channel Markup/Margin), or controlled per service group and time period (Profitability Markup/Margin).

These two dimensions are independent. A Dynamic Cost service (live supplier rates) can use any of the three sales price modes, and a Fixed Cost service (manually entered rates) can too. The combination you choose depends on your supplier relationships and commercial model.

This guide walks through both cost modes and all three sales price modes, explains how net costs and sell prices are configured, shows how markups/margins cascade through the pricing chain, and provides the tools to verify that margins are landing where you expect.

Important: The Price Based On setting on a service determines how prices are resolved when a stay crosses a season boundary — it applies to both cost and selling rates. If your services span multiple seasons, this setting directly affects the amounts calculated. See How Price Based On Affects Costs for the full explanation and a worked example.

Prerequisites

Before configuring pricing, ensure the following are in place:

  • Business Unit configured with the correct base currency and tax profile (Organization Structure Guide, Currency & Tax Configuration)
  • Services created with price categories for each occupancy or passenger type (Supplier & Service Setup). If categories were bulk-imported, each record needs Sort Order populated — otherwise Pre/Post Stay tabs in package search may omit the service silently (troubleshooting).
  • Sales channels defined — you should know which channels will sell each package
  • Pricing strategy agreed — your commercial team should have decided on the target margins, markup percentages, or fixed prices before you start configuring
  • Admin or Product Manager access in Kaptio

Part 1: Overview of Pricing Modes

Pricing in Kaptio has two independent dimensions: how you get the cost (the net amount you pay the supplier) and how you calculate the sell price (the amount the customer pays). These are configured separately, and any cost mode can be combined with any sales price mode.

Two Cost Modes

The cost mode determines where the net cost comes from — whether you enter it manually or it arrives automatically from an external supplier system.

Fixed Cost

Fixed Cost is the default approach. You enter the supplier rate manually on the service’s price category in the Price Manager. The cost stays as entered until you update it.

When to use:

  • Supplier rates are contracted in advance and do not change frequently
  • You receive a rate sheet from the supplier and enter it once per season
  • Most service types — accommodation, activities, transfers — where rates are agreed ahead of time

Tip: Fixed Cost is the most common cost mode. If you do not have a live supplier integration, you are using Fixed Cost.

Dynamic Cost

Dynamic Cost pulls the net cost from an external supplier system through Kaptio Connect, rather than using a manually entered value. The cost is retrieved in real time when a price request is made.

When to use:

  • Supplier costs change frequently and need to come from a live feed (flights, dynamic-rate hotels, GDS-connected services)
  • You want real-time cost accuracy without manually updating price categories each time the supplier changes rates
  • The supplier system is the source of truth for what you pay — but you still control the customer-facing price through your chosen sales price mode
  • You are integrating with a GDS, channel manager, or custom pricing API for cost retrieval

Important: Dynamic Cost requires a working Kaptio Connect integration for the cost feed. The selling price mode (Fixed Price, Channel Markup/Margin, etc.) is configured separately on the package or channel, just as it would be for any Fixed Cost service. Coordinate with your technical team for the integration work.

Fixed Cost vs. Dynamic Cost

Fixed CostDynamic Cost
Cost sourceEntered manually in Price ManagerRetrieved automatically from external supplier via Kaptio Connect
When to useRates contracted in advance; supplier sends rate sheetsRates change frequently; live feed from GDS or channel manager
UpdatesManual — you update costs when supplier rates changeAutomatic — costs refresh on each price request
Integration requiredNoneKaptio Connect
Setup complexityLowHigh (requires integration work)

Three Sales Price Modes

The sales price mode determines how the system calculates the customer-facing sell price from the net cost. Every Service or Package uses one of three modes. The modes below are listed in the order the system checks when resolving a selling price — it looks for a Fixed Price first, then a Profitability rate, and only falls back to Channel Markup/Margin if neither exists.

Three Sales Price ModesMODEFORMULAEXAMPLEFixedPricesell = explicit amountSet on Price Categorycost $800 → sell $1,200Explicit sell price enteredProfitabilityMarkup/Marginsell = cost adj. by grp%Per service group & period$800 x 1.25 = $1,00025% accommodation groupChannelMarkup/Marginsell = cost adj. by ch%Percentage on Sales Channel$800 x 1.25 = $1,00025% channel rate

Fixed Price

Fixed Price bypasses formula-based calculation entirely. You enter the exact sell price directly on the price category, and the system uses it as-is. Because this is the highest-priority mode, a Fixed Price always wins when present.

How it works:

  1. Net cost is defined on the price category (or arrives via Dynamic Cost).
  2. Sell price is also defined on the price category — entered explicitly.
  3. No percentage is applied. The entered sell price is the final price.

Example:

FieldValue
Net cost (charter flight)$650
Fixed sell price$900
Gross margin$250 (27.8% margin)

When to use:

  • Prices are contractually fixed with the customer or distribution partner
  • Published brochure prices that cannot change with cost fluctuations
  • One-off packages where the price was negotiated directly
  • Situations where sell price must exactly match an external price list

Important: Fixed prices require manual maintenance. If supplier costs change, the sell price does not adjust automatically — you must update it yourself. Monitor margins carefully when using this mode.

Profitability Markup/Margin

Profitability Markup/Margin gives you granular control over sell price margins by service type and time period. Where Channel Markup/Margin applies a single percentage to everything in a channel, Profitability lets you set different markup/margin targets for accommodation, activities, transfers, and any other service grouping — and vary those targets by season. The system checks for a Profitability rate when no Fixed Price exists.

How it works:

  1. Services are assigned to Profitability Groups (e.g., Accommodation, Activities, Transfers).
  2. A Profitability Book holds one or more Profitability Periods — date ranges with their own percentages per group.
  3. The book is assigned to a Sales Channel.
  4. When pricing is calculated, the system looks up the group and period to find the correct percentage.

When to use:

  • Your commercial model requires different margin targets for different service types (e.g., 20% on accommodation, 35% on activities)
  • Margins need to change by time period (e.g., higher margins in peak season)
  • You need more control than a single flat percentage across all services

Tip: See Part 5: Profitability Setup for the full step-by-step configuration guide, worked examples, and a comparison with Channel Markup/Margin.

Channel Markup/Margin

Channel Markup/Margin applies a single percentage at the sales channel level. Every Service or Package sold through that channel gets the same markup/margin on top of the net cost. This is the fallback mode — the system uses it only when no Fixed Price or Profitability rate applies.

How it works:

  1. Net cost is defined on the service’s price category (or arrives via Dynamic Cost).
  2. The percentage is set on the Sales Channel record.
  3. Sell price = Net cost × (1 + percentage) for markup, or Net cost ÷ (1 − percentage) for margin.

Example calculation (using markup):

FieldValue
Net cost (hotel room)$800
Channel markup/margin25%
Sell price (markup)$800 × 1.25 = $1,000
Gross margin$200

When to use:

  • You want a uniform margin across all products in a channel
  • Pricing is cost-plus with a standard trade margin
  • You do not need per-package pricing flexibility
  • Common for wholesale / B2B channels where a single trade margin applies

Tip: Channel Markup/Margin is the simplest mode to configure and maintain. If your commercial model uses a flat trade margin, start here. Your commercial team chooses whether to use markup or margin at implementation time.

Choosing the Right Mode

Cost modes:

ConsiderationFixed CostDynamic Cost
Supplier rates contracted in advance
Supplier costs change frequently
Live feed from GDS or channel manager
Manual rate entry
Requires Kaptio Connect integration
Setup complexityLowHigh

Sales price modes:

ConsiderationChannel Markup/MarginFixed PriceProfitability Markup/Margin
Uniform margin across channel
Per-service-group margin control
Seasonal margin variation
Contractually fixed prices
Controls sell price locally
Setup complexityLowLowModerate
Maintenance effortLowHighModerate

Part 2: Setting Up Net Costs

Step 1: Set Up Price Seasons

Price seasons define the date ranges that determine which cost (and sell price) applies to a booking. Before entering any costs, set up the seasons on each service so you have the time periods ready.

  1. Navigate to the service record.
  2. Open the Price Manager related list.
  3. Click New Price Season.
  4. Fill in the required fields:
FieldDescription
Season NameA descriptive label for the period (e.g., High Season 2026, Shoulder Apr–Jun)
Start DateThe first date this season covers (inclusive)
End DateThe last date this season covers (inclusive)
  1. Repeat for each season that applies to this service (e.g., High, Shoulder, Low).

Tip: Plan your full season calendar before you start entering costs. Gaps between seasons can cause pricing errors — make sure your date ranges cover every day of the year with no overlaps and no gaps.

Supplier costs often vary by season. Once your price seasons are configured, you set a different cost for each season on the service’s price category. When a booking date falls within a season, the system pulls the cost from the matching price season automatically.

SeasonDate RangeHotel Net Cost/Night
HighJul 1 – Aug 31$350
ShoulderApr 1 – Jun 30, Sep 1 – Oct 31$250
LowNov 1 – Mar 31$150

This means a 7-night package booked for July will use the $350/night rate, while the same package booked for October will use $250/night. The sell price adjusts automatically based on the sales price mode.

Step 2: Configure Service Costs

Net costs are entered via the Price Manager on the service record.

  1. Navigate to the service record.
  2. Open the Price Manager related list.
  3. Select the Manage Prices button.
  4. On the Cost tab, select the Sales Type according to who should get this price:
    • All Customers — This Cost Price has no restrictions and is assigned to all customers in all Channels.
    • Pricelist — The Cost Price is only available to the relevant selling Channel.
    • Price Group — The Cost Price is only available to customers who belong to a specific Price Group.
    • Customer — As default, the customer here relates to Travel Agent only. The Cost Price is specific to just one Travel Agent.
  5. The Assignment column is context-based on the Sales Type field. For All Customers, this field is disabled.
  6. Select the Price Category that the price relates to using the Links to field. You can assign the price to several Price Categories.
  7. Select the Price Season that the price applies to.
  8. Enter the Currency for the Cost Price.
  9. Enter the supplier rate in the Value field.
  10. Repeat for all Price Seasons and Price Categories, then Save.

Screenshot showing the setup of a Cost Price in the Price Manager — Cost tab with Sales Type, Assignment, Links to, Price Season, Currency, and Value fields

Step 3: Handle Multi-Currency Costs

When a supplier invoices in a different currency than your Business Unit’s base currency, you need to manage the conversion.

  1. Ensure the supplier’s cost currency is configured in Kaptio (Currency & Tax Configuration).
  2. Enter the net cost in the supplier’s currency on the price category. In the Price Manager, also set the Currency field to match the supplier’s currency so the system knows exactly which currency the entered value is in.
  3. The system converts to the Business Unit’s base currency using the configured exchange rate at the time of booking or price calculation.
ScenarioApproach
Supplier costs in USD, selling in EUREnter cost in USD; system converts at configured FX rate
Supplier costs in local currencyEnter cost in local currency; ensure FX rate is maintained
Contracted cost in your base currencyEnter cost directly — no conversion needed

Important: Exchange rates must be kept current. Stale rates will cause margin drift. Review your FX rate update frequency as part of your pricing maintenance process.

How Price Based On Affects Costs

When a multi-day stay crosses a season boundary, the Price Based On setting on the service determines how the system resolves the nightly rate. This is a picklist on the service record with two options: Each Day and First Day.

  • Each Day — the system looks up the applicable price season for every individual night of the stay and applies the matching rate to that night. A stay that spans two seasons will use different rates for the nights that fall in each season.
  • First Day — the system uses the rate from the price season that covers the arrival (check-in) date and applies that single rate to every night of the stay, regardless of whether later nights fall into a different season.

Example: 7-night stay checking in 29 August (High → Shoulder season boundary on 1 September)

Using the seasonal rates from the table above (High = $350/night, Shoulder = $250/night), a guest checking in on 29 August has 3 nights in High season (29–31 Aug) and 4 nights in Shoulder season (1–4 Sep):

NightSeasonEach Day RateFirst Day Rate
Night 1 (29 Aug)High$350$350
Night 2 (30 Aug)High$350$350
Night 3 (31 Aug)High$350$350
Night 4 (1 Sep)Shoulder$250$350
Night 5 (2 Sep)Shoulder$250$350
Night 6 (3 Sep)Shoulder$250$350
Night 7 (4 Sep)Shoulder$250$350
Total$2,050$2,450

With Each Day, the guest pays the lower Shoulder rate for the four nights that fall after the season boundary — a $400 difference. With First Day, the High season rate from check-in is locked in for the entire stay.

When to use each option:

OptionUse When
Each DayThe supplier charges different rates depending on the actual date of each night (most common for hotels and lodges with seasonal contracts)
First DayThe supplier locks the rate based on the check-in date — once the stay begins, the nightly rate does not change mid-stay

Tip: If you are unsure which option to select, check how the supplier quotes multi-night stays that cross a season boundary. If they apply a blended rate based on each night’s date, use Each Day. If they quote a flat rate based on arrival date, use First Day.

How Pricing Type Affects Cost Calculation

The Pricing Type setting on a service determines whether the price entered on a price category is treated as a per-night/per-day rate (multiplied by the number of days in the stay) or as a flat, one-off amount for the entire booking — regardless of how many days the service covers.

This is a picklist on the service record with two options: Standard and Booking.

  • Standard — the system multiplies the rate on the price category by the number of nights (or days) in the stay. A 5-night stay at $200/night produces a total of $1,000.
  • Booking — the system uses the rate on the price category as a flat amount for the entire booking. A 5-night stay with a $200 rate produces a total of $200, because the price applies once regardless of duration.

Example: $200 rate for a 5-night stay

StandardBooking
Rate on price category$200/night$200 (flat)
Number of nights55
Calculation$200 × 5$200 × 1
Total cost$1,000$200

When to use each option:

Pricing TypeUse WhenTypical Service Types
StandardThe supplier charges per night or per day — the total cost scales with the length of stayAccommodation, per-night lodges, campsite fees
BookingThe supplier charges a flat fee for the service regardless of how many days the trip coversTransfers, fixed-price activities, equipment hire, meet-and-greet services

Tip: Pricing Type applies to both cost and sell price calculations, just like Price Based On. If a service is set to Booking, both the net cost and the sell price are treated as flat amounts. Make sure the rate you enter reflects the correct pricing model — entering a nightly rate on a Booking-type service will undercharge, and entering a flat rate on a Standard-type service will overcharge.

Tip: If you are setting up a service that controls the number of available spaces for a tour on a Package where Autocreate from Allotment is enabled, the Pricing Type must be set to Booking. Standard pricing will not work correctly with autocreated allotment-based inventory in this scenario.

How Allocation Type Affects Pricing

The Allocation Type setting on a service determines the unit of measurement the system uses to count the duration of a stay — and therefore how many times the rate is multiplied when calculating the total cost and sell price. This is a picklist on the service record (AllocationType__c) with three options: Night, Day, and Booking.

  • Night — the system counts the number of nights between the check-in date and the check-out date. A guest checking in on 1 August and checking out on 8 August has 7 nights. The rate is multiplied by 7.
  • Day — the system counts the number of days, inclusive of both the start and end date. A car rented on 1 August and returned on 8 August spans 8 days. The rate is multiplied by 8.
  • Booking — the system treats the service as a single unit regardless of how many days or nights it covers. The rate is applied once. A transfer booked for a 7-night trip still costs the flat rate × 1.

Example: $200 rate on a service spanning 1 August (check-in) to 8 August (check-out)

NightDayBooking
Rate on price category$200/night$200/day$200 (flat)
How duration is counted8 Aug − 1 Aug = 7 nights1 Aug to 8 Aug inclusive = 8 days1 booking
Calculation$200 × 7$200 × 8$200 × 1
Total cost$1,400$1,600$200

The difference between Night and Day comes down to whether the end date is included in the count. Night-based counting gives you the number of overnight stays (date difference), while Day-based counting includes both the first and last day (date difference + 1). This distinction matters most for multi-day services — a 7-night hotel stay spans 8 calendar days, so using the wrong Allocation Type would over- or under-charge by one unit.

Default Allocation Types by service type:

Each service record type in Kaptio has a default Allocation Type. When you create a new service, the Allocation Type is pre-populated based on the record type:

Service TypeDefault Allocation TypeRationale
AccommodationNightHotels and lodges charge per night
Car RentalDayRental companies charge per day (inclusive of pickup and return days)
Multi-Day ServiceDayMulti-day experiences count calendar days
Manual RailDayRail journeys count calendar days
Flight PlaceholderDayFlight placeholders count calendar days
PNR FlightDayPNR flights count calendar days
ActivityBookingActivities are typically a flat fee per person
TransferBookingTransfers are a flat fee regardless of trip length
FlightBookingFlights are a flat fee per ticket
RailBookingRail tickets are a flat fee per journey
MiscBookingMiscellaneous charges are typically flat fees
AdjustmentsBookingAdjustments are flat amounts

Tip: You can override the default Allocation Type on any individual service. For example, if a supplier charges for a shuttle service per day rather than as a flat booking fee, change the Allocation Type from Booking to Day on that service record.

How Allocation Type, Pricing Type, and Price Based On work together:

These three settings on a service each control a different aspect of the price calculation. All three affect the final cost and sell price:

SettingWhat It ControlsOptions
Allocation TypeThe unit of measurement — how the system counts the durationNight, Day, Booking
Pricing TypeWhether the rate is multiplied by the duration or applied as a flat feeStandard (multiply by duration), Booking (flat fee)
Price Based OnHow the system resolves the rate when a stay crosses a season boundaryEach Day (per-night lookup), First Day (arrival rate for entire stay)

In practice, Allocation Type and Pricing Type often align with the service type defaults — an Accommodation service uses Night allocation with Standard pricing (rate × nights), while a Transfer uses Booking allocation with Booking pricing (flat fee). But they are independent fields, so verify both are set correctly when configuring a new service.


Part 3: Configuring Sales Prices

Step 4: Understand the Sell Price Resolution Hierarchy

The system determines the selling price for each Price Category, Add-on, and Meal Plan using a waterfall. It checks each level in order and stops at the first match:

Sell Price Resolution HierarchyPrice Category / Add-on / Meal PlanFixed Selling Priceentered on record?YESUse fixed priceNOProfitability Groupassigned with valid rate?YESApply group %NOChannel Markup/MarginApply channel %1st2nd3rd

This hierarchy applies independently to each Price Category, Add-on, and Meal Plan in the package. Different items in the same package can resolve their sell price at different levels of the hierarchy.

Tip: For a full explanation of how selling price and cost price work at the Package level (including Anyday pricing), see the Anyday Pricing Setup guide.

Step 5: Configure Channel Markup Values

If no fixed price or profitability rate applies, the system uses the Channel Markup/Margin percentage as the fallback.

The Sales Channel has two separate percentage fields — one for services and one for packages:

  • Service Markup/Margin — the percentage applied to individual services (items) sold through this channel.
  • Package Markup/Margin — the percentage applied at the overall package level.

Which field you see (Markup or Margin) is controlled by two strategy settings on the Channel:

  • Service Profitability Strategy — determines whether the service-level percentage is treated as Markup, Margin, or Disabled.
  • Package Profitability Strategy — determines whether the package-level percentage is treated as Markup, Margin, or Disabled.

Each strategy can be set to Markup, Margin, or Disabled. However, only the option that matches the Global Profitability Strategy (found in Kaptio Settings → AppSettings__c.ProfitStrategyCalculation__c) is selectable — the other is greyed out. For example, if the Global Profitability Strategy is set to “Markup”, the channel strategies can only be set to Markup or Disabled (Margin is unavailable).

Tip — What does “Disabled” mean? When you set the Service Profitability Strategy or Package Profitability Strategy to “Disabled”, the channel-level markup/margin percentage field for that level is hidden and no channel percentage is applied. For services or packages that do not have a Fixed Price or a Profitability Book rate, this means the system cannot determine a selling price at that level — the sell price will not be calculated. Use “Disabled” when you do not want to apply a channel-level uplift at that level because sell prices are controlled elsewhere (e.g., via Fixed Price on the price category or via a Profitability Book).

For Channel Markup/Margin:

  1. Navigate to the Sales Channel record.
  2. Set the Service Profitability Strategy and Package Profitability Strategy to Markup or Margin (based on your Global Profitability Strategy).
  3. Enter the Service percentage (e.g., 25 for 25%) and the Package percentage separately.
  4. These percentages apply to all packages and services sold through this channel that do not have a Fixed Price or Profitability rate.
ModeNet CostPercentageFormulaSell Price
Markup$80025%$800 × (1 + 0.25) = $800 × 1.25$1,000
Margin$80025%$800 ÷ (1 − 0.25) = $800 ÷ 0.75$1,066.67

Tip: Markup adds the percentage on top of cost. Margin ensures the percentage represents the proportion of the sell price that is profit. The same percentage produces different sell prices — make sure your commercial team specifies which model they intend.

Step 6: Configure Profitability Setup

If your commercial model requires different margin targets for different service types or time periods, configure Profitability Setup. This sits between Fixed Selling Price and Channel Markup in the sell price resolution hierarchy.

Profitability Setup lets you assign services to groups (e.g., Accommodation, Activities, Transfers) and set per-group, per-period percentages in a Profitability Book linked to the Sales Channel.

See Part 5: Profitability Setup for the full step-by-step configuration guide, worked examples, and a comparison with Channel Markup/Margin.

Step 7: Configure Fixed Selling Prices

When a fixed sell price is entered on a Price Category, Add-on, or Meal Plan, the system uses it directly — this is the highest-priority level in the sell price hierarchy.

Sell prices are entered via the Price Manager on the service record, using the Sell Price tab — the same interface used to configure costs in Step 2, but on the Sell Price tab instead of the Cost tab.

  1. Navigate to the service record.
  2. Open the Price Manager related list.
  3. Select the Manage Prices button.
  4. Switch to the Sell Price tab.
  5. Select the Sales Type, Assignment, Links to (Price Category), and Price Season — following the same pattern as cost entry.
  6. Choose the price type: Fixed Value or Markup/Margin amount.
    • If Fixed Value is selected, you must also select a Currency.
  7. Enter the amount in the Value field.
  8. Repeat for all Price Seasons and Price Categories, then Save.

Important: When using Fixed Price mode, you are responsible for maintaining the margin. If net costs change (e.g., a supplier increases their rate), the sell price remains unchanged until you manually update it. Build a review cadence into your pricing maintenance process.

Step 8: Spot-Check Component Margins for Packages

Verify that each service returns a price for a sample date:

  1. Create a test itinerary using the Costings / Builder.
  2. Select a travel date within the valid range.
  3. Confirm each component shows:
    • Cost price (what you pay the supplier)
    • Sell price (what the guest pays)
    • Margin (sell minus cost)

Screenshot of the Costings / Builder view showing a per-component breakdown with Cost Price, Sell Price, and Margin columns

ComponentServiceNet CostSell PriceMarginMargin %
AccommodationMountain Lodge - Double$1,400$1,820$42023.1%
ActivityGuided Hiking - Per Person$200$260$6023.1%
TransferAirport Return - Per Person$80$104$2423.1%
Package Total$1,680$2,184$50423.1%

Use the following checklist to confirm pricing is complete and correct:

VerificationWhat to Check
All components pricedNo components returning a zero value
Cost prices populatedEvery component has a non-zero cost
Sell prices correctMargins are within expected ranges
Date sensitivityPrices change appropriately across seasons

Tip: Test with at least three dates — one in low season, one in high season, and one on a season boundary — to catch pricing gaps.

If a component’s margin deviates from the target, investigate:

  • Check the component’s pricing behavior — is it set correctly (Standard, Free Component, No Cost Rate, No Sales Rate)?
  • Is the service pulling costs from an unexpected price season?
  • Is a fixed price overriding the calculated price?

Part 4: Advanced Patterns

Service Level Pricing Differentials

When packages offer multiple service levels (e.g., Standard, Superior, Premium), pricing differentials are managed through the service assignment on each component.

Each service level maps to a different set of services. A Standard service level might assign a 3-star hotel service ($150/night cost), while Premium assigns a 5-star service ($400/night cost). The markup percentage applies to each service’s cost independently.

Service LevelHotel ServiceNet Cost/NightChannel Markup (25%)Sell Price/Night
StandardCity Hotel - Standard$150$150 × 1.25$187.50
SuperiorBoutique Hotel - Deluxe$250$250 × 1.25$312.50
PremiumLuxury Resort - Suite$400$400 × 1.25$500.00

The service level does not affect the markup/margin percentage — it affects the base cost to which the markup/margin is applied. See the Service Level Configuration guide for setup details.

Promotional Pricing

Discounts and promotional pricing can be applied through several mechanisms:

MethodHow It WorksBest For
Price category overrideSet a lower sell price on a specific price seasonSeason-specific promotions
Package-level adjustmentReduce markup/margin percentage temporarilyPackage-wide sales
Discount rulesConfigure percentage or fixed discounts on the packageEarly-bird, group, or loyalty discounts
PromotionsConfigure promotions and promo codes for Booking Wizard — this is separate from package Discount rulesCampaign-driven offers — see Promotions in Booking Wizard

Tip: When running promotions, document the original pricing so you can revert cleanly. Consider creating a separate price season to keep promotional pricing isolated from standard rates.

Promotions (Booking Wizard) are not the same as Discount rules on the package. For end-to-end behaviour, see Promotions in Booking Wizard.

Commission Models

When selling through travel agents, commission is calculated per line item based on the terms defined in a Reseller Agreement. Commission applies to the selling price regardless of how that price was determined (Fixed Price, Channel Markup/Margin, or Profitability Markup/Margin).

For the full setup walkthrough — including agency accounts, reseller agreements, commission groups, a worked example, gross invoicing, and reconciliation — see the Travel Agents & Resellers guide.


Part 5: Profitability Setup

Profitability Setup gives you granular control over sell price margins by service type and time period. Where Channel Markup/Margin applies a single flat percentage to everything in a channel, Profitability lets you set different markup/margin targets for accommodation, activities, transfers, and any other service grouping — and vary those targets by season.

Use Profitability Markup/Margin when your commercial model requires different markup/margin targets for different service types (e.g., 20% on accommodation, 35% on activities) or when margins need to change by time period (e.g., higher margins in peak season).

How Profitability Works

Profitability Setup has three building blocks:

Building BlockWhat It IsExample
Profitability GroupA category you create to group services by typeAccommodation, Activities, Transfers, Flights
Profitability BookA named collection of profitability rules assigned to a Sales Channel”2026 Retail Margins”, “Wholesale H2 2026”
Profitability PeriodA date range within a book, each with its own percentage per groupJan–Mar 2026 (low season), Jul–Aug 2026 (peak)

Together, these let you define rules like: “For services in the Accommodation group, apply 20% margin from January to March, and 25% margin from July to August — but for Activities, apply 35% year-round.”

Profitability Step-by-Step Setup

1. Create Profitability Groups

Profitability Groups define the categories you will assign services to. Each group represents a service type that should share the same margin target.

  1. Navigate to Kaptio Settings → Service & Package → Profitability Groups.
  2. Click New Profitability Group.
  3. Enter a descriptive name (e.g., “Accommodation”, “Activities”, “Transfers”, “Flights”).
  4. Save the group.
  5. Repeat for each service type that needs its own margin target.

After creating groups, assign each service to the appropriate Profitability Group on the service record. Profitability Groups can also be assigned to Price Categories, Meal Plans, and Add-ons — not just services. Records without a group assignment will not have Profitability rules applied.

2. Create a Profitability Book and Add Periods

A Profitability Book is a container for your margin rules. Each book holds one or more Profitability Periods — date ranges with their own percentages.

  1. Navigate to Profitability Setup (accessible from the Kaptio app).
  2. Click New Profitability Book.
  3. Enter a name (e.g., “2026 Retail Margins”).
  4. Save the book.
  5. On the book record, add Profitability Periods:
    • Click New Profitability Period.
    • Enter the Start Date for the period.
    • We recommend not setting an End Date — leave it blank to avoid gaps between periods. When you create a new Profitability Period, the previous period’s end date is closed off automatically.
    • For each Profitability Group, enter the percentage to apply during this period.
    • Save the period.
  6. Repeat for each date range you need (e.g., one period for low season, one for shoulder, one for peak).

Tip: Leaving the End Date blank is the safest approach — it ensures there are never gaps between periods that could cause missing sell prices. The system automatically closes the previous period when a new one starts.

3. Set the Percentage for Each Group Within Each Period

Within each Profitability Period, you set a percentage for every Profitability Group. This is where you define the actual margin or markup target.

Profitability PeriodAccommodationActivitiesTransfers
Jan–Mar 2026 (Low)20%35%15%
Apr–Jun 2026 (Shoulder)22%35%15%
Jul–Aug 2026 (Peak)25%35%18%
Sep–Dec 2026 (Shoulder)22%35%15%

4. Assign the Profitability Book to a Sales Channel

  1. Open the Sales Channel record.
  2. Locate the Profitability Book field.
  3. Select the book you created (e.g., “2026 Retail Margins”).
  4. Save the channel.

All packages sold through this channel will now use the Profitability Book’s rules to calculate sell prices, instead of the flat Channel Markup percentage.

5. Choose the Profitability Strategy

On the Sales Channel, you also choose the Profitability Strategy — this determines how the percentage is applied. The strategy can be set at two levels: Item (per-service) and Package (overall package).

StrategyFormulaExample (Net Cost $800, Percentage 20%)
MarkupSell = Cost × (1 + %)$800 × 1.20 = $960
MarginSell = Cost ÷ (1 − %)$800 ÷ 0.80 = $1,000
DisabledNo profitability applied at this levelFalls back to other pricing logic
  • Markup adds the percentage on top of cost. A 20% markup on $800 gives a $160 uplift.
  • Margin ensures the percentage represents the proportion of the sell price that is profit. A 20% margin on $800 means $200 of the $1,000 sell price is margin.
  • Disabled turns off Profitability at that level. If Item-level is Disabled but Package-level is set, the system applies the strategy at the package level only (and vice versa).

Important: Markup and Margin produce different sell prices from the same percentage. A 20% markup yields ~16.7% margin, while a 20% margin yields a 25% markup. Make sure your commercial team specifies which model they intend.

Profitability Worked Example

A 7-night package sold in July through a retail channel with Profitability Setup configured as follows:

  • Profitability Strategy: Margin
  • Profitability Book: 2026 Retail Margins
  • Profitability Period: Jul–Aug 2026 (Peak)
ComponentServiceGroupNet CostMargin %FormulaSell Price
AccommodationMountain Lodge - DoubleAccommodation$2,45025%$2,450 ÷ 0.75$3,266.67
ActivityGuided Hiking - Per PersonActivities$20035%$200 ÷ 0.65$307.69
TransferAirport Return - Per PersonTransfers$8018%$80 ÷ 0.82$97.56
Package Total$2,730$3,671.92

Compare this to Channel Markup at a flat 25%: the same package would sell for $2,730 × 1.25 = $3,412.50. Profitability Setup produces a higher total because the Activities group carries a 35% margin target, and the Margin strategy yields a larger uplift than a simple markup.

Profitability Markup/Margin vs. Channel Markup/Margin

AspectChannel Markup/MarginProfitability Markup/Margin
GranularitySingle percentage for all services in a channelDifferent percentage per service group
Seasonal variationSame markup/margin year-roundDifferent percentages per time period
Strategy optionsMarkup or Margin (chosen at implementation)Markup, Margin, or Disabled per level
Configuration effortMinimal — one field on the channelModerate — groups, book, periods, and assignment
Best forUniform trade margins, simple B2B channelsOperators needing per-service-type, per-season markup/margin control

Tip: You can start with Channel Markup/Margin for simplicity and migrate to Profitability Markup/Margin later as your commercial model matures. The two approaches use the same underlying cost data — only the sell price calculation changes.


Part 6: Add-ons, Fees, and Taxes

Add-ons, fees, and taxes are layered on top of the base service pricing. Each has its own configuration and appears as separate line items in Costings / Builder.

Add-ons

An add-on (Addon__c) is a supplementary product attached to a service — a breakfast package, a room upgrade, travel insurance. Add-ons are children of a service (master-detail to Item__c) and are linked to package components through component options (ComponentOption__c.Addon__c).

FieldPurpose
Service (parent)The service this add-on belongs to
Is ActiveWhether the add-on is available for selection
Is MandatoryWhether the add-on is automatically included
Bookable From / Bookable ToDate range during which the add-on can be booked
Tax GroupOverrides the service-level tax group for this add-on
Commission GroupOverrides the service-level commission group
Profitability GroupOverrides the service-level profitability group
Inflation GroupOverrides the service-level inflation group

Add-ons inherit pricing behavior from their parent service but can override tax, commission, profitability, and inflation groups independently. This means an add-on can carry a different margin target or tax treatment from the base service it belongs to.

Note that an add-on’s allocation and Unit of Measure can differ from its parent service, meaning a chargeable fee can be applied per person or per booking, even if the room rate is per room per night.

In Costings / Builder, add-ons appear as separate line items under their parent service. The system validates bookable dates — if a booking falls outside the add-on’s Bookable From / Bookable To range, the add-on is not available for that date.

Fees

Fees (levies, regulatory surcharges, pass-through charges) are modeled with Fee, Fee Assignment (FeeAssignment__c), and Fee Rate (FeeRate__c) records on the service. They show as separate lines in Costings / Builder with their own supplier and sell amounts.

For setup steps, selling types, worked examples, and calculation rules (percentage base, promotions, discounts, add-ons, fee-on-fee levels), use the dedicated Fees in Kaptio guide.

Tax Groups

Tax groups control how taxes are calculated on services, add-ons, fees, and meal plans. A tax group is a Group__c record (with TypeId__c = 0) that holds tax rules.

Tax groups can be assigned at multiple levels, with lower levels overriding higher ones:

LevelField LocationBehavior
ServiceItem__c.TaxGroup__cBase tax group for all pricing on this service (required)
Price CategoryPrice_Category__c.TaxGroup__cOverrides the service tax group for this specific occupancy/class
Add-onAddon__c.TaxGroup__cOverrides the service tax group for this add-on
Fee AssignmentFeeAssignment__c.TaxGroup__cOverrides the service tax group for this fee
Board BasisBoardBasisAssignment__c.TaxGroup__cOverrides the service tax group for this meal plan

The system resolves the tax group by checking the most specific level first. If an add-on has its own tax group, that is used; otherwise the system falls back to the parent service’s tax group.

For detailed tax group configuration (creating groups, defining tax rates, configuring tax profiles), see the Tax Groups in Kaptio guide and the Currency & Tax Configuration guide.

How Add-ons, Fees, and Taxes Appear in Costings / Builder

In the pricing breakdown, each type appears as a distinct line:

Line TypeEntry TypeWhat It Shows
Price Categoryprice_categoryBase service cost and sell price per occupancy
Add-onaddonAdd-on cost and sell price
FeefeeFee cost and sell price
Board Basisboard_basisMeal plan cost and sell price
Tax (on cost)cost_taxTax applied to the cost price
Tax (on sell)sell_taxTax applied to the sell price

The package total is the sum of all line types. When verifying margins, check that add-on and fee margins align with your commercial targets — they may carry different profitability groups from the base service.


Part 7: Downstream Impacts of Pricing Changes

When you change pricing configuration, the effects on existing bookings depend on what you change and when. Understanding these “third rails” prevents unintended consequences.

What Rolls Down Automatically

ChangeEffect on Existing Bookings
Update a cost price on a Price CategoryNo automatic change. Existing itinerary items retain their original cost. Only new bookings or re-costed itineraries pick up the new cost.
Change the Channel Markup percentageNo automatic change. Existing sell prices are locked at the time of booking.
Update a Profitability Book percentageNo automatic change. Profitability percentages are applied at booking/costing time and stored on itinerary price lines.
Change a Fixed Sell PriceNo automatic change. The fixed price on the price category is a catalog price — existing bookings retain their booked price.

What Requires Manual Action

ChangeRequired Action
Supplier increases cost mid-seasonUpdate the cost on the price category. Existing bookings are unaffected. For bookings not yet confirmed with the supplier, re-run Costings to pick up the new cost and recalculate the sell price.
Need to apply a new price to an existing bookingOpen the itinerary in Costings / Builder, make the change, and save. This updates the itinerary-level price lines.
Sweeping price change across multiple servicesUpdate costs via the Price Manager or Data Loader. Then use Bulk Operations to recalculate pricing across affected bookings in one go — you do not need to re-cost each booking individually.
Changing a tax group on a serviceExisting bookings retain their original tax calculation. New bookings use the updated tax group.

Tip — Bulk Operations: Bulk Operations is available from Kaptio Settings and lets you recalculate pricing, payment schedules, and cancellation rules across many bookings at once. You can filter by package, booking status, and date range to target exactly the bookings that need updating. This is the recommended approach when a price change affects a large number of unconfirmed bookings.

Best Practices for Price Changes

  • Document the change before making it — note the original values so you can revert if needed
  • Time price changes between booking cycles when possible, to minimize the number of in-flight bookings affected
  • Use Price Seasons to manage time-bound price changes rather than overwriting existing prices — create a new price season for the new rate period
  • Re-cost selectively — only re-run Costings on bookings that genuinely need the updated price (e.g., unconfirmed quotes where the customer hasn’t paid)
  • Never change prices on confirmed, paid bookings without a documented commercial reason and customer communication

Key concept: Kaptio pricing is snapshot-based. When a booking is created, the system resolves prices at that moment and stores them on the itinerary. Subsequent changes to catalog prices do not cascade into existing bookings. This protects confirmed bookings from accidental price changes but means you must actively re-cost any booking that needs to reflect updated rates.


Validation Checklist

Before going live with pricing, verify each layer:

Net Costs

  • Every service has at least one price category with a net cost
  • Costs are in the correct currency
  • Cost Per unit (per night, per person, per unit) is set correctly
  • Seasonal cost overrides are configured on price seasons where applicable
  • Multi-currency costs have valid exchange rates configured
  • Dynamic Cost source is connected and returning prices (if using Dynamic Cost)

Sales Price Mode

  • Package Sales Price Mode is set correctly
  • Markup/margin percentage is populated on the Sales Channel (for Channel Markup/Margin mode)
  • Fixed sell prices are entered on all relevant price categories (for Fixed Price mode)
  • Profitability Book is assigned to the Sales Channel (for Profitability Markup/Margin mode)

Margin Verification

  • Run pricing in Costings / Builder for at least one date per season
  • Manual calculation matches system output
  • Overall package margin meets commercial targets
  • Individual component margins are reasonable (no negative margins)

Multi-Occupancy

  • Each occupancy type (Double, Single, Triple, Child) has the correct cost
  • Sell prices resolve correctly for each occupancy type
  • Single supplements and child reductions are producing expected prices

Common Issues and Solutions

Sell Price Not Calculating

CauseSolution
Sales Price Mode not set on the packageEnsure Dynamic Selling Price is selected on the package
Selling Price is not calculated as expectedCheck the Sales Price Mode setting on the package
Net cost is missing on the price categoryEnter the net cost on the price category
No price season covers the requested dateCreate or extend a price season for the date range

Margin Lower Than Expected

CauseSolution
Markup/margin percentage too low for targetA 25% markup yields ~20% margin — adjust the percentage to achieve the desired target
Cost pulling from wrong price seasonCheck which price season covers the test date; verify its cost
Exchange rate driftUpdate FX rates; recalculate affected prices

Price Not Updating After Cost Change

CauseSolution
Using Fixed Price modeFixed prices do not auto-adjust — manually update the sell price
Price season cost overriding category costThe price season has its own cost; update it or clear it to fall back to the price category
Cache or recalculation timingRe-run pricing in Costings / Builder; in some cases, recalculate package pricing

Currency Conversion Issues

CauseSolution
Missing exchange rate for the currency pairAdd the rate in Currency & Tax configuration
Stale exchange rate producing incorrect marginsUpdate the rate to the current value
Cost currency does not match service currencyVerify the currency assignment on the price category

Negative or Zero Margin

CauseSolution
Sell price lower than cost (Fixed mode)Update the fixed sell price to exceed the net cost
Markup/margin percentage set to 0Enter the correct markup/margin percentage
Cost increased but sell price did not adjust (Fixed mode)Review and increase the fixed sell price

ObjectAPI NamePurposeKey Fields
PackageKaptioTravel__Package__cProduct container; holds sales price modeSales Price Mode
Sales ChannelKaptioTravel__Channel__cDistribution channel with channel-level markup/marginName, Markup Percentage, Profitability Book, Business Unit
ServiceKaptioTravel__Item__cSupplier service with price categoriesName, Price Categories
Price CategoryKaptioTravel__PriceCategory__cOccupancy/class pricing tier on a serviceNet Cost, Sell Price, Currency, Cost Per
ComponentKaptioTravel__PackageComponent__cTrip segment within a packageName, Type, Markup Percentage
Component OptionKaptioTravel__PackageComponentItem__cLinks a service to a componentComponent, Item, Service Level
Business UnitKaptioTravel__BusinessUnit__cOrganizational unit with currency and taxBase Currency, Tax Profile
GroupKaptioTravel__Group__cPolymorphic grouping object used for Profitability Groups, Commission Groups, and other group types (distinguished by TypeName)Name, TypeName
Profitability BookKaptioTravel__ProfitabilityBook__cNamed collection of per-group, per-period margin/markup rules; assigned to a Sales ChannelName
Profitability PeriodKaptioTravel__ProfitabilityPeriod__cDate range within a Profitability Book with a percentage per Profitability GroupStart Date, Group Percentages
Reseller AgreementKaptioTravel__ResellerAgreement__cCommission agreement defining terms for a consortium or agencyName, Account, Agreement Type, Status, Start/End Date
Commission Group AssignmentKaptioTravel__CommissionGroupAssignment__cLinks a Reseller Agreement to a Commission Group with a commission percentageReseller Agreement, Commission Group, Value (%)
Reseller Agreement Account AssignmentKaptioTravel__ResellerAgreementAccountAssignment__cLinks an agency Account to a Reseller AgreementReseller Agreement, Account, Valid From/To
Reseller Agreement Channel AssignmentKaptioTravel__ResellerAgreementChannelAssignment__cControls which Sales Channels a Reseller Agreement applies toReseller Agreement, Channel

See Also

Back to Gallery