Skip to content

[$175] Display nightly average cost and number of nights on multi-day expenses #102558

Open

Description

@sakluger

Context

We recently shipped per-night/per-day evaluation of category and workspace amount limits: when SmartScan detects reservationStartDate and reservationEndDate on a receipt, the "Individual expense" limit is checked against the per-night average instead of the full expense total. That work is tracked in https://github.com/Expensify/Expensify/issues/632262.

Problem

Nothing in the expense UI tells the user that the limit was evaluated on a per-night average, or what that average was. An employee or approver looking at a $2,800 hotel expense with a $500 category limit sees no violation and no explanation of why.

Solution

Display the nightly average cost and the number of nights on the expense for multi-day expenses, similar to how we already show the per-attendee amount.

  • The new info will be shown as a hint under the Category row
  • The format will be x nights • y per night (example: 3 nights • $232.42 per night)
  • It uses the same reservation dates as the per-night category limit check. Single-night stays and expenses without reservation dates show nothing.
Image

Slack thread: https://expensify.slack.com/archives/C03U7DCU4/p1779122655917139
Original GH issue where we settled on the design: https://github.com/Expensify/Expensify/issues/682709

Upwork Automation - Do Not Edit
Issue OwnerCurrent Issue Owner: @thelullabyy

Activity

  1. melvin-bot commented on Sep 29, 2026

    @melvin-bot

    Triggered auto assignment to Design team member for new feature review - @dannymcclain (NewFeature)

  2. shawnborton commented on Oct 1, 2026

    @shawnborton
    Contributor

    Is this ready for implementation? If so, can you add the labels to get it moving? Thanks!

  3. flaviadefaria commented on Oct 5, 2026

    @flaviadefaria
    Contributor

    @sakluger, should we add the External label?

  4. sakluger commented on Oct 5, 2026

    @sakluger
    ContributorAuthor

    Yep, let's do it.

  5. added
    ExternalAdded to denote the issue can be worked on by a contributor
    on Oct 5, 2026
  6. 11 remaining items

  7. sakluger commented on Oct 8, 2026

    @sakluger
    ContributorAuthor

    Moving the star to Flavia to manage the issue while I'm gone 👍

  8. flaviadefaria commented on Oct 9, 2026

    @flaviadefaria
    Contributor

    @thelullabyy what are your thoughts on Melvin's proposal?

  9. melvin-bot commented on Oct 12, 2026

    @melvin-bot

    @flaviadefaria Uh oh! This issue is overdue by 2 days. Don't forget to update your issues!

  10. flaviadefaria commented on Oct 13, 2026

    @flaviadefaria
    Contributor

    @thelullabyy friendly bump here. This feature is already live, so we want to be quick to release this polish. Thanks!

  11. melvin-bot commented on Oct 16, 2026

    @melvin-bot

    @thelullabyy Whoops! This issue is 2 days overdue. Let's get this updated quick!

  12. thelullabyy commented on Oct 18, 2026

    @thelullabyy
    Contributor

    Sorry for delay, I will finish it today @flaviadefaria

  13. thelullabyy commented on Oct 18, 2026

    @thelullabyy
    Contributor

    @MelvinBot Please go ahead with your proposal, remember to double check everything again before opening a PR

  14. MelvinBot commented on Oct 18, 2026

    @MelvinBot
    Contributor

    🤖 Draft PR created: Show nights and nightly rate under Category for multi-night reservation expenses
    Please mark it as "Ready for review" or ask me to do that for you when it is ready for review.

    It follows the approved proposal. Before opening it, I rebuilt the branch on the latest main and checked everything again:

    • The hint uses the same getReservationNights helper as the per-night limit check on current main, so the two always agree on the night count.
    • The only change from the testing branch is the Japanese text. It now says 1泊あたり, which matches the wording the app already uses.
    • typecheck, ESLint, the formatter, cspell, and the React Compiler check all pass.
    • MoneyRequestViewTest.tsx passes all 35 tests, including the 2 new ones.

    I couldn't test it in a browser. The web test session loaded a blank page, and the browser tester can't inject reservation dates. The PR description has the console steps for a manual check.


    view run · no recording available

  15. melvin-bot commented on Oct 21, 2026

    @melvin-bot

    @thelullabyy Uh oh! This issue is overdue by 2 days. Don't forget to update your issues!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

DailyKSv2ExternalAdded to denote the issue can be worked on by a contributorNewFeatureSomething to build that is a new item.Overdue

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions