Skip to content

[Due for payment 2026-10-07] Expensify card - The Request limit increase option is missing for admin #99392

Closed

Description

@applause-bot

If you haven’t already, check out our contributing guidelines for onboarding. To join our Slack channel, fill out this form.


Version Number: v9.4.60-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: #98505
Email or phone of affected tester (no customers): n/a
Issue reported by: Applause Internal Team
Bug source: Pull Request QA execution
Device used: Mac 26.5.1 Safari/Chrome, iPhone 13 iOS 26.6
App Component: Workspace Settings

Action Performed:

  1. Go to https://staging.new.expensify.com
  2. Sign in with a new Gmail account as a workspace owner
  3. Add a verified business bank account.
  4. Enable Expensify Cards on a workspace and pick that account for settlement.
  5. Issue an Expensify card
  6. Click the (i) next to Remaining limit

Expected Result:

There is an Request limit increase option

Actual Result:

The Request limit increase option is missing for admin

Workaround:

Unknown

Platforms:

  • Android: App
  • Android: mWeb Chrome
  • iOS: App
  • iOS: mWeb Safari
  • iOS: mWeb Chrome
  • Windows: Chrome
  • MacOS: Chrome Safari

Screenshots/Videos

Bug7241856_1787617173497.Recording__2841.mp4

View all open jobs on GitHub

Applause Internal Information
Exported by: Julia Ponikarchuk
Bug ID: 7241856

Issue OwnerCurrent Issue Owner: @mallenexpensify

Activity

  1. added
    BugSomething is broken. Auto assigns a BugZero manager.
    on Aug 25, 2026
  2. applause-bot commented on Aug 25, 2026

    @applause-bot
    Author

    While Applause doesn't embed attachments for this bug, here are the links for quick view:
    https://platform.applause.com/services/links/v1/external/32b51ba2c373b5bc7e49ccd78e539bc45b57fd16f7b00e2511e9a101977d8e7e

  3. MelvinBot commented on Aug 25, 2026

    @MelvinBot
    Contributor

    Issue Analysis

    Root Cause: The "Request limit increase" button is intentionally hidden whenever the Expensify Card settlement bank account is connected via Plaid. In WorkspaceCardsListLabel.tsx:201 the button only renders when !isConnectedWithPlaid. isConnectedWithPlaid (lines 89–95) is true when the settlement account has a plaidAccountID.

    This is working as designed, not a regression. It was added deliberately to fix the opposite complaint in #48943 ("Showing the request a limit increase button, despite the settlement account being set up with Plaid"). For Plaid-connected accounts the remaining limit is derived automatically from the live bank balance (see the remainingLimitDescription copy: "the available cash in your business bank account… can fluctuate on a daily basis"), so there is no manual limit-increase request to make.

    So the key question for this repro: was the verified business bank account added via Plaid? The standard "Add a verified business bank account" flow in NewDot uses Plaid, in which case the missing button is expected and the QA Expected Result is stale — it should be updated to note the button only appears for manually-connected (non-Plaid) settlement accounts.

    Recommended action:

    • If the settlement account was Plaid-connected → close as working-as-intended / update the QA test expectation.
    • If it was connected manually (non-Plaid) and the button is still missing → that would be a genuine bug in the Plaid detection, and this issue should capture how the account was added so it can be reproduced.
    Investigation details
    • The button render condition is !isConnectedWithPlaid && type === REMAINING_LIMIT at line 201.
    • isConnectedWithPlaid looks up the settlement account (settings.paymentBankAccountID) in bankAccountList and returns true if accountData.plaidAccountID (or additionalData.plaidAccountID) is set — lines 89–95.
    • Prior closed issue [Workspace Feeds] Showing the request a limit increase button, despite the settlement account being set up with plaid.  #48943 established the intended behavior: the button must not show for Plaid settlement accounts.
    • Alternative explanation considered — a broken isConnectedWithPlaid computation (e.g. bankAccountList not yet loaded, or ID mismatch) could hide the button for a non-Plaid account too. This can't be ruled out from static code alone; it hinges on how the tester's account was actually connected, which is why the connection method above is the deciding factor.
    • Could not verify at runtime: the repro requires a fully verified business bank account with Expensify Cards enabled and an issued card, which isn't reproducible in a standard test session.

    Possibly related open issues: #94559 (no Concierge response after clicking "Request limit increase") — separate concern, but touches the same button flow.


    Next Steps for Contributor+ team:
    To accept: @MelvinBot implement [this](https://github.com/Expensify/App/blob/1d0d7de38b4faf8ef42df1ed0b192e03209e9e82/src/pages/workspace/expensifyCard/WorkspaceCardsListLabel.tsx#L201) to create a draft PR.
    To refine: @MelvinBot <your feedback>
    To reject: Explain why you are rejecting Melvin's analysis.


    view run

  4. added
    ExternalAdded to denote the issue can be worked on by a contributor
    on Aug 25, 2026
  5. melvin-bot commented on Aug 25, 2026

    @melvin-bot

    Triggered auto assignment to Contributor-plus team member for initial proposal review - @suneox (External)

  6. melvin-bot commented on Aug 25, 2026

    @melvin-bot

    Unable to auto-create job on Upwork. The BZ team member should create it manually for this issue.

  7. j3ffffff commented on Aug 25, 2026

    @j3ffffff

    VERDICT: POST
    ROOT_CAUSE_ONELINER: WorkspaceCardsListLabel.tsx (line 201) hides the "Request limit increase" button when the settlement bank account was connected via Plaid (!isConnectedWithPlaid check), but in practice virtually all verified US business bank accounts are Plaid-connected, so the button never shows for the workspace admin.
    PROPOSAL_TYPE: FIRST
    AUTOPOST_SAFE: YES

  8. Abdukhamid000 commented on Aug 25, 2026

    @Abdukhamid000
    Contributor

    Melvin's verdict looks right — the button hides only when the settlement account carries a plaidAccountID, and the tester was the owner who added it, so this repro is Plaid and working as intended. Two notes.

    The copy it cites as corroboration doesn't support it. There is a single remainingLimitDescription string, rendered unconditionally at WorkspaceCardsListLabel.tsx:199 for every case — a manually-connected account shows the same text, so it can't distinguish the two.

    More useful: isConnectedWithPlaid reads bankAccountList, which is the viewer's accounts. It computes "can I see a Plaid account for this settlement bank", not "is this limit auto-derived":

    const isConnectedWithPlaid = useMemo(() => {
    const bankAccountData = bankAccountList?.[paymentBankAccountID ?? CONST.DEFAULT_NUMBER_ID]?.accountData;
    // TODO: remove the extra check when plaidAccountID storing is aligned in https://github.com/Expensify/App/issues/47944
    // Right after adding a bank account plaidAccountID is stored inside the accountData and not in the additionalData
    return !!bankAccountData?.plaidAccountID || !!bankAccountData?.additionalData?.plaidAccountID;
    }, [bankAccountList, paymentBankAccountID]);

    Per the docblock added in #98505 — the PR this QA run came from — a co-admin "cannot read the account on their own" (Policy.ts:4232). So that lookup returns undefined for them, isConnectedWithPlaid is false, and the button shows for the same Plaid-connected feed where the owner sees nothing.

    Worth deciding whether that's intended before closing, given #98505 shipped the day before specifically to let a co-admin make this request.

  9. melvin-bot commented on Aug 28, 2026

    @melvin-bot

    @suneox Whoops! This issue is 2 days overdue. Let's get this updated quick!

  10. suneox commented on Aug 29, 2026

    @suneox
    Contributor

    I'll set up the test data and take a look at this one soon

  11. 40 remaining items

  12. added
    Awaiting PaymentAuto-added when associated PR is deployed to production
    and removed on Oct 5, 2026
  13. melvin-bot commented on Oct 6, 2026

    @melvin-bot

    Triggered auto assignment to @mallenexpensify (Awaiting Payment)

  14. melvin-bot commented on Oct 6, 2026

    @melvin-bot

    Payment Summary

    Resolving PRs:

    BugZero Checklist (@mallenexpensify)

    • I have confirmed assignees, roles, and Upwork contracts look correct
    • I have paid out Upwork contracts / manual NewDot requests
    • [BugZero Assignee] I have created a GH issue for creating/updating the regression test once above steps have been agreed upon
  15. mallenexpensify commented on Oct 9, 2026

    @mallenexpensify
    Contributor

    Payment Summary

    Contributor+: @suneox due $250 via NewDot

  16. garrettmknight commented on Oct 19, 2026

    @garrettmknight
    Contributor

    $250 approved for @suneox

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Awaiting PaymentAuto-added when associated PR is deployed to productionBugSomething is broken. Auto assigns a BugZero manager.DailyKSv2ExternalAdded to denote the issue can be worked on by a contributor

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions