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:
- How you get the cost — the net cost can be entered manually (Fixed Cost) or pulled automatically from an external supplier feed (Dynamic Cost).
- 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 Cost | Dynamic Cost | |
|---|---|---|
| Cost source | Entered manually in Price Manager | Retrieved automatically from external supplier via Kaptio Connect |
| When to use | Rates contracted in advance; supplier sends rate sheets | Rates change frequently; live feed from GDS or channel manager |
| Updates | Manual — you update costs when supplier rates change | Automatic — costs refresh on each price request |
| Integration required | None | Kaptio Connect |
| Setup complexity | Low | High (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.
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:
- Net cost is defined on the price category (or arrives via Dynamic Cost).
- Sell price is also defined on the price category — entered explicitly.
- No percentage is applied. The entered sell price is the final price.
Example:
| Field | Value |
|---|---|
| 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:
- Services are assigned to Profitability Groups (e.g., Accommodation, Activities, Transfers).
- A Profitability Book holds one or more Profitability Periods — date ranges with their own percentages per group.
- The book is assigned to a Sales Channel.
- 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:
- Net cost is defined on the service’s price category (or arrives via Dynamic Cost).
- The percentage is set on the Sales Channel record.
- Sell price = Net cost × (1 + percentage) for markup, or Net cost ÷ (1 − percentage) for margin.
Example calculation (using markup):
| Field | Value |
|---|---|
| Net cost (hotel room) | $800 |
| Channel markup/margin | 25% |
| 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:
| Consideration | Fixed Cost | Dynamic 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 complexity | Low | High |
Sales price modes:
| Consideration | Channel Markup/Margin | Fixed Price | Profitability Markup/Margin |
|---|---|---|---|
| Uniform margin across channel | ✓ | — | — |
| Per-service-group margin control | — | — | ✓ |
| Seasonal margin variation | — | — | ✓ |
| Contractually fixed prices | — | ✓ | — |
| Controls sell price locally | ✓ | ✓ | ✓ |
| Setup complexity | Low | Low | Moderate |
| Maintenance effort | Low | High | Moderate |
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.
- Navigate to the service record.
- Open the Price Manager related list.
- Click New Price Season.
- Fill in the required fields:
| Field | Description |
|---|---|
Season Name | A descriptive label for the period (e.g., High Season 2026, Shoulder Apr–Jun) |
Start Date | The first date this season covers (inclusive) |
End Date | The last date this season covers (inclusive) |
- 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.
| Season | Date Range | Hotel Net Cost/Night |
|---|---|---|
| High | Jul 1 – Aug 31 | $350 |
| Shoulder | Apr 1 – Jun 30, Sep 1 – Oct 31 | $250 |
| Low | Nov 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.
- Navigate to the service record.
- Open the Price Manager related list.
- Select the Manage Prices button.
- 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.
- The Assignment column is context-based on the Sales Type field. For All Customers, this field is disabled.
- Select the Price Category that the price relates to using the Links to field. You can assign the price to several Price Categories.
- Select the Price Season that the price applies to.
- Enter the Currency for the Cost Price.
- Enter the supplier rate in the Value field.
- 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.
- Ensure the supplier’s cost currency is configured in Kaptio (Currency & Tax Configuration).
- 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.
- The system converts to the Business Unit’s base currency using the configured exchange rate at the time of booking or price calculation.
| Scenario | Approach |
|---|---|
| Supplier costs in USD, selling in EUR | Enter cost in USD; system converts at configured FX rate |
| Supplier costs in local currency | Enter cost in local currency; ensure FX rate is maintained |
| Contracted cost in your base currency | Enter 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):
| Night | Season | Each Day Rate | First 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:
| Option | Use When |
|---|---|
| Each Day | The supplier charges different rates depending on the actual date of each night (most common for hotels and lodges with seasonal contracts) |
| First Day | The 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
| Standard | Booking | |
|---|---|---|
| Rate on price category | $200/night | $200 (flat) |
| Number of nights | 5 | 5 |
| Calculation | $200 × 5 | $200 × 1 |
| Total cost | $1,000 | $200 |
When to use each option:
| Pricing Type | Use When | Typical Service Types |
|---|---|---|
| Standard | The supplier charges per night or per day — the total cost scales with the length of stay | Accommodation, per-night lodges, campsite fees |
| Booking | The supplier charges a flat fee for the service regardless of how many days the trip covers | Transfers, 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)
| Night | Day | Booking | |
|---|---|---|---|
| Rate on price category | $200/night | $200/day | $200 (flat) |
| How duration is counted | 8 Aug − 1 Aug = 7 nights | 1 Aug to 8 Aug inclusive = 8 days | 1 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 Type | Default Allocation Type | Rationale |
|---|---|---|
| Accommodation | Night | Hotels and lodges charge per night |
| Car Rental | Day | Rental companies charge per day (inclusive of pickup and return days) |
| Multi-Day Service | Day | Multi-day experiences count calendar days |
| Manual Rail | Day | Rail journeys count calendar days |
| Flight Placeholder | Day | Flight placeholders count calendar days |
| PNR Flight | Day | PNR flights count calendar days |
| Activity | Booking | Activities are typically a flat fee per person |
| Transfer | Booking | Transfers are a flat fee regardless of trip length |
| Flight | Booking | Flights are a flat fee per ticket |
| Rail | Booking | Rail tickets are a flat fee per journey |
| Misc | Booking | Miscellaneous charges are typically flat fees |
| Adjustments | Booking | Adjustments 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:
| Setting | What It Controls | Options |
|---|---|---|
| Allocation Type | The unit of measurement — how the system counts the duration | Night, Day, Booking |
| Pricing Type | Whether the rate is multiplied by the duration or applied as a flat fee | Standard (multiply by duration), Booking (flat fee) |
| Price Based On | How the system resolves the rate when a stay crosses a season boundary | Each 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:
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:
- Navigate to the Sales Channel record.
- Set the Service Profitability Strategy and Package Profitability Strategy to Markup or Margin (based on your Global Profitability Strategy).
- Enter the Service percentage (e.g.,
25for 25%) and the Package percentage separately. - These percentages apply to all packages and services sold through this channel that do not have a Fixed Price or Profitability rate.
| Mode | Net Cost | Percentage | Formula | Sell Price |
|---|---|---|---|---|
| Markup | $800 | 25% | $800 × (1 + 0.25) = $800 × 1.25 | $1,000 |
| Margin | $800 | 25% | $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.
- Navigate to the service record.
- Open the Price Manager related list.
- Select the Manage Prices button.
- Switch to the Sell Price tab.
- Select the Sales Type, Assignment, Links to (Price Category), and Price Season — following the same pattern as cost entry.
- Choose the price type: Fixed Value or Markup/Margin amount.
- If Fixed Value is selected, you must also select a Currency.
- Enter the amount in the Value field.
- 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:
- Create a test itinerary using the Costings / Builder.
- Select a travel date within the valid range.
- 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
| Component | Service | Net Cost | Sell Price | Margin | Margin % |
|---|---|---|---|---|---|
| Accommodation | Mountain Lodge - Double | $1,400 | $1,820 | $420 | 23.1% |
| Activity | Guided Hiking - Per Person | $200 | $260 | $60 | 23.1% |
| Transfer | Airport Return - Per Person | $80 | $104 | $24 | 23.1% |
| Package Total | $1,680 | $2,184 | $504 | 23.1% |
Use the following checklist to confirm pricing is complete and correct:
| Verification | What to Check |
|---|---|
| All components priced | No components returning a zero value |
| Cost prices populated | Every component has a non-zero cost |
| Sell prices correct | Margins are within expected ranges |
| Date sensitivity | Prices 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 Level | Hotel Service | Net Cost/Night | Channel Markup (25%) | Sell Price/Night |
|---|---|---|---|---|
| Standard | City Hotel - Standard | $150 | $150 × 1.25 | $187.50 |
| Superior | Boutique Hotel - Deluxe | $250 | $250 × 1.25 | $312.50 |
| Premium | Luxury 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:
| Method | How It Works | Best For |
|---|---|---|
| Price category override | Set a lower sell price on a specific price season | Season-specific promotions |
| Package-level adjustment | Reduce markup/margin percentage temporarily | Package-wide sales |
| Discount rules | Configure percentage or fixed discounts on the package | Early-bird, group, or loyalty discounts |
| Promotions | Configure promotions and promo codes for Booking Wizard — this is separate from package Discount rules | Campaign-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 Block | What It Is | Example |
|---|---|---|
| Profitability Group | A category you create to group services by type | Accommodation, Activities, Transfers, Flights |
| Profitability Book | A named collection of profitability rules assigned to a Sales Channel | ”2026 Retail Margins”, “Wholesale H2 2026” |
| Profitability Period | A date range within a book, each with its own percentage per group | Jan–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.
- Navigate to Kaptio Settings → Service & Package → Profitability Groups.
- Click New Profitability Group.
- Enter a descriptive name (e.g., “Accommodation”, “Activities”, “Transfers”, “Flights”).
- Save the group.
- 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.
- Navigate to Profitability Setup (accessible from the Kaptio app).
- Click New Profitability Book.
- Enter a name (e.g., “2026 Retail Margins”).
- Save the book.
- 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.
- 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 Period | Accommodation | Activities | Transfers |
|---|---|---|---|
| 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
- Open the Sales Channel record.
- Locate the Profitability Book field.
- Select the book you created (e.g., “2026 Retail Margins”).
- 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).
| Strategy | Formula | Example (Net Cost $800, Percentage 20%) |
|---|---|---|
| Markup | Sell = Cost × (1 + %) | $800 × 1.20 = $960 |
| Margin | Sell = Cost ÷ (1 − %) | $800 ÷ 0.80 = $1,000 |
| Disabled | No profitability applied at this level | Falls 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)
| Component | Service | Group | Net Cost | Margin % | Formula | Sell Price |
|---|---|---|---|---|---|---|
| Accommodation | Mountain Lodge - Double | Accommodation | $2,450 | 25% | $2,450 ÷ 0.75 | $3,266.67 |
| Activity | Guided Hiking - Per Person | Activities | $200 | 35% | $200 ÷ 0.65 | $307.69 |
| Transfer | Airport Return - Per Person | Transfers | $80 | 18% | $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
| Aspect | Channel Markup/Margin | Profitability Markup/Margin |
|---|---|---|
| Granularity | Single percentage for all services in a channel | Different percentage per service group |
| Seasonal variation | Same markup/margin year-round | Different percentages per time period |
| Strategy options | Markup or Margin (chosen at implementation) | Markup, Margin, or Disabled per level |
| Configuration effort | Minimal — one field on the channel | Moderate — groups, book, periods, and assignment |
| Best for | Uniform trade margins, simple B2B channels | Operators 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).
| Field | Purpose |
|---|---|
| Service (parent) | The service this add-on belongs to |
| Is Active | Whether the add-on is available for selection |
| Is Mandatory | Whether the add-on is automatically included |
| Bookable From / Bookable To | Date range during which the add-on can be booked |
| Tax Group | Overrides the service-level tax group for this add-on |
| Commission Group | Overrides the service-level commission group |
| Profitability Group | Overrides the service-level profitability group |
| Inflation Group | Overrides 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:
| Level | Field Location | Behavior |
|---|---|---|
| Service | Item__c.TaxGroup__c | Base tax group for all pricing on this service (required) |
| Price Category | Price_Category__c.TaxGroup__c | Overrides the service tax group for this specific occupancy/class |
| Add-on | Addon__c.TaxGroup__c | Overrides the service tax group for this add-on |
| Fee Assignment | FeeAssignment__c.TaxGroup__c | Overrides the service tax group for this fee |
| Board Basis | BoardBasisAssignment__c.TaxGroup__c | Overrides 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 Type | Entry Type | What It Shows |
|---|---|---|
| Price Category | price_category | Base service cost and sell price per occupancy |
| Add-on | addon | Add-on cost and sell price |
| Fee | fee | Fee cost and sell price |
| Board Basis | board_basis | Meal plan cost and sell price |
| Tax (on cost) | cost_tax | Tax applied to the cost price |
| Tax (on sell) | sell_tax | Tax 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
| Change | Effect on Existing Bookings |
|---|---|
| Update a cost price on a Price Category | No 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 percentage | No automatic change. Existing sell prices are locked at the time of booking. |
| Update a Profitability Book percentage | No automatic change. Profitability percentages are applied at booking/costing time and stored on itinerary price lines. |
| Change a Fixed Sell Price | No automatic change. The fixed price on the price category is a catalog price — existing bookings retain their booked price. |
What Requires Manual Action
| Change | Required Action |
|---|---|
| Supplier increases cost mid-season | Update 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 booking | Open the itinerary in Costings / Builder, make the change, and save. This updates the itinerary-level price lines. |
| Sweeping price change across multiple services | Update 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 service | Existing 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
| Cause | Solution |
|---|---|
| Sales Price Mode not set on the package | Ensure Dynamic Selling Price is selected on the package |
| Selling Price is not calculated as expected | Check the Sales Price Mode setting on the package |
| Net cost is missing on the price category | Enter the net cost on the price category |
| No price season covers the requested date | Create or extend a price season for the date range |
Margin Lower Than Expected
| Cause | Solution |
|---|---|
| Markup/margin percentage too low for target | A 25% markup yields ~20% margin — adjust the percentage to achieve the desired target |
| Cost pulling from wrong price season | Check which price season covers the test date; verify its cost |
| Exchange rate drift | Update FX rates; recalculate affected prices |
Price Not Updating After Cost Change
| Cause | Solution |
|---|---|
| Using Fixed Price mode | Fixed prices do not auto-adjust — manually update the sell price |
| Price season cost overriding category cost | The price season has its own cost; update it or clear it to fall back to the price category |
| Cache or recalculation timing | Re-run pricing in Costings / Builder; in some cases, recalculate package pricing |
Currency Conversion Issues
| Cause | Solution |
|---|---|
| Missing exchange rate for the currency pair | Add the rate in Currency & Tax configuration |
| Stale exchange rate producing incorrect margins | Update the rate to the current value |
| Cost currency does not match service currency | Verify the currency assignment on the price category |
Negative or Zero Margin
| Cause | Solution |
|---|---|
| Sell price lower than cost (Fixed mode) | Update the fixed sell price to exceed the net cost |
| Markup/margin percentage set to 0 | Enter the correct markup/margin percentage |
| Cost increased but sell price did not adjust (Fixed mode) | Review and increase the fixed sell price |
Related Schema Objects
| Object | API Name | Purpose | Key Fields |
|---|---|---|---|
| Package | KaptioTravel__Package__c | Product container; holds sales price mode | Sales Price Mode |
| Sales Channel | KaptioTravel__Channel__c | Distribution channel with channel-level markup/margin | Name, Markup Percentage, Profitability Book, Business Unit |
| Service | KaptioTravel__Item__c | Supplier service with price categories | Name, Price Categories |
| Price Category | KaptioTravel__PriceCategory__c | Occupancy/class pricing tier on a service | Net Cost, Sell Price, Currency, Cost Per |
| Component | KaptioTravel__PackageComponent__c | Trip segment within a package | Name, Type, Markup Percentage |
| Component Option | KaptioTravel__PackageComponentItem__c | Links a service to a component | Component, Item, Service Level |
| Business Unit | KaptioTravel__BusinessUnit__c | Organizational unit with currency and tax | Base Currency, Tax Profile |
| Group | KaptioTravel__Group__c | Polymorphic grouping object used for Profitability Groups, Commission Groups, and other group types (distinguished by TypeName) | Name, TypeName |
| Profitability Book | KaptioTravel__ProfitabilityBook__c | Named collection of per-group, per-period margin/markup rules; assigned to a Sales Channel | Name |
| Profitability Period | KaptioTravel__ProfitabilityPeriod__c | Date range within a Profitability Book with a percentage per Profitability Group | Start Date, Group Percentages |
| Reseller Agreement | KaptioTravel__ResellerAgreement__c | Commission agreement defining terms for a consortium or agency | Name, Account, Agreement Type, Status, Start/End Date |
| Commission Group Assignment | KaptioTravel__CommissionGroupAssignment__c | Links a Reseller Agreement to a Commission Group with a commission percentage | Reseller Agreement, Commission Group, Value (%) |
| Reseller Agreement Account Assignment | KaptioTravel__ResellerAgreementAccountAssignment__c | Links an agency Account to a Reseller Agreement | Reseller Agreement, Account, Valid From/To |
| Reseller Agreement Channel Assignment | KaptioTravel__ResellerAgreementChannelAssignment__c | Controls which Sales Channels a Reseller Agreement applies to | Reseller Agreement, Channel |
See Also
- Package Fundamentals — shared package fields, components, and options
- Supplier & Service Setup — creating services and configuring inventory
- Service Level Configuration — multi-tier pricing
- Currency & Tax Configuration — currency and tax setup
- Tax Groups in Kaptio — detailed tax group configuration
- Inflation Books & Groups — inflation-adjusted pricing
- Promotions in Booking Wizard — discount rules and promo codes
- Deposit & Payment Rules — deposit schedules and payment configuration
- Travel Agents & Resellers — agency setup, reseller agreements, commission calculation, gross invoicing, and reseller statement reconciliation