Last-Minute Pricing: Flat and Gradual Adjustments

Jun Zhou, Founder at AirROI
by Jun ZhouFounder at AirROI
Published: September 4, 2026
Updated: September 5, 2026

Last-minute pricing adjusts nights inside a lead-time window. In AirROI, a custom gradual adjustment grows linearly toward the arrival date; a flat adjustment applies the same percentage throughout the window.

Read the curve before choosing a setting

See the discount grow as arrival approaches

Read from right to left as a stay approaches. Flat applies the full adjustment inside the window; gradual reaches it only on arrival day.

Gradual: $160.00 to $200.00. Flat: $160.00 to $200.00. No rule: $200.00 to $200.00.Price before limits · USD$140$160$180$200$2200612182430Days until arrival (0 = today)
Hover, tap, or use arrow keys to explore. Select a legend to compare.
Isolated rule effect on a $200 post-model price, before price limits. The slider shows an illustrative range, not the API's allowed range. These are illustrative USD rates, not forecasts.

Which shape fits your policy?

ChoiceWhat happens at the window boundaryWhat happens as arrival gets closer
Custom gradualStarts at 0% on day 20 in this exampleChanges by one percentage point per day, reaching −20% today
Custom flatImmediately applies the full −20% on day 20Remains at −20% through today
Disabled or omittedNo custom lead-time adjustmentModel effects and any other enabled rules still apply

Use a gradual shape when your intended policy changes with remaining lead time. Use flat when every qualifying night should receive the same percentage. These are policy differences, not evidence that either choice is optimal for your property.

The slider can also show a positive adjustment: a last-minute rule is allowed to add a premium. That does not mean the API recommends doing so.

Compare the preset curves

Preset names describe different curves—not just different discounts

Each last-minute preset has its own window, maximum discount, and curve shape.

Conservative: $184.00 to $200.00. Balanced: $170.00 to $200.00. Aggressive: $150.00 to $200.00.Standalone nightly price · USD$140$160$180$200$220081624324045Days until arrival
Hover, tap, or use arrow keys to explore. Select a legend to compare.
AirROI preset formulas on a $200 post-model price. This comparison shows rule effects before other rules and price limits.

At 10 days out, conservative is outside its 7-day window, balanced is partway through its 21-day curve, and aggressive is partway through its 45-day curve. Comparing only their arrival-day maximums misses that difference.

A boundary test for your integration

With the custom 20-day gradual example, compare days 21, 20, 10, and 0. The standalone prices should be $200, $200, $180, and $160. Then mark a qualifying date reserved: its last-minute adjustment disappears. Its model-based recommendation still exists.

A custom 20-day window

The JSON below is an addition to this complete Calendar Prices request. Merge fields into one request; do not send a rule fragment by itself.

{
  "location": {
    "latitude": 25.7907,
    "longitude": -80.13
  },
  "currency": "USD",
  "base_price": 200
}

All worked prices use USD and assume a $200 price after model effects, with no other adjustments unless stated. They demonstrate arithmetic, not live forecasts.

{
  "pricing_rules": {
    "last_minute": {
      "mode": "custom",
      "settings": {
        "start_days": 20,
        "adjustment_percent": -20,
        "adjustment_type": "gradual"
      }
    }
  }
}

start_days opens the window (1–90 days). Custom gradual is linear: 20 days out gives 0%, 10 days gives −10% (200 → 180), and today gives −20% (200 → 160). Add end_days (0 through start_days − 1, default 0) to reach the full discount earlier and hold it: with end_days: 5 the same rule is −20% from five days out through arrival. Change adjustment_type to flat to apply −20% throughout the window, including day 20. Outside the window there is no adjustment. Known reserved and blocked dates are excluded.

Days until arrivalGradual −20% maximumGradual priceFlat price
210%$200$200
200%$200$160
10−10%$180$160
0−20%$160$160

For the custom gradual setting, percentage = maximum adjustment × (start days − days until arrival) / (start days − end days), capped at the maximum once days until arrival is at or below end_days. “Today” uses the property's timezone, not the caller's clock.

For both custom and preset rules, the calculated percentage is rounded to two decimal places before it changes the price; half-way values round away from zero.

Choose a preset or a custom policy

The conservative preset reaches −8% today over a 7-day window, balanced reaches −15% over 21 days, and aggressive reaches −25% over 45 days. These preset ramps are curved, not the custom linear ramp. Use {"mode":"balanced"} alone for the balanced preset; do not attach custom settings to it.

A stronger discount is not automatically better. Decide how much you are willing to reduce rates and how close to arrival that policy should begin, then review results. These examples demonstrate the rule, not an optimal discount for every property.

Why the final rate may differ

Known reserved and blocked dates are excluded from this adjustment. Other automatic rules share its post-model price basis without a combined percentage cap. Price limits can then undo some or all of a discount.

Use seasonal overrides to choose a different complete custom policy for a month or date range. Inspect the last_minute_rule explanation line and subsequent price-limit adjustments.

Test your window before combining rules

Choose the lead-time window, shape, and maximum adjustment first. Check one night outside the window, one on its boundary, and one close to arrival. Once those behave as intended, add price limits and confirm how they affect the final rate.