π Prerequisites
Features
What you get with this outcome
Know What Cancelling a Supplier Costs You
When you cancel a booking with a supplier, you rarely walk away at zero cost. Suppliers charge cancellation fees that escalate the closer you are to the travel date. Until now, operators had to track those fees manually. Supplier Cancellation Policies in Kaptio let you model each supplier's cancellation terms directly β percentage-based or fixed-amount tiers that attach to the supplier agreement. When a service is being cancelled, the system knows exactly what the supplier will charge, giving operations and finance full visibility before committing.
Visual coming soon
Supplier Cancellation Policies
Supplier Cancellation Policies
A named set of cancellation rules that defines how a particular supplier charges for cancellations. Each policy can contain multiple tiered rules. Policies are reusable β one policy can apply to many agreements if the supplier has consistent terms.
- βNamed, reusable policy records
- βActive/inactive flag for lifecycle management
- βDescription field for internal notes
- βShareable across multiple agreements
Visual coming soon
Tiered Cancellation Rules
Tiered Cancellation Rules
Each policy contains one or more rules that define the fee at different time windows. Rules specify a days-before-travel threshold and either a percentage or fixed amount the supplier charges. The tightest applicable window determines the fee.
- βDays-before-travel thresholds
- βPercentage or fixed charge types
- βMultiple tiers per policy
- βEscalating fee schedules
Visual coming soon
Agreement-Level Linking
Agreement-Level Linking
Cancellation policies attach to supplier agreements through a dedicated lookup field. When a booking includes a service from that supplier, the system resolves the active agreement and its cancellation policy in one step.
- βDirect lookup on Supplier Agreement
- βPolicy follows agreement validity dates
- βConfigured in the Supplier Agreement modal
- βChannel and brand matching for multi-channel operators
Visual coming soon
Supplier Agreement Assignments
Supplier Agreement Assignments
Agreement assignments let you scope a supplier agreement to specific services, price categories, add-ons, or fees. When resolving which agreement applies to a cancellation, the system checks assignments in priority order: Price Category level (highest), then Service level, then the direct agreement as fallback.
- βPrice Category assignment β highest priority match
- βService (Item) assignment β second priority
- βAdd-on and Fee assignments for granular scoping
- βDirect agreement (no assignments) as fallback
Visual coming soon
Percentage and Fixed Fee Types
Percentage and Fixed Fee Types
Rules support two charge types. Percentage rules calculate the fee as a proportion of the service cost (e.g., 25% of the hotel cost). Fixed rules apply a flat currency amount regardless of the service value (e.g., $200 admin fee).
- βPercentage-based fees for proportional charges
- βFixed-amount fees for flat admin charges
- βMix both types in the same policy
- βFlexible modelling of real supplier terms
User Journey
Step-by-step flow from start to finish
πΊοΈUser Journey Flow
Follow the steps from start to finish
Implementation Plan
How to implement this outcome
π Project Overview
Policy Creation
2-3 days- β’ Create Supplier Cancellation Policy records for each distinct set of terms
- β’ Add tiered rules (days-before-travel, charge type, value) to each policy
Agreement Linking and Assignments
2-3 days- β’ Open each Supplier Agreement and link the appropriate cancellation policy
- β’ Set agreement type, commission, and channel fields as needed
- β’ Create Supplier Agreement Assignments for Price Category or Service-level scoping (if different terms apply to different services)
- β’ Verify agreement validity dates cover current and upcoming bookings
Validation
2-3 days- β’ Create test bookings with supplier services and simulate cancellation at different time windows
- β’ Verify fee amounts match expected values from supplier contracts
Resources
Configs, tools, and documentation to help you
βοΈ Golden Configs
π Guides
Supplier vs Customer Cancellation Fees
These are two separate features in Kaptio that often apply to the same booking.
Customer Cancellation Fee
What you charge your traveller when they cancel a booking.
- Configured via: Cancellation Configurations β tiered rules on the booking or package level
- Applies to: The customerβs invoice β determines how much of the selling price the traveller forfeits
- Direction: Traveller β You (the operator)
Supplier Cancellation Fee
What your supplier charges you when you cancel a booked service.
- Configured via: Supplier Cancellation Policies (this feature) β tiered rules linked to supplier agreements
- Applies to: Your cost lines and margin β determines how much of the service cost you still owe the supplier
- Direction: You (the operator) β Supplier
How they relate
Both fees are tracked independently on the same booking. When a cancellation happens, the customer pays you their cancellation fee and you pay the supplier theirs. The difference between what you retain from the traveller and what you owe the supplier is your margin on the cancellation.
What Happens When You Cancel an Itinerary Item
When an itinerary item is cancelled, Kaptio updates the itemβs Mode, Confirmation Status, and price lines. The behaviour depends on the itemβs confirmation status before cancellation.
Mode Changes
Itinerary items have a Mode__c field that tracks their lifecycle state. During cancellation, mode transitions follow this sequence:
| Mode | Meaning |
|---|---|
| Active | Item is live and part of the booking |
| Operations Pending | All passengers have been removed from a confirmed line via re-evaluation β a hidden Cancellation line is created for the fee; the original line moves here while awaiting operational resolution |
| Cancellation | Item has been internally cancelled β cancellation price lines are applied, but the supplier may not yet be notified |
| Deleted | Item is fully removed from the active booking β its amounts are no longer considered towards itinerary totals |
When you cancel an item, it moves from Active β Cancellation. If re-evaluation removes every passenger from a confirmed line, the original item becomes Operations Pending and the fee sits on the new cancellation line. Completing Send Cancellation β Confirm or Cancel Manually on a supplier-cancellation fee row keeps mode Cancellation (not Deleted) so invoicing amounts remain visible; Deleted applies to removals that skip that lifecycle (such as non-qualifying deletes or unconfirmed lines with no supplier booking).
Confirmation Status Transitions
The system handles cancellation differently depending on whether the item was already confirmed with the supplier:
If the item was unconfirmed (status: Unconfirmed or Confirmation Not Needed):
- Confirmation status β Cancelled Manually (no supplier interaction needed)
- Cost lines are zeroed out β since nothing was booked with the supplier, there is no cost to the operator
- No supplier cancellation fee applies
If the item was confirmed or sent (any other status β Confirmed, Sent, Confirmed Amendment, etc.):
- Confirmation status β Unconfirmed Cancellation (supplier still needs to be notified)
- Cost lines are preserved β the supplier may charge a cancellation fee
- Supplier cancellation fee is calculated based on the policy
From Unconfirmed Cancellation, the operator follows the standard confirmation workflow on the cancellation line(s):
- Send Cancellation to the supplier β status becomes Sent Cancellation (33); mode stays Cancellation for fee-bearing supplier-cancellation rows (not Deleted)
- Supplier acknowledges β operator marks Confirm β status becomes Confirmed Cancellation (43); mode stays Cancellation
Alternatively, the operator can Cancel Manually if no supplier notification is needed β status Cancelled Manually (61); mode stays Cancellation on those same fee rows.
Full Confirmation Status Reference
| Status | Code | When It Appears |
|---|---|---|
| Unconfirmed | 11 | Item not yet sent to supplier |
| Unconfirmed Cancellation | 13 | Item cancelled internally, supplier not yet notified |
| Sent Cancellation | 33 | Cancellation request sent to supplier |
| Confirmed Cancellation | 43 | Supplier has acknowledged the cancellation |
| Cancelled Manually | 61 | Cancelled without supplier interaction (was unconfirmed, or manually overridden) |
How Fees Are Applied Based on Confirmation Status
The confirmation status at the time of cancellation determines whether supplier costs are retained:
| Prior Status | Cost Lines | Supplier Fee | Rationale |
|---|---|---|---|
| Unconfirmed / Confirmation Not Needed | Zeroed out | None | No booking existed with the supplier |
| Confirmed / Sent / Confirmed Amendment | Preserved | Calculated from policy | Supplier has a confirmed booking and may charge |
| Unconfirmed Amendment | Preserved | Calculated from policy | Original booking was confirmed; amendment was pending |
When fees apply, the system creates cancellation price lines that offset the original sell and cost amounts:
- Sell Cancellation β reduces the customerβs charge by the refundable portion
- Cost Cancellation β reduces the operatorβs cost by the refundable portion (cost minus supplier fee)
- Reseller Commission Cancellation β adjusts commission proportionally
Full vs Partial Cancellation
Kaptio supports two cancellation scopes:
Full cancellation β All items on the itinerary are cancelled. The itinerary status changes to the configured cancellation status, and every item goes through the mode and confirmation status transitions described above.
Partial (passenger) cancellation β Individual passengers are removed from specific items. The system:
- Splits the itinerary item: the remaining passengers stay on the original item, and the cancelled passengers are moved to a cloned βcancellationβ item
- The original itemβs confirmation status moves to Unconfirmed Amendment (if it was previously confirmed) so the supplier can be notified of the reduced quantity
- The cloned cancellation item carries the cancellation fee price lines
- Prices are recalculated proportionally based on the number of passengers removed
Data Model
Supplier cancellation fees are modelled with four objects:
SupplierCancellationPolicy__c
β β’ Name (e.g., "Standard Hotel Terms")
β β’ Description__c (internal notes)
β β’ IsActive__c (must be true to take effect)
β
βββ SupplierCancellationRule__c (master-detail children)
β’ DaysBeforeTravel__c (threshold, e.g., 30)
β’ ChargeType__c (Percentage or Fixed)
β’ Value__c (fee amount β e.g., 50 for 50%, or 200 for $200)
SupplierAgreement__c
β β’ SupplierCancellationPolicy__c (lookup to the policy)
β β’ Account__c (supplier)
β β’ AgreementType__c (e.g., Commission)
β β’ DefaultCommission__c (commission %)
β β’ TaxExclusiveCommissionCalculation__c
β β’ Channels__c (comma-separated channel IDs)
β β’ ValidFrom__c / ValidTo__c
β β’ Brand__c (optional, for BU matching)
β
βββ SupplierAgreementAssignment__c (child records, optional)
β’ SupplierAgreement__c (parent agreement)
β’ PriceCategory__c (highest priority match)
β’ Service__c (second priority β links to Item__c)
β’ Addon__c (add-on level scoping)
β’ Fee__c (fee level scoping)
A policy is a named container. Rules inside the policy define the fee tiers. The policy is linked to a supplier agreement via a lookup field. Agreement assignments optionally scope the agreement to specific price categories, services, add-ons, or fees β enabling different cancellation terms for different parts of the same supplierβs catalog.
Qualifying Confirmation Statuses
Supplier cancellation fees are only calculated when the itinerary itemβs confirmation status is in the qualifying list. Items that were never confirmed (e.g., Unconfirmed, Waiting List, Pending, Confirmation Not Needed) will not generate fee lines, regardless of whether a valid cancellation policy exists.
| Group | Statuses | Codes |
|---|---|---|
| Review | Review, Review Rate, Review Availability, Review Rate & Availability, Reconfirmation Rejected | 21, 22, 23, 24, 25 |
| Sent | Sent Confirmation, Sent Amendment, Sent Cancellation, Sent Reconfirmation | 31, 32, 33, 34 |
| Confirmed | Confirmed, Confirmed Amendment, Confirmed Cancellation, Reconfirmed, Pending Amendment | 41, 42, 43, 44, 45 |
This gate is checked on all three trigger paths: re-evaluation, Cancel action on the Bookings tab, and service deletion from the Builder/Costings tab.
How Fee Resolution Works
When a service cancellation is being evaluated, the system resolves the applicable fee like this:
- Identify the supplier for the service being cancelled
- Find the active Supplier Agreement for that supplier (considering validity dates, brand, and channel)
- Read the Supplier Cancellation Policy linked to that agreement
- Evaluate the policyβs rules against the number of days between now and the travel date
- The rule whose
DaysBeforeTravel__cthreshold is the tightest match determines the fee
Worked Example
A hotel supplier has this cancellation policy:
| Rule | Days Before Travel | Charge Type | Value |
|---|---|---|---|
| Early cancellation | 60 | Percentage | 10 |
| Standard cancellation | 30 | Percentage | 50 |
| Late cancellation | 0 | Percentage | 100 |
If the travel date is April 15 and you cancel on:
- February 1 (73 days out): The 60-day rule applies β 10% of service cost
- March 20 (26 days out): The 30-day rule applies β 50% of service cost
- April 10 (5 days out): The 0-day rule applies β 100% of service cost
Configuration Steps
Step 1: Create a Supplier Cancellation Policy
Navigate to the Supplier Cancellation Policies tab and click New.
| Field | Description |
|---|---|
| Name | Descriptive label (e.g., βHotel Partner β Standard Termsβ) |
| Description | Internal notes about when this policy applies |
| Is Active | Must be checked for the policy to be resolved |
Step 2: Add Cancellation Rules
From the policy record, create child Supplier Cancellation Rule records:
| Field | Description | Example |
|---|---|---|
| Days Before Travel | The time threshold for this tier | 30 |
| Charge Type | Percentage or Fixed | Percentage |
| Value | Fee amount (percentage number or currency amount) | 50 |
Create one rule per tier. A typical setup has 3β4 tiers covering the full timeline from booking to travel.
Step 3: Link to Supplier Agreement
Open the Supplier Agreement record (or create a new one via the Supplier Agreement modal):
- Click the Supplier Cancellation Policy lookup field
- Search for and select the policy you created
- Set the Channels field if the agreement applies only to specific channels (comma-separated Channel IDs). If empty, falls back to brand/business unit matching.
- Ensure ValidFrom and ValidTo cover the itinerary itemβs travel dates
- If the supplier charges commission, set AgreementType to
Commission, set the DefaultCommission percentage, and check TaxExclusiveCommissionCalculation if commission is calculated on the pre-tax cost - Save the agreement
The policy is now active for any service booked under this agreement.
Step 4: Create Supplier Agreement Assignments (optional, for hierarchy scoping)
If you need the agreement to apply only to specific services or price categories, create Supplier Agreement Assignment records. Open the agreement record and use the Supplier Agreement Assignments related list.
Priority order: When resolving which agreement applies during cancellation, assignments are checked in this order:
- Price Category level (highest priority) β set
PriceCategory__cto the price category on the itinerary item - Service level (second priority) β set
Service__cto the Item (Item__c) on the itinerary item - Add-on / Fee level β set
Addon__corFee__cfor granular scoping - Direct agreement (no assignments, lowest priority) β the agreement without any assignments acts as the fallback
If no assignments exist on the agreement, it applies to all services from that supplier (direct agreement level).
Fixed vs Percentage Fees
| Charge Type | How It Works | When to Use |
|---|---|---|
| Percentage | Fee = Value% Γ service cost | Most common β hotels, tours, transfers with proportional fees |
| Fixed | Fee = flat currency amount | Admin fees, processing charges, non-refundable deposits |
You can mix both types in the same policy. For example:
- 60+ days: Fixed $100 admin fee
- 30β59 days: 50% of service cost
- 0β29 days: 100% of service cost
Common Configuration Patterns
Standard Tiered Hotel Policy
Policy: "Hotel β Escalating Tiers"
βββ Rule: 90 days+ β 0% (free cancellation)
βββ Rule: 60 days β 25%
βββ Rule: 30 days β 50%
βββ Rule: 0 days β 100% (full charge)
Non-Refundable Transfer
Policy: "Transfer β Non-Refundable"
βββ Rule: 0 days β 100% (full charge from day of booking)
Fixed Admin Fee + Escalation
Policy: "Activity Partner β Admin + Escalating"
βββ Rule: 30 days β Fixed $150
βββ Rule: 0 days β Percentage 100%
Relationship to Supplier Agreements
Supplier Cancellation Policies sit alongside payment rules and service assignments on a Supplier Agreement. The agreement is the single point where all supplier commercial terms come together:
| Agreement Component | Purpose |
|---|---|
| Payment Rules | When and how much you pay the supplier (deposits, balance, billback) |
| Service Assignments | Which services this agreement covers |
| Cancellation Policy | What the supplier charges you if you cancel |
See the Supplier Agreements Configuration Guide for full details on agreement setup.
Key Fields Reference
SupplierCancellationPolicy__c
| Field | API Name | Type | Description |
|---|---|---|---|
| Name | Name | Text | Policy name |
| Description | Description__c | Long Text | Internal notes |
| Is Active | IsActive__c | Checkbox | Policy must be active to be resolved |
SupplierCancellationRule__c
| Field | API Name | Type | Description |
|---|---|---|---|
| Policy | SupplierCancellationPolicy__c | Lookup | Parent policy |
| Days Before Travel | DaysBeforeTravel__c | Number | Time threshold for this tier |
| Charge Type | ChargeType__c | Picklist | Percentage or Fixed |
| Value | Value__c | Number | Fee amount or percentage |
SupplierAgreement__c (Cancellation and Commission Fields)
| Field | API Name | Type | Description |
|---|---|---|---|
| Cancellation Policy | SupplierCancellationPolicy__c | Lookup | Links to the applicable cancellation policy |
| Agreement Type | AgreementType__c | Picklist | Agreement type (e.g., Commission). When set to Commission, SUPCOMMISSION and SUPCOMMISSIONCANCELLATION price lines are generated. |
| Default Commission | DefaultCommission__c | Percent | Default supplier commission percentage (e.g., 15 for 15%) |
| Tax Exclusive Commission | TaxExclusiveCommissionCalculation__c | Checkbox | When checked, commission is calculated on the cost amount excluding tax |
| Channels | Channels__c | Text | Comma-separated Channel IDs. If populated, the itineraryβs channel must be in this list for the agreement to match. |
| Valid From | ValidFrom__c | Date | Start of the agreement validity period |
| Valid To | ValidTo__c | Date | End of the agreement validity period |
| Brand | Brand__c | Lookup | Optional brand/business unit for matching |
SupplierAgreementAssignment__c
| Field | API Name | Type | Description |
|---|---|---|---|
| Supplier Agreement | SupplierAgreement__c | Lookup | Parent agreement |
| Price Category | PriceCategory__c | Lookup | Price category to match (highest priority) |
| Service | Service__c | Lookup | Item/service to match (second priority) |
| Add-on | Addon__c | Lookup | Add-on to match |
| Fee | Fee__c | Lookup | Fee to match |
Troubleshooting
| Issue | Likely Cause | Solution |
|---|---|---|
| No cancellation fee showing | Policy not linked to agreement | Open the Supplier Agreement and set the Cancellation Policy lookup |
| Policy not resolving | Policy is inactive | Check IsActive__c is true on the policy record |
| Wrong fee amount | Wrong charge type on rule | Verify whether the rule should be Percentage or Fixed |
| Fee not matching contract | Rule thresholds donβt match contract terms | Compare DaysBeforeTravel__c values against the supplier contract |
| No policy available in lookup | Policy hasnβt been created yet | Create the policy record first, then link it |
| Agreement expired | Agreement validity dates donβt cover today | Check ValidFrom__c and ValidTo__c on the Supplier Agreement |
| Fee not applying despite policy existing | Itemβs confirmation status is not in the qualifying list, or Agreement Assignment doesnβt match the correct hierarchy level | Verify the itemβs ConfirmationStatusId__c is in the qualifying list (21β25, 31β34, 41β45). Check that Agreement Assignments match the itemβs Price Category or Service. If no assignments exist, the agreement applies as a direct fallback. |
| Commission cancellation line missing | Agreement is not a Commission type | Set AgreementType__c = 'Commission' on the Supplier Agreement and ensure DefaultCommission__c is populated |
| Wrong agreement resolving | Multiple agreements exist for the supplier | Check Channel matching (Channels__c), Brand matching, and ValidFrom/ValidTo dates. If assignments exist, ensure the correct hierarchy level (Price Category > Service > Direct) matches the itinerary item. |
Related Content
- Supplier Agreements Configuration Guide β Full guide to payment rules, service assignments, and agreement setup
- Cancellation Configurations β Customer-facing cancellation fees (the other side of the equation)
- Bookings, From Quote to Complete β End-to-end booking lifecycle including cancellation handling
Common Pitfalls
Avoid these implementation mistakes
Confusing supplier cancellation policies with customer cancellation configurations β they are separate features serving different purposes
Forgetting to mark a policy as Active β inactive policies are not resolved
Mismatched charge types β check whether the supplier charges a percentage of cost or a flat fee before creating rules
Overlapping day ranges without clear priority β ensure rules have distinct DaysBeforeTravel thresholds
Not linking the policy to the agreement β a policy with no agreement linkage has no effect
Expired agreements β if the supplier agreement is no longer valid, its cancellation policy won't resolve
Item not in a qualifying confirmation status β fees are only calculated for statuses 21β25, 31β34, 41β45. Unconfirmed items will not generate cancellation fees.
Agreement assignment at the wrong hierarchy level β Price Category assignments take priority over Service assignments. If you create a Service-level assignment but the item also matches a Price Category assignment on a different agreement, the Price Category match wins.