Skip to content

[Due for payment 2026-10-26] [CFI][FE 6/7] Payment history: open the billing receipt / invoice summary in the attachment modal #101833

Open

Description

@melvin-bot

Sub-task of [CFI] Add a "View payment history" page with historical billing receipts and monthly user activity.

Goal

View receipt (in-product billing) and View invoice (invoice billing) open the document in the attachment modal in place, downloadable from there. Neither navigates to the Spend page.

Scope

  • One mechanism, two labels — View receipt for in-product billing, View invoice for invoice billing. The invoice summary PDF is generated separately from the invoice expense, so there is nowhere to navigate to for a copy of it; opening in place is the only option.
  • Not every row has a document. When there isn't one, hide the button entirely and shift the remaining content up. Do not render it disabled.
  • Resolving which document a row has needs a fallback chain, not just a direct identifier. A bill that failed and was later cleared carries its document on the original failed purchase it points back at, so walk that chain on the frontend — cheap once the full list is in Onyx. Rows predating that scheme carry no identifier at all; treating those as "no document" is an accepted scope cut.
  • Fetch the document from the backend endpoint that serves it by identifier (tracked in a separate internal issue).

Acceptance criteria

  • In-product billing: View receipt opens the receipt in the attachment modal in place and it downloads from there.
  • Invoice billing: View invoice opens the invoice summary PDF in the same modal and it downloads from there.
  • A row with no document hides the button and leaves no gap in the layout.
  • A bill that failed and was later cleared still resolves its receipt.
  • A failed fetch shows an error state instead of an empty modal.
  • Works on web, iOS, and Android.

Depends on

FE 4/7, and the backend endpoint that serves the receipt / invoice summary by identifier (tracked in a separate internal issue).

Easy to get wrong

  • Using navigation instead of the attachment modal. This was called out explicitly in design review — receipts open in place.
  • Assuming every row has a document, so the button renders for rows that can never resolve one.
  • Only handling the direct identifier and silently dropping the button on older cleared-after-failure rows.
Issue OwnerCurrent Issue Owner: @mallenexpensify

Activity

  1. self-assigned this
    on Sep 25, 2026
  2. dukenv0307 commented on Oct 1, 2026

    @dukenv0307
    Contributor

    Not overdue

  3. dukenv0307 commented on Oct 5, 2026

    @dukenv0307
    Contributor

    Not overdue

  4. 14 remaining items

  5. changed the title [-][CFI][FE 6/7] Payment history: open the billing receipt / invoice summary in the attachment modal[/-] [+][Due for payment 2026-10-26] [CFI][FE 6/7] Payment history: open the billing receipt / invoice summary in the attachment modal[/+] on Oct 19, 2026
  6. melvin-bot commented on Oct 19, 2026

    @melvin-bot
    Author

    @nkdengineer

    The solution for this issue has been 🚀 deployed to production 🚀 in version 9.5.13-6 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue:

    If no regressions arise, payment will be issued on 2026-10-26. 🎊

    The following checklist (instructions) will need to be completed before the issue can be closed. Please copy/paste the Contributor+ Checklist from here into a new comment on this GH and complete it. If you have the K2 extension, you can simply click: [this button]. If no checklist is needed for this issue, you can click: [no checklist button]

  7. nkdengineer commented on Oct 21, 2026

    @nkdengineer
    Contributor

    Not overdue.

  8. added
    Awaiting PaymentAuto-added when associated PR is deployed to production
    and removed on Oct 21, 2026
  9. melvin-bot commented on Oct 25, 2026

    @melvin-bot
    Author

    Triggered auto assignment to @mallenexpensify (Awaiting Payment)

  10. melvin-bot commented on Oct 25, 2026

    @melvin-bot
    Author

    Payment Summary

    Resolving PRs:

    BugZero Checklist (@mallenexpensify)

    • I have confirmed assignees, roles, and Upwork contracts look correct
    • I have paid out Upwork contracts / manual NewDot requests
    • [BugZero Assignee] I have created a GH issue for creating/updating the regression test once above steps have been agreed upon
  11. mallenexpensify commented on Oct 27, 2026

    @mallenexpensify
    Contributor

    Waiting for word back here to see if these are $175 each or $250

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

Metadata

Metadata

Labels

Awaiting PaymentAuto-added when associated PR is deployed to productionDailyKSv2

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions