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-09-22] Expense - New Email Not Found via Participant Option #99276
Version Number: v9.4.59-0 Reproducible in staging?: Yes Reproducible in production?: Yes If this was caught during regression testing, add the test name, ID and link from BrowserStack:#98020 Email or phone of affected tester (no customers):sintayewhaylu01@gmail.com Issue reported by: Applause Internal Team Bug source: Pull Request QA execution Device used: Windows 10 /Chrome App Component: Other
Action Performed:
Navigate to staging.new.expensify.com.
Open the Inbox.
Go to FAB → Create Expense → Manual.
Enter any amount and click Next.
In the recipient field, enter a brand-new email address.
Select the email address and click Create Expense.
Expected Result:
The user should be taken to the newly created DM with that user without any errors.
Root cause (Medium confidence): The "Email not found" error is not generated by the App frontend — that exact string doesn't exist anywhere in the App source. It's a backend error surfaced in the UI when the money-request is submitted. The App-side flow for a brand-new recipient email is the standard "invite a new user" path and looks correct: it builds an invite option with a client-side placeholder account ID (see generateAccountID → OptionsListUtils/index.ts:2428) and sends the real email as the recipient. The failure happens server-side while resolving that recipient.
This is a backend/internal issue — the fix is outside the App repo. A separate internal investigation into the money-request handler's recipient (email/account) resolution for brand-new recipients is needed. There's no App code change to recommend here.
Note — could not reproduce on demand: A fresh reproduction of the exact steps on the latest web build worked correctly (the expense was created and a new DM with the invited email opened, no error). Combined with the report that it is reproducible in staging/production, this points to an intermittent backend condition rather than a consistent failure — which is why a code-only App fix wouldn't address it.
Investigation details
Frontend flow verified (App): FAB → Create expense → Manual → amount → Next → type new email → select invite row → Create expense. The new-email participant is turned into an optimistic invite option (placeholder account ID + login = email) and submitted via the money-request write command with the recipient's email attached. This is the normal invite-new-user pattern used across the app.
Error origin:grep of the App source for "Email not found" / emailNotFound returns nothing — the message is thrown by the backend and surfaced verbatim in the UI.
Production evidence: The backend "Email not found" exception is a recurring, long-standing error that fires from the money-request/IOU code path (and other server commands) when recipient resolution returns no usable email for the resolved account. It's low-frequency/intermittent, consistent with the on-demand repro passing here.
QA source PR:#98020 is "prevent live-tail cleanup from clearing RHP route params" — unrelated to money-request logic; it's just where QA happened to catch this.
Reproduction attempt (web): Manual expense to a brand-new email melvintest.newuser…@example.com — succeeded: "Expense added" toast, new Outstanding €5.00 expense, and a new 1:1 DM opened. No error at any step.
Next Steps for Contributor+ team:
This needs an internal engineer with backend access to investigate recipient resolution in the money-request handler for brand-new emails. It is not fixable in the App repo, so it should be escalated internally rather than picked up as an App code change.
@marufsharifi I can also reproduce this. And I think melvin is wrong . this can be fixed on FE
It blames the money-request handler, but RequestMoney returns jsonCode 200 (carrying the client generated debtorAccountID), and the expense is created fine in the reporter's own video. The error sits in report.errorFields.createChat, which only openReport writes.
Activity
applause-bot commentedon Aug 23, 2026
While Applause doesn't embed attachments for this bug, here are the links for quick view:
https://platform.applause.com/services/links/v1/external/253fec57cb3e067a1a44c05a82b60cd6fdad2e0b287247f5590cccde1ecd129d
MelvinBot commentedon Aug 23, 2026
Issue Analysis
Root cause (Medium confidence): The "Email not found" error is not generated by the App frontend — that exact string doesn't exist anywhere in the App source. It's a backend error surfaced in the UI when the money-request is submitted. The App-side flow for a brand-new recipient email is the standard "invite a new user" path and looks correct: it builds an invite option with a client-side placeholder account ID (see
generateAccountID→OptionsListUtils/index.ts:2428) and sends the real email as the recipient. The failure happens server-side while resolving that recipient.This is a backend/internal issue — the fix is outside the App repo. A separate internal investigation into the money-request handler's recipient (email/account) resolution for brand-new recipients is needed. There's no App code change to recommend here.
Note — could not reproduce on demand: A fresh reproduction of the exact steps on the latest web build worked correctly (the expense was created and a new DM with the invited email opened, no error). Combined with the report that it is reproducible in staging/production, this points to an intermittent backend condition rather than a consistent failure — which is why a code-only App fix wouldn't address it.
Investigation details
login = email) and submitted via the money-request write command with the recipient's email attached. This is the normal invite-new-user pattern used across the app.grepof the App source for "Email not found" /emailNotFoundreturns nothing — the message is thrown by the backend and surfaced verbatim in the UI.melvintest.newuser…@example.com— succeeded: "Expense added" toast, new Outstanding €5.00 expense, and a new 1:1 DM opened. No error at any step.Next Steps for Contributor+ team:
This needs an internal engineer with backend access to investigate recipient resolution in the money-request handler for brand-new emails. It is not fixable in the App repo, so it should be escalated internally rather than picked up as an App code change.
view run
melvin-bot commentedon Aug 23, 2026
Triggered auto assignment to Contributor-plus team member for initial proposal review - @QichenZhu (
External)melvin-bot commentedon Aug 23, 2026
Unable to auto-create job on Upwork. The BZ team member should create it manually for this issue.
MelvinBot commentedon Aug 23, 2026
Reproduction attempt (web) — bug did not reproduce
Confirm details before submitting: recipient is the brand-new email, amount EUR 5.00
New DM opened with the invited email showing the EUR 5.00 owed expense - no error, bug did not reproduce
QichenZhu commentedon Aug 26, 2026
Asked for someone to take over: https://expensify.slack.com/archives/C02NK2DQWUX/p1787739729632319.
marufsharifi commentedon Aug 26, 2026
@QichenZhu, i can reproduce this.
Video_2026-08-26_15-00-03.mp4
marufsharifi commentedon Aug 26, 2026
I take over this, based on https://expensify.slack.com/archives/C02NK2DQWUX/p1787739729632319
QichenZhu commentedon Aug 26, 2026
@mallenexpensify could you please reassign this issue?
mukhrr commentedon Aug 26, 2026
@marufsharifi I can also reproduce this. And I think melvin is wrong . this can be fixed on FE
It blames the money-request handler, but
RequestMoneyreturnsjsonCode 200(carrying the client generateddebtorAccountID), and the expense is created fine in the reporter's own video. The error sits inreport.errorFields.createChat, which onlyopenReportwrites.Same
OpenReportagainst staging, three ways:666 "Email not found"accountIDListempty →200200So the email is fine, the account ID we generate locally is what server can't resolve, and that param is FE's. what do you think?
61 remaining items
melvin-bot commentedon Sep 21, 2026
Triggered auto assignment to @mallenexpensify (
Awaiting Payment)melvin-bot commentedon Sep 21, 2026
Payment Summary
Resolving PRs:
Fix "Email not found" when opening a DM with a brand-new email after creating an expense #100596
Assignee: @ahmdshrif requires payment (Needs manual offer from BZ)
Assignee: @marufsharifi requires payment (Needs manual offer from BZ)
BugZero Checklist (@mallenexpensify)
mallenexpensify commentedon Sep 24, 2026
Payment Summary
Contributor: @ahmdshrif paid $250 via Upwork
Contributor+: @marufsharifi paid $250 via Upwork
Both, can you please accept the job below? Please reply here and tag me once you have.
https://www.upwork.com/jobs/~022103233697682561032
ahmdshrif commentedon Sep 24, 2026
@mallenexpensify Offer accepted.. Thanks.
marufsharifi commentedon Sep 24, 2026
@mallenexpensify, I've accepted the offer. thanks.
mallenexpensify commentedon Sep 24, 2026
@marufsharifi @ahmdshrif paid, summary updated above. Thx.