Loyalty
This guide covers NET rate pricing and how to calculate loyalty points to reward users based on the rate spread between wholesale and retail pricing.
NET rate overview
A NET rate is the wholesale price that hotels provide to travel agencies, tour operators, and loyalty programs. This rate excludes OTA commissions, platform fees, and retail markups, representing the true cost paid to the hotel.
Typical discount range
NET rates are typically 30-60% below published retail rates, depending on the property, season, and negotiated agreements.
Parties that pay NET rates
- Name
Travel Agencies- Description
Purchase inventory at wholesale pricing for resale to consumers.
- Name
Tour Operators- Description
Bundle hotel inventory into vacation packages.
- Name
Loyalty Programs- Description
Access wholesale rates to offer member-exclusive pricing.
NET rate vs retail rate
The retail rate is the public price displayed on OTAs and hotel websites. It includes platform commissions, marketing costs, and profit margins that are not present in the NET rate.
NET rate
- Wholesale pricing for B2B transactions
- Excludes commissions and platform fees
- Paid by agencies and partners
Retail rate
- Consumer-facing public price
- Includes OTA commissions and markups
- Paid by end travelers
Price comparison
| Rate Type | 3-Night Stay |
|---|---|
| NET Rate | $210 |
| Retail Rate | $350 |
| Rate Spread | $140 |
The rate spread represents the margin available for agency profit and consumer savings.
Rate spread and margin allocation
The rate spread between retail and NET pricing can be allocated between agency margin and consumer savings.
Pricing flow
- Hotel sets the NET rate for wholesale partners
- Agency adds markup to generate margin
- Consumer pays the member price
Allocation example
| Component | Amount |
|---|---|
| NET Rate | $210 |
| Agency Markup | $70 |
| Member Price | $280 |
| Consumer Savings vs Retail | $70 |
In this example, the $140 rate spread is split evenly: $70 retained as agency margin and $70 passed to the consumer as savings compared to the $350 retail price.
Calculating loyalty points
Loyalty points are calculated based on the rate spread and your program's intended cost per point.
Formula
Rate Spread = Retail Rate - NET Rate
Points Rewarded = Rate Spread / Cost Per Point
Parameters
- Name
Retail Rate- Type
- number
- Description
The public price for the booking, available via the
price_retailfield on the rate object.
- Name
NET Rate- Type
- number
- Description
The wholesale cost paid to the hotel, available via
price_chargeable.
- Name
Cost Per Point- Type
- number
- Description
Your program's intended redemption value per point (e.g., 0.015 for 1.5 cents per point).
Calculation example
For a booking with a $350 retail rate, $210 NET rate, and a cost per point of $0.015 (1.5 cpp):
Rate Spread = $350 - $210 = $140
Points Rewarded = $140 / $0.015 = 9,333 points
Cost per point reference
| Cost Per Point | Value | Points on $140 Spread |
|---|---|---|
| $0.010 | 1.0 cpp | 14,000 points |
| $0.015 | 1.5 cpp | 9,333 points |
| $0.020 | 2.0 cpp | 7,000 points |
The cost per point determines the redemption value of your loyalty currency. A lower cost per point results in more points awarded but reduces the value per point at redemption.
Implementation
To implement points calculation in your booking flow:
- Retrieve the
price_retailandprice_chargeablevalues from the rate object - Calculate the rate spread
- Divide by your configured cost per point
- Round to the nearest whole number for display
function calculatePoints(retailRate, netRate, costPerPoint) {
const rateSpread = retailRate - netRate
const points = Math.round(rateSpread / costPerPoint)
return points
}
// Example: 1.5 cpp program
const points = calculatePoints(350, 210, 0.015)
// Returns: 9333
Contact your account manager to configure your program's cost per point and discuss rate spread allocation strategies.