You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Due for payment 2026-10-26] [CFI][FE 6/7] Payment history: open the billing receipt / invoice summary in the attachment modal #101833
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.
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
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]
Activity
dukenv0307 commentedon Oct 1, 2026
Not overdue
dukenv0307 commentedon Oct 5, 2026
Not overdue
14 remaining items
[-][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[/+]melvin-bot commentedon Oct 19, 2026
@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]
nkdengineer commentedon Oct 21, 2026
Not overdue.
melvin-bot commentedon Oct 25, 2026
Triggered auto assignment to @mallenexpensify (
Awaiting Payment)melvin-bot commentedon Oct 25, 2026
Payment Summary
Resolving PRs:
Add payment details billed to and billing receipt #104020
Contributor: @dukenv0307 does not require payment (Contractor)
Reviewer: @nkdengineer owed $175 via NewDot
BugZero Checklist (@mallenexpensify)
mallenexpensify commentedon Oct 27, 2026
Waiting for word back here to see if these are $175 each or $250