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
Personal card expenses auto-added to a workspace report are created without an IOU report action #102280
Problem
Some expenses imported from a personal card get auto-added to a workspace expense report without an IOU (money request) report action. The action is only created later, when the user opens the expense.
Root Cause: This appears to be a backend/internal issue. A separate internal investigation is needed. The App never creates IOU actions for imported card expenses. The server imports the expense and adds it to the report, so the missing action comes from the server.
Recommended Fix: The fix needs changes outside the App repo. An internal engineer with backend access should pick this up. No App change fixes the root cause.
To measure scope: Count the App log [Report] Legacy transaction fallback: creating money request preview for card expenses created recently. If the count jumped on a specific day, a recent deploy caused it. If it didn't, the gap has been there for a while.
Next Steps: An internal engineer should take this on, because the fix is outside the App repo. Reply with @MelvinBot <your feedback> to refine this analysis.
this issue was created 2 weeks ago. Are we close to a solution? Let's make sure we're treating this as a top priority. Don't hesitate to create a thread in #expensify-open-source to align faster in real time. Thanks!
I couldn't confirm the fix end to end. A backend fix for this was deployed to production on Oct 5, but my web test stopped at the CSV file picker, which the test tool can't drive, so no expenses were imported. To confirm, connect a non-reimbursable personal card on a workspace with auto-reporting on. Then check that Hold, Move, and Delete appear for a new expense before you open it.
Step
Status
Workspace created with auto-reporting turned onWorkflows > Submissions is on, and Frequency changed from Manually to Daily.
✅
Personal card import set to not reimbursableImport transactions: card name "Melvin Personal Card", USD, "Transactions are reimbursable" turned off.
✅
CSV import completes and the card shows imported expensesReached "Upload a spreadsheet", but choosing a file opens a native file picker the web test tool can't use. The import never ran.
❌
Imported expenses land on a workspace report (not Unreported)Not reached, because no expenses were imported.
❌
Hold, Move, and Delete appear for an unopened imported expenseNot reached, because no expenses were imported.
❌
Bulk delete from Search removes an unopened imported expenseNot reached, because no expenses were imported.
I can't confirm that from the linked PR because I don't have access to that repository, so I can't read its diff or merge status.
Here's what I can confirm:
The internal issue tracking this backend fix is closed.
That fix was deployed to production on Oct 5.
I still can't reproduce the bug in the web test. It needs a card import, and the test tool can't upload the CSV file.
If that PR is the Oct 5 fix and you're happy with it, this issue can be closed. To double-check, an internal engineer can connect a non-reimbursable personal card on a workspace with auto-reporting on. Before opening a newly imported expense, they should see Hold, Move and Delete in the report's selection menu.
Activity
MelvinBot commentedon Sep 25, 2026
Issue Analysis
Root Cause: This appears to be a backend/internal issue. A separate internal investigation is needed. The App never creates IOU actions for imported card expenses. The server imports the expense and adds it to the report, so the missing action comes from the server.
Recommended Fix: The fix needs changes outside the App repo. An internal engineer with backend access should pick this up. No App change fixes the root cause.
The action shows up later only because of the App's legacy fallback in
src/libs/actions/Report/index.ts:1860-1950. When you open an expense with no IOU action,openReportbuilds one and asks the server to save it. That fallback was meant for old transactions (Track legacy transactions missing IOU report actions), not new imports.Related issues:
Investigation details
The App doesn't create these actions.
src/libs/actions/PersonalCards.ts:39-97only sendsSyncCardand updates the card list.src/libs/actions/ImportTransactions.ts:227-246builds CSV-imported expenses as unreported (reportID: '0') with no report actions.These paths trigger the fallback when you open an expense:
ReportFetchHandler.tsx:598-642SearchMoneyRequestReportPage.tsx:250-296useNavigateToTransactionThread.ts:59-81SearchUIUtils.ts:2496-2514These App features break until the expense is opened:
useDeleteTransactions.ts:330-333.ReportUtils.ts:5456-5464.useSelectedTransactionsActions.ts).The fallback has a gap. The prev/next buttons in the expense view open the parent report when an expense has no IOU action (
TransactionThreadNavigationUtils.ts:66-69). They never trigger the fallback. This isn't the root cause, but it's an App-side mitigation worth fixing along with Bulk delete from Search silently skips legacy expenses that have no IOU report action.Not related: Expense - Missing Delete option from context menu when report contains only one card expense has a separate App-side cause. It happens when the IOU action does exist.
To measure scope: Count the App log
[Report] Legacy transaction fallback: creating money request previewfor card expenses created recently. If the count jumped on a specific day, a recent deploy caused it. If it didn't, the gap has been there for a while.Next Steps: An internal engineer should take this on, because the fix is outside the App repo. Reply with
@MelvinBot <your feedback>to refine this analysis.view run
melvin-bot commentedon Sep 28, 2026
Whoops! This issue is 2 days overdue. Let's get this updated quick!
melvin-bot commentedon Sep 30, 2026
Eep! 4 days overdue now. Issues have feelings too...
melvin-bot commentedon Oct 2, 2026
6 days overdue. This is scarier than being forced to listen to Vogon poetry!
melvin-bot commentedon Oct 3, 2026
6 days overdue. This is scarier than being forced to listen to Vogon poetry!
1 remaining item
melvin-bot commentedon Oct 9, 2026
this issue was created 2 weeks ago. Are we close to a solution? Let's make sure we're treating this as a top priority. Don't hesitate to create a thread in #expensify-open-source to align faster in real time. Thanks!
melvin-bot commentedon Oct 13, 2026
Huh... This is 4 days overdue. Who can take care of this?
hungvu193 commentedon Oct 15, 2026
Working on it 👀
hungvu193 commentedon Oct 20, 2026
Still working on it
hungvu193 commentedon Oct 21, 2026
@MelvinBot Looks like this is fixed, can you verify?
MelvinBot commentedon Oct 21, 2026
🤖 Web test steps verification results:⚠️ partial
I couldn't confirm the fix end to end. A backend fix for this was deployed to production on Oct 5, but my web test stopped at the CSV file picker, which the test tool can't drive, so no expenses were imported. To confirm, connect a non-reimbursable personal card on a workspace with auto-reporting on. Then check that Hold, Move, and Delete appear for a new expense before you open it.

Workspace created with auto-reporting turned on
Workflows > Submissions is on, and Frequency changed from Manually to Daily.Personal card import set to not reimbursable
Import transactions: card name "Melvin Personal Card", USD, "Transactions are reimbursable" turned off.CSV import completes and the card shows imported expenses
Reached "Upload a spreadsheet", but choosing a file opens a native file picker the web test tool can't use. The import never ran.Imported expenses land on a workspace report (not Unreported)
Not reached, because no expenses were imported.Hold, Move, and Delete appear for an unopened imported expense
Not reached, because no expenses were imported.Bulk delete from Search removes an unopened imported expense
Not reached, because no expenses were imported.view run · view recording
hungvu193 commentedon Oct 21, 2026
@MelvinBot looks like it's fixed in here
MelvinBot commentedon Oct 21, 2026
I can't confirm that from the linked PR because I don't have access to that repository, so I can't read its diff or merge status.
Here's what I can confirm:
If that PR is the Oct 5 fix and you're happy with it, this issue can be closed. To double-check, an internal engineer can connect a non-reimbursable personal card on a workspace with auto-reporting on. Before opening a newly imported expense, they should see Hold, Move and Delete in the report's selection menu.
view run
hungvu193 commentedon Oct 21, 2026
Ok I can confirm this is fixed. I'll ask QA to retest this.