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 Type3-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

  1. Hotel sets the NET rate for wholesale partners
  2. Agency adds markup to generate margin
  3. Consumer pays the member price

Allocation example

ComponentAmount
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_retail field 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 PointValuePoints on $140 Spread
$0.0101.0 cpp14,000 points
$0.0151.5 cpp9,333 points
$0.0202.0 cpp7,000 points

Implementation

To implement points calculation in your booking flow:

  1. Retrieve the price_retail and price_chargeable values from the rate object
  2. Calculate the rate spread
  3. Divide by your configured cost per point
  4. 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

Was this page helpful?