Repository navigation
Description
If you haven’t already, check out our contributing guidelines for onboarding and email contributors@expensify.com to request to join our Slack channel!
Version Number: v9.1.89-19
Reproducible in staging?: Y
Reproducible in production?: Y
If this was caught during regression testing, add the test name, ID and link from TestRail: N/A
Email or phone of affected tester (no customers): daniel@expensify.com
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL: N/A
Issue reported by: @danielrvidal
Slack conversation: #convert
Action Performed:
- Login to an account that has both a physical and virtual Expensify combo card (meaning, the card was originally issued in Expensify Classic).
- Make sure the physical card was replaced at some point, meaning the physical card's
cardIDin Expensify is > than the virtual card'scardID. - Go to Settings > Wallet.
- Tap the Expensify Card row.
Note: If you're trying to reproduce this and have a combo Expensify Card, but haven't replaced the physical card at some point (meaning you don't meet the conditions to see this bug), you can also simulate the page where we don't show the physical card by manually replacing the cardID in this URL with your virtual cardID: https://staging.new.expensify.com/settings/wallet/card/%cardID%.
Expected Result:
You should see both the physical and virtual card that together make up the combo card on the Expensify Card page.
Actual Result:
If the physical card has a cardID higher than the virtual card, we incorrectly only show the virtual card on this page. One suggested solution to this from @mountiny is to update this grouping logic here to make sure we always keep the physical card ID.
Workaround:
If you manually reload https://staging.new.expensify.com/settings/wallet/card/%cardID% with your physical cardID, then we show both cards on the Expensify Card page.
Platforms:
Select the officially supported platforms where the issue was reproduced:
- Android: App
- Android: mWeb Chrome
- iOS: App
- iOS: mWeb Safari
- iOS: mWeb Chrome
- Windows: Chrome
- MacOS: Chrome / Safari
- MacOS: Desktop
Screenshots/Videos
Expected combo Expensify Card page
Actual combo Expensify Card page because of this bug
Issue Owner
Current Issue Owner: @Issue Owner
Current Issue Owner: @muttmuureMetadata
Metadata
Labels
Type
Projects
- StatusShow more project fieldsDone
Activity
melvin-bot commentedon Aug 6, 2025
Triggered auto assignment to Contributor-plus team member for initial proposal review - @s77rt (
External)melvin-bot commentedon Aug 6, 2025
Triggered auto assignment to @muttmuure (
Bug), see https://stackoverflow.com/c/expensify/questions/14418 for more details. Please add this bug to a GH project, as outlined in the SO.elizhabiboullah commentedon Aug 6, 2025
Proposal
Please re-state the problem that we are trying to solve in this issue.
when a user has a physical Expensify card that was replaced after the virtual card was issued. In this scenario, the physical card (with a higher cardID) is not displayed on the Expensify Card page, even though both the physical and virtual cards should be visible as part of the combo card.
What is the root cause of that problem?
The issue is in the card filtering logic, the current implementation filters out cards based on their
issuedByandisVirtualstatus, which cause physical cards with higher cardIDs to be excludedApp/src/pages/settings/Wallet/ExpensifyCardPage.tsx
Lines 86 to 91 in 0020ebc
What changes do you think we should make in order to solve the problem?
fix the filtering logic to ensure both physical and virtual cards are shown when they're part of the same combo card
What specific scenarios should we cover in automated tests to prevent reintroducing this issue in the future?
N/A
cosmicvulpes commentedon Aug 6, 2025
Proposal
Please re-state the problem that we are trying to solve in this issue.
When a workspace has a combo Expensify Card (one physical + one virtual) and the physical card was replaced after the virtual card was created, the Assigned Cards → Expensify Card row in Wallet navigates to a page that only shows the virtual card. The physical card – even though active – is missing from the details screen.
What is the root cause of that problem?
PaymentMethodListbuilds the list of assigned-card rows bycardList, thenThe original sort ordered cards by “Is this an Expensify card?” only, ignoring whether it is physical or virtual. Since the virtual card’s
cardIDis always lower than the replacement physical card’s, it becomes the “first” card for the domain. Consequently, the row’s navigation URL contains the virtual cardID, and the destination screen filters out the physical card.What changes do you think we should make in order to solve the problem?
Update the comparator used in
PaymentMethodList.App/src/pages/settings/Wallet/PaymentMethodList.tsx
Lines 219 to 226 in e32a770
This guarantees that, the physical Expensify card is visited first and its
cardIDis used for navigation.What specific scenarios should we cover in automated tests to prevent reintroducing this issue in the future?
None
What alternative solutions did you explore? (Optional)
None
s77rt commentedon Aug 7, 2025
@elizhabiboullah @cosmicvulpes Were you able to reproduce the bug?
@mountiny Do you know how I can assign myself a combo card? Or how I can add a policy domain?
elizhabiboullah commentedon Aug 7, 2025
I couldn't reproduce the bug as I don’t have a physical card yet, and the workaround doesn’t work for me
36 remaining items
garrettmknight commentedon Aug 26, 2025
$250 approved for @s77rt
melvin-bot commentedon Aug 27, 2025
@muttmuure Whoops! This issue is 2 days overdue. Let's get this updated quick!
muttmuure commentedon Aug 29, 2025
Offer sent @cosmicvulpes
melvin-bot commentedon Sep 1, 2025
@muttmuure Whoops! This issue is 2 days overdue. Let's get this updated quick!
melvin-bot commentedon Sep 3, 2025
@muttmuure Huh... This is 4 days overdue. Who can take care of this?
melvin-bot commentedon Sep 5, 2025
@muttmuure 6 days overdue. This is scarier than being forced to listen to Vogon poetry!
melvin-bot commentedon Sep 9, 2025
@muttmuure 10 days overdue. I'm getting more depressed than Marvin.
muttmuure commentedon Sep 11, 2025
Paid