Repository navigation
[Due for payment 2026-05-29] Update Your Expensify Cards to Your spend to streamline common points of customer confusion #87743
Description
Background
We currently have a Your Expensify Cards slot, which summarizes a user's remaining spending power and gives them a quick reminder of recent spending.
We started with this specific use case because this data is available via OpenApp. However, this slot is now evolving from a card-only summary into a broader spend-status area. In this issue, we'll prioritize supporting better visibility into reports awaiting approval and reimbursement, as this resolves recurring customer confusion about where to find that information.
Product and design details
Applicability and data model
- This slot is titled
Your spend. - This issue keeps the existing card summary row, tweaks it, and adds two new status rows:
Awaiting approvalRepaid in the last 30 daysRecent transactions * [cardLastFour]
- This slot applies to users with one or more of the following:
- an applicable approval flow (e.g. approvals enabled in at least one workspace)
- an applicable payment/reimbursement flow (e.g. "make or track payments" enabled in at least one worksapce)
- any assigned Expensify Card (could be multiple)
- For the Expensify Card case, we switch the focus to remaining limit, and instead, to recent transactions. This brings the summary in line with modern banking/card apps, which focus on the recent total (not the inverse, which remaining limit).
- For the payment case, this applies whether or not the workspace is reimbursing directly in the app.
- We aggregate approval/payment totals across all relevant workspaces. We do not break them down per workspace. One workspace is the most common case, and even for multi-workspace setups, submitting in exactly one workspace is still the most common pattern.
For clarity:
- if a user has no applicable approval flow, they would just see
Repaid in the last 30 days - if a user has no applicable payment flow, they would just see
Awaiting approval - if a user has both, they would see both rows
- if the user also has an assigned Expensify Card, that row remains in the last slot
- If a user has multiple assigned Expensify Cards, they see one row per assigned Ecard
Row definitions
The underlying search queries for each row are:
-
Awaiting approval
type:expense from:me status:outstanding reimbursable:yes
We'll display the summed monetary total of matching expenses (in bold), not the count. -
Repaid in the last 30 days
type:expense from:me status:paid reimbursable:yesthen thedate:filter should be the last 30 days.
Same here, we'll display the summed monetary total of matching expenses (in bold), not the count. -
Recent transactions * [cardLastFour]
type:expense from:me card:"[cardName]"then thedate:filter should be the last 30 days as well
Same here, we'll display the summed monetary total of matching expenses (in bold), not the count.
The logic for the doughnut is: green progress bar that equals the total spend vs the remaining card limit. If the total spend is currently 100% of the limit, then the doughnut is completely filled and our red "danger" color, not green.
Row order
Rows appear in this order:
Awaiting approvalRepaid in the last 30 daysRecent transactions * [cardLastFour](for each assigned Ecard)
Data loading
- On log-in or app refresh, we'll show loaders when we do not yet have up-to-date approval or reimbursement data.
- We'll only show loaders for row types that apply to the user's use case.
- If a user only has either
Awaiting approvalorRepaid in the last 30 days, we only show one loading row rather than two. - This avoids the slot height expanding when real data is returned.
- We don't show a skeleton loader for the Expensify Card since most customers still use cards from another provider. If data for it exists, it just appears
Product behavior and associated logic
- Clicking
Viewon each status row routes to the corresponding search query on theSpend>Expensespage, not theReportspage. - We intentionally use the
Expensespage to avoid potentially confusing nuances where reports can contain both reimbursable and non-reimbursable expenses. - After data loads, any approval/payment row with no matching data is hidden.
- If both approval/payment rows have no data, but the card row is still applicable, the slot remains visible with just the card row.
- If no rows are applicable at all, the full
Spend overviewslot is hidden.
Examples
- If a user has
$1,500awaiting approval and$1,240recently paid, show both rows. - If a user has no approval-enabled workspaces, only evaluate and potentially show
Repaid in the last 30 days. - If a user has no applicable payment flow, only evaluate and potentially show
Awaiting approval. - If both searches return zero, but the user has an Expensify Card, show only that card row.
- If all row types return no applicable data, hide the slot entirely.
This is part of an internal initiative; it'll be worked on by the Home project team.
Issue Owner
Current Issue Owner: @ZhenjaHorbachMetadata
Metadata
Labels
Type
Projects
- StatusShow more project fieldsDone
- StatusShow more project fieldsDone
Activity
melvin-bot commentedon Apr 13, 2026
Triggered auto assignment to Design team member for new feature review - @shawnborton (
NewFeature)grgia commentedon Apr 21, 2026
@JmillsExpensify what is the difference between these and the approve/pay rows in
For you? When does an admin approve/pay expenses over reports? Is the total amount the same as the total amount for the 4 reports inFor youadded up?23 remaining items
mitarachim commentedon May 21, 2026
Deploy Blocker ##91371 was identified to be related to the PR ##89899 that attempted to fix this issue.
melvin-bot commentedon May 21, 2026
If you are the assigned CME please investigate whether the linked PR caused a regression and leave a comment with the results.
If a regression has occurred and you are the assigned CM follow the instructions here.
If this regression could have been avoided please consider also proposing a recommendation to the PR checklist so that we can avoid it in the future.
[-]Update `Your Expensify Cards` to `Your spend` to streamline common points of customer confusion[/-][+][Due for payment 2026-05-29] Update `Your Expensify Cards` to `Your spend` to streamline common points of customer confusion[/+]melvin-bot commentedon May 22, 2026
Reviewinglabel has been removed, please complete the "BugZero Checklist".melvin-bot commentedon May 22, 2026
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.3.79-4 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue:
If no regressions arise, payment will be issued on 2026-05-29. 🎊
For reference, here are some details about the assignees on this issue:
melvin-bot commentedon May 22, 2026
BugZero Checklist: The PR adding this new feature has been merged! The following checklist (instructions) will need to be completed before the issue can be closed:
JmillsExpensify commentedon May 25, 2026
I've created the regression test. This issue is paid centrally so closing.