diff --git a/src/libs/CardUtils.ts b/src/libs/CardUtils.ts index 3f723e1127bac..a67888365958a 100644 --- a/src/libs/CardUtils.ts +++ b/src/libs/CardUtils.ts @@ -1390,7 +1390,7 @@ function getDisplayableExpensifyCards(cardList: CardList | undefined): Card[] { } const activeCards = filterAllInactiveCards(cardList); - const activeExpensifyCards = Object.values(activeCards).filter((card) => isExpensifyCard(card) && card.cardName !== CONST.COMPANY_CARDS.CARD_NAME.CASH); + const activeExpensifyCards = Object.values(activeCards).filter((card) => isExpensifyCard(card) && !isExpiredCard(card) && card.cardName !== CONST.COMPANY_CARDS.CARD_NAME.CASH); const sortedCards = lodashSortBy(activeExpensifyCards, getAssignedCardSortKey); const seenDomains = new Set(); diff --git a/tests/unit/CardUtilsTest.ts b/tests/unit/CardUtilsTest.ts index 2265dab428794..622ab8c6cdb18 100644 --- a/tests/unit/CardUtilsTest.ts +++ b/tests/unit/CardUtilsTest.ts @@ -2571,6 +2571,47 @@ describe('CardUtils', () => { expect(result).toHaveLength(1); expect(result.at(0)?.cardID).toBe(18468850); // Physical card comes first even if virtual was added first }); + + it('should filter out expired Expensify cards based on validThru', () => { + jest.spyOn(DateUtils, 'getDBTime').mockReturnValue('2026-02-25 00:00:00'); + + const cardList = { + 1: { + accountID: 1, + bank: CONST.EXPENSIFY_CARD.BANK, + cardID: 1, + cardName: 'Expired Expensify Card', + domainName: 'test.com', + fraud: 'none', + lastFourPAN: '1234', + lastScrape: '', + lastUpdated: '', + state: CONST.EXPENSIFY_CARD.STATE.OPEN, + nameValuePairs: { + validThru: '2026-02-24 23:59:59', + }, + }, + 2: { + accountID: 1, + bank: CONST.EXPENSIFY_CARD.BANK, + cardID: 2, + cardName: 'Valid Expensify Card', + domainName: 'test.com', + fraud: 'none', + lastFourPAN: '5678', + lastScrape: '', + lastUpdated: '', + state: CONST.EXPENSIFY_CARD.STATE.OPEN, + nameValuePairs: { + validThru: '2026-02-25 00:00:00', + }, + }, + } as unknown as CardList; + + const result = getDisplayableExpensifyCards(cardList); + expect(result).toHaveLength(1); + expect(result.at(0)?.cardID).toBe(2); + }); }); describe('PersonalCard (isPersonalCard)', () => {