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.
@nkdengineer price above updated to $175, please confirm in a post that you saw this then close (I want to make sure you haven't already requested the funds)
Activity
dukenv0307 commentedon Oct 1, 2026
Not overdue
11 remaining items
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 $175 via NewDot
I'm guessing this project started before 2026-09-19Also assuming we don't need a test case, post one if you disagree.I updated 2026-10-29 to $175, based on here.
mallenexpensify commentedon Oct 29, 2026
@nkdengineer price above updated to $175, please confirm in a post that you saw this then close (I want to make sure you haven't already requested the funds)
nkdengineer commentedon Oct 29, 2026
@mallenexpensify Yeah I see it.
twisterdotcom commentedon Oct 30, 2026
$175 approved for @nkdengineer in Report ID: R00AEZwhfU8x.
Zapier Logs
Run ID: 00040eee-47fc-a141-bf38-29ec14d3a624SO: https://stackoverflowteams.com/c/expensify/questions/7582