Cancellation Configurations
Cancellation Configurations are the rule engine that automatically generates cancellation fee schedules for itineraries created through the Booking Wizard. When a traveller books a package, the system matches the itinerary against your configurations and writes the applicable fee tiers onto the booking — no manual setup per itinerary required.
Cancellation Configurations vs Cancellation Policies
These are different features. Cancellation Policies are the older, simpler mechanism tied directly to services or packages. Cancellation Configurations are the newer, more flexible system that targets itineraries based on combinations of package, channel, account, and service — and they only apply to itineraries created through the Booking Wizard (
CreatedWithBookingWizard__c = true). If your itineraries are created through Costings or another method, Cancellation Configurations will not fire.
How It Works — The Three Building Blocks
A Cancellation Configuration has three parts:
- The Configuration — a named container (e.g., “Standard Tour Cancellation Terms”)
- Rules — the fee tiers inside the configuration (e.g., “50% if cancelled within 30 days of travel”)
- Assignments — the targeting criteria that bind the configuration to specific packages, channels, accounts, or services
When an itinerary is created or updated through the Booking Wizard, the system:
- Looks at the itinerary’s package, channel, account, and services
- Finds all active Cancellation Assignments that match
- Selects the best-matching assignment (more specific = higher priority)
- Writes the matching configuration’s rules onto the itinerary as Itinerary Cancellation Rules
These Itinerary Cancellation Rules are then used by the cancellation fee engine when the booking is cancelled.
Step 1: Create a Configuration
Navigate to the Cancellation Configurations tab in Kaptio and click New.
| Field | Description |
|---|---|
| Name | A descriptive name for the configuration (e.g., “Europe Tours — Standard Terms”, “Premium Channel — Flexible”) |
| Active | Must be checked for the configuration to be used. Defaults to active. |
Save the record. You now have a container — next, add the fee rules.
Step 2: Add Rules
From the configuration record, navigate to the Cancellation Rules related list and create rules. Each rule defines one tier in the cancellation fee schedule.
| Field | API Name | Description |
|---|---|---|
| Rule Name | RuleName__c | Descriptive label (e.g., “30-day cancellation fee”) |
| Date Type | DateType__c | The reference point for the time window — see Date Type Options |
| Days Offset | DaysOffset__c | Number of days from the reference point |
| Value Type | ValueType__c | Percentage Per Person or Fixed Per Person |
| Value | Value__c | The fee — either a percentage (e.g., 50 = 50%) or a fixed currency amount |
| Priority | Priority__c | When date windows overlap, higher priority wins |
| Available For All Currencies | AvailableForAllCurrencies__c | For fixed-amount rules: if checked, the amount applies to all currencies (with conversion). If unchecked, the rule only applies to itineraries in the rule’s currency. |
Date Type Options
The Date Type controls which date the Days Offset is measured from:
| Date Type | Measures From | Example |
|---|---|---|
| Before Travel | Itinerary start date | ”60 days before the trip starts” |
| Before Package Departure | The package departure date | ”30 days before departure” — useful for fixed-departure group tours |
| After Booking | The booking date | ”Within 14 days of booking” — for cooling-off periods |
| After Custom Cancellation Date | A custom date field on the itinerary (CustomCancellationDate__c) | For bespoke cancellation windows set per booking |
| After Passenger Deposit Date | Each passenger’s deposit date | ”Within 7 days of deposit” — per-passenger flexibility |
Worked Example: Tiered Cancellation Schedule
A tour operator wants these cancellation terms:
- Cancel 60+ days before travel: 10% fee
- Cancel 30–59 days before travel: 50% fee
- Cancel 0–29 days before travel: 100% fee
Create three rules on the configuration:
| Rule Name | Date Type | Days Offset | Value Type | Value | Priority |
|---|---|---|---|---|---|
| Light fee | Before Travel | 60 | Percentage Per Person | 10 | 1 |
| Moderate fee | Before Travel | 30 | Percentage Per Person | 50 | 2 |
| Full forfeiture | Before Travel | 0 | Percentage Per Person | 100 | 3 |
The system evaluates rules by priority when date windows overlap. The rule with the highest priority that applies at the time of cancellation determines the fee.
Step 3: Create Assignments
Assignments bind the configuration to itineraries. From the configuration record, navigate to the Cancellation Assignments related list.
| Field | API Name | Description |
|---|---|---|
| Package | Package__c | Apply to itineraries for this package |
| Channel | Channel__c | Apply to itineraries booked through this channel |
| Account | Account__c | Apply to itineraries for this account |
| Service | Service__c | Apply to itineraries containing this service |
| Qualifier | Qualifier__c | A service that must be present in the itinerary for this configuration to apply |
| Comparison Date | ComparisonDate__c | Which date the rules compare against — see below |
| Cancellation Modifier | CancellationModifier__c | A text value that must match the itinerary’s CancellationModifier__c field for override scenarios |
| Date From / Date To | DateFrom__c / DateTo__c | Date range for when this assignment is valid |
All assignment fields are optional. A blank field means “matches all” — an assignment with no package, no channel, and no account matches every itinerary. Add fields to narrow the match.
Comparison Date Options
The Comparison Date on the assignment controls which itinerary date the rules’ day offsets are measured against:
| Value | Description | When to Use |
|---|---|---|
| Itinerary Start Date (default) | The traveller’s first day of travel | Most common — cancellation terms based on proximity to the trip |
| Booking Date | The date the booking was created | For cooling-off or early-bird cancellation windows |
| Package Departure Date | The package’s departure date | For fixed-departure group tours where the departure date differs from the itinerary start |
Multi-Select Assignment Creation
The assignment modal supports multi-select on Package, Channel, Account, Service, and Qualifier fields. If you select 3 packages and 2 channels, the system creates 6 assignment records (the full combination). This is useful for quickly applying a configuration across multiple targets.
How Assignment Matching Works
When multiple configurations could apply to an itinerary, the system picks the best match using a specificity-based approach. An assignment that specifies more qualifying fields scores higher than a generic one.
Matching dimensions (from the itinerary):
- Package
- Channel
- Account
- Service (per itinerary item)
- Qualifier (a service that must be present)
- Cancellation Modifier
- Date range (Date From / Date To)
How scoring works:
- An assignment with Package + Channel set is more specific than one with only Package
- An assignment with Package + Channel + Account is more specific still
- The most specific matching assignment wins
- If two assignments have equal specificity, the one with the Qualifier match takes precedence
The matching logic runs server-side via the cancellation rules API. Salesforce sends the itinerary context (package, channel, account, services, passengers) and receives back the rules to create.
When Rules Are Generated
Itinerary Cancellation Rules are automatically generated (or regenerated) when any of these change on a Booking Wizard itinerary:
| Change | What Triggers Recalculation |
|---|---|
| Itinerary created via Booking Wizard | Initial rule generation |
CancellationModifier__c changes on the itinerary | Re-evaluates assignment matching |
| Itinerary item added, removed, or dates change | Re-evaluates which services are present |
| Passenger deposit date changes | Recalculates per-passenger rules |
| Passenger assignment changes | Updates rule-to-passenger links |
Rule generation runs asynchronously — there may be a short delay before rules appear on the itinerary.
Custom vs Generated Rules
Each Itinerary Cancellation Rule has a Source field:
- Cancellation Configuration — auto-generated from a matching configuration. These are overwritten on recalculation.
- Custom — manually created by a user. These are preserved during recalculation and are not overwritten.
If you need to override the auto-generated rules for a specific booking, create Custom rules. They will survive any recalculation triggered by itinerary changes.
Waiving Rules
Individual Itinerary Cancellation Rules can be waived by checking the Waive Rule checkbox (WaiveRule__c). When waived, the cancellation fee for that rule is not applied. This is useful for goodwill gestures or negotiated exceptions without deleting the rule entirely.
Common Setup Scenarios
Per-Package Rules
Create one configuration per package (or package group) with an assignment that specifies the package. Each package can have its own fee schedule.
Per-Channel Overrides
Create a base configuration with a generic assignment (no channel specified), then create a second configuration with a channel-specific assignment. The channel-specific assignment is more specific and will take priority for bookings through that channel.
Date-Banded Configurations
Use the Date From / Date To fields on assignments to apply different configurations for different booking periods. For example, bookings made during a promotional window might have more lenient cancellation terms.
Fixed-Amount Fees
Use Fixed Per Person as the Value Type for flat cancellation fees (e.g., $200 per person administrative fee). For multi-currency orgs, either check Available For All Currencies to apply the amount universally with conversion, or create separate rules per currency.
Service-Specific Rules
Use the Service and Qualifier fields on assignments to target configurations at specific services within a package. For example, a charter flight component might have stricter cancellation terms than the accommodation.
Itinerary Cancellation Rule Fields Reference
When rules are generated on an itinerary, each ItineraryCancellationRule__c record contains:
| Field | Description |
|---|---|
| Cancellation Configuration | Name of the source configuration |
| Cancellation Rule | Link to the template rule |
| Passenger | The passenger this rule applies to |
| Date Type | Reference date type (carried from the rule) |
| Days Offset | Days from the reference date (carried from the rule) |
| Value Type | Percentage or fixed (carried from the rule) |
| Value | Fee amount or percentage (carried from the rule) |
| Effective Start Date | Calculated date when this rule becomes active |
| Effective End Date | Calculated date when this rule stops applying |
| Source | Cancellation Configuration (auto) or Custom (manual) |
| Waive Rule | Whether the fee is waived for this rule |
Each passenger-item assignment can hold up to 10 cancellation rules.
Troubleshooting
| Issue | Likely Cause | Solution |
|---|---|---|
| Rules not appearing on the itinerary | Itinerary was not created through the Booking Wizard | Check CreatedWithBookingWizard__c on the itinerary — Cancellation Configurations only apply to Booking Wizard itineraries |
| Rules not appearing (Booking Wizard itinerary) | No active configuration with a matching assignment | Verify the configuration is Active, the assignment fields match the itinerary’s package/channel/account, and the assignment’s date range covers the booking date |
| Wrong configuration applied | A more specific assignment exists for another configuration | Review all assignments across configurations — the most specific match wins. Check for assignments with Qualifier or Cancellation Modifier fields that may be matching unexpectedly |
| Rules not updating after itinerary change | Async job may be delayed or a skip setting is enabled | Check for SkipCancellationRulesOnSave__c in User Settings. Allow a few moments for the async job to complete and refresh the page |
| Fixed-amount rule not applying | Currency mismatch | If AvailableForAllCurrencies__c is unchecked, the rule’s currency must match the itinerary’s currency. Check the rule or enable the all-currencies flag |
| Duplicate assignment error | An assignment with the same combination already exists | Each combination of Package + Channel + Account + Service + Qualifier + Date Range + Comparison Date + Modifier must be unique within a configuration |
| Custom rules disappearing | Custom rules should not disappear — check the Source field | Rules with Source = Custom are preserved during recalculation. If rules are missing, they may have been manually deleted |
Related Guides
- Package Configuration — Complete Guide — Component-level cancellation controls (
IsMainComponent__c,IsMainTourComponent__c) that determine which price lines feed into cancellation fee calculations - Booking Wizard Guide — The Booking Wizard flow that triggers cancellation rule generation
- Package Modifications Guide — How cancellation, transfer, and modify operations use these rules
- Deposit & Payment Rules — Payment schedule configuration (related but separate from cancellation fees)
Related Schema Objects
| Object | API Name | Purpose |
|---|---|---|
| Cancellation Configuration | KaptioTravel__CancellationConfiguration__c | Named container for cancellation rules and assignments |
| Cancellation Rule | KaptioTravel__CancellationRule__c | Fee tier template (date type, offset, value, priority) |
| Cancellation Assignment | KaptioTravel__CancellationAssignment__c | Targeting criteria binding a configuration to packages, channels, accounts, or services |
| Itinerary Cancellation Rule | KaptioTravel__ItineraryCancellationRule__c | Materialized rule instance on a specific itinerary and passenger |