{
  "slug": "length-of-stay-discount-impact",
  "title": "Length-of-Stay Discount Impact Calculator",
  "heading": "Length-of-Stay Discount Impact Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/length-of-stay-discount-impact",
  "summary": "See whether a weekly or monthly stay discount actually nets more revenue per available night.",
  "description": "Offering a length-of-stay discount trades rate for reduced turnover cost and improved occupancy predictability, but it only makes sense if the total economics beat what you'd earn from shorter, higher-rate bookings with more turnovers. This calculator compares total revenue and net revenue (after turnover cost per stay) between a base short-stay scenario and a discounted longer-stay scenario across the same number of available nights, showing whether the discount pays for itself through fewer cleanings and more reliable occupancy.",
  "formula": "Net revenue = (Nights × Rate × (1 − discount %)) − (Number of Stays × Turnover Cost). Compare short-stay vs long-stay scenarios over equal total nights.",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=length-of-stay-discount-impact",
  "inputs": [
    {
      "id": "totalNights",
      "label": "Total available nights to fill",
      "kind": "number",
      "hint": null,
      "default": 30,
      "unit": null,
      "min": 1,
      "max": null
    },
    {
      "id": "baseRate",
      "label": "Nightly rate (short stays)",
      "kind": "number",
      "hint": null,
      "default": 150,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "shortStayLength",
      "label": "Average short-stay length",
      "kind": "number",
      "hint": null,
      "default": 3,
      "unit": "nights",
      "min": 1,
      "max": null
    },
    {
      "id": "longStayLength",
      "label": "Discounted stay length",
      "kind": "number",
      "hint": null,
      "default": 14,
      "unit": "nights",
      "min": 1,
      "max": null
    },
    {
      "id": "discount",
      "label": "Length-of-stay discount",
      "kind": "number",
      "hint": null,
      "default": 20,
      "unit": "%",
      "min": 0,
      "max": 60
    },
    {
      "id": "turnoverCost",
      "label": "Turnover cost per stay",
      "kind": "number",
      "hint": null,
      "default": 90,
      "unit": "$",
      "min": 0,
      "max": null
    }
  ],
  "outputs": [
    {
      "id": "longNet",
      "label": "Net revenue — discounted long stay",
      "format": "currency",
      "hint": null,
      "primary": true
    },
    {
      "id": "shortNet",
      "label": "Net revenue — short stays at full rate",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "netDifference",
      "label": "Net advantage of long-stay discount",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "discountedRate",
      "label": "Effective discounted nightly rate",
      "format": "currency",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Total available nights to fill: 30",
      "Nightly rate (short stays): 150 $",
      "Average short-stay length: 3 nights",
      "Discounted stay length: 14 nights",
      "Length-of-stay discount: 20 %",
      "Turnover cost per stay: 90 $"
    ],
    "outputs": [
      "Net revenue — discounted long stay: $3,407.14",
      "Net revenue — short stays at full rate: $3,600.00",
      "Net advantage of long-stay discount: -$192.86",
      "Effective discounted nightly rate: $120.00"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter total available nights to fill.",
      "Enter nightly rate (short stays) ($).",
      "Enter average short-stay length (nights).",
      "Enter discounted stay length (nights).",
      "Enter length-of-stay discount (%).",
      "Enter turnover cost per stay ($).",
      "Read your net revenue — discounted long stay on the right — it updates as you type.",
      "Hit Share to keep the scenario or send it to someone."
    ]
  },
  "scenarios": [
    {
      "name": "Conservative",
      "description": "Lower-end numbers — what if things land soft?",
      "values": {
        "totalNights": 18,
        "baseRate": 90,
        "shortStayLength": 2,
        "longStayLength": 8,
        "discount": 12,
        "turnoverCost": 55
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "totalNights": 30,
        "baseRate": 150,
        "shortStayLength": 3,
        "longStayLength": 14,
        "discount": 20,
        "turnoverCost": 90
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "totalNights": 48,
        "baseRate": 240,
        "shortStayLength": 5,
        "longStayLength": 22,
        "discount": 32,
        "turnoverCost": 145
      }
    }
  ],
  "limitations": [
    "Results are estimates before tax, fees, and inflation unless an input explicitly covers them.",
    "Rates are treated as fixed for the whole period — variable-rate products will drift from this projection.",
    "This is educational maths, not financial advice. Check anything contractual with the lender or your accountant."
  ],
  "faq": [
    {
      "q": "When does a length-of-stay discount actually make sense?",
      "a": "It pays off when turnover cost per stay is high relative to nightly rate, or when you're trying to lock in occupancy during shoulder or off-season periods where the alternative is an empty unit. High-turnover-cost properties like STRs with $80-100 cleaning fees benefit more than hotels with lower per-stay cleaning cost."
    },
    {
      "q": "What discount level is typical for weekly or monthly stays?",
      "a": "Common industry benchmarks are 10-15% off for a 7-night stay and 25-35% off for a 28+ night stay, reflecting both reduced turnover frequency and the lower marketing/booking friction cost of filling one longer reservation instead of several shorter ones."
    },
    {
      "q": "Does this ignore the risk of an early cancellation on a long stay?",
      "a": "Yes — this model assumes the booked length is realized. Long-stay discounts usually come with stricter cancellation policies precisely because the discount economics depend on the full stay happening; factor in a stricter refund policy when offering deep length-of-stay discounts."
    },
    {
      "q": "Should turnover cost include lost booking-gap nights between short stays?",
      "a": "In real operations yes, since short-stay calendars rarely book back-to-back with zero gap nights, while a single long stay eliminates that gap risk entirely. This calculator assumes both scenarios fill the same total nights for a clean comparison — treat any gap-night risk as an additional real-world advantage for the long-stay option."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/str-cleaning-fee-breakeven",
    "https://www.revenuelab.fyi/toolbox/seasonal-pricing-uplift-calculator",
    "https://www.revenuelab.fyi/toolbox/hotel-adr-occupancy-calculator"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Length-of-Stay Discount Impact Calculator (https://www.revenuelab.fyi/toolbox/length-of-stay-discount-impact)"
}