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
Tapping a row in the payment history table opens a Payment details page in the RHP with the full breakdown for that bill.
Scope
New screen name, route (with a purchase identifier param), linking config entry, modal stack registration, and navigation param list entry — the same five places as FE 1/7.
Render the breakdown for the selected bill, reusing the normalised row model from FE 3/7.
Dynamic badge text. Three of the states carry extra detail that only renders on this page:
Balance transfer to <userEmail>
Balance transfer from <userEmail>
Disputed on <date> (Pending)
Disputed on <date> (Refunded)
Disputed on <date> (Closed)
Refunded on <date>
Refunded <amount> on <date> — partial refund
Handle a purchase identifier that isn't in Onyx with NotFoundPage.
Copy in every src/languages/*.ts locale, with the date / amount / email parameters declared in src/languages/params.ts.
Acceptance criteria
Tapping any row opens the details page for that bill; back returns to the table.
All seven dynamic badge variants render with the correct interpolated values.
Dates and amounts are formatted for the user's locale and the purchase currency.
Deep-linking a details route works, and an unknown purchase identifier renders the not-found page.
Renders correctly wide and narrow.
Depends on
FE 3/7 (the row model and the badge states).
Easy to get wrong
Hard-coding the badge strings instead of translating them with parameters.
Formatting the dispute and refund dates with raw string manipulation rather than the app's locale-aware date helpers.
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.5.8-5 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue:
Activity
dukenv0307 commentedon Oct 1, 2026
Not overdue
6 remaining items
dukenv0307 commentedon Oct 12, 2026
Not overdue
[-][CFI][FE 4/7] Payment history: Payment details page[/-][+][Due for payment 2026-10-21] [CFI][FE 4/7] Payment history: Payment details page[/+]melvin-bot commentedon Oct 14, 2026
@nkdengineer
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.5.8-5 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-21. 🎊
melvin-bot commentedon Oct 15, 2026
@nkdengineer Whoops! This issue is 2 days overdue. Let's get this updated quick!
melvin-bot commentedon Oct 19, 2026
@nkdengineer 6 days overdue. This is scarier than being forced to listen to Vogon poetry!
melvin-bot commentedon Oct 20, 2026
Triggered auto assignment to @mallenexpensify (
Awaiting Payment)melvin-bot commentedon Oct 20, 2026
Payment Summary
Resolving PRs:
Add payment details page #103687
Contributor: @dukenv0307 does not require payment (Contractor)
Reviewer: @nkdengineer owed $175 via NewDot
BugZero Checklist (@mallenexpensify)
mallenexpensify commentedon Oct 21, 2026
Payment Summary
Contributor+: @nkdengineer due $250 via NewDot
I'm guessing this project started before 2026-09-19 . Also assuming we don't need a test case, post one if you disagree.