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
[Due for payment 2025-11-06] [$250] Wallet - Blank popup on selecting Transfer balance option when BA has Business bank account #71437
Version Number: v9.2.19-0 Reproducible in staging?: Yes Reproducible in production?: Yes If this was caught during regression testing, add the test name, ID and link from TestRail: Exploratory Email or phone of affected tester (no customers):kiatest.78+ck92725@gmail.com Issue reported by: Applause Internal Team Device used: Windows 11/Chrome App Component: User Settings
Action Performed:
Precondition: User logged in with gmail account & has created new workspace
Navigate to staging.new.expensify.com
Navigate to WS settings >> Workflows >> Make & track payments
Add VBA (Regions bank) going through plaid flow
Navigate to Accounts >> Wallet >> click Enable wallet
Go through the enable wallet flow
Tap on Transfer balance option
Observe blank popup displayed
Expected Result:
Transfer balance page RHP (or if popup appears, it should display relevant info) should be displayed when wallet has added business bank account
Actual Result:
Blank popup on selecting Transfer balance option when BA has only Business bank account. Issue happens when wallet has only business bank account
Note: If bank account has both Personal BA & Business BA, transfer balance RHP opens as expected on selecting transfer balance option.
Please re-state the problem that we are trying to solve in this issue.
Blank popup on selecting Transfer balance option when BA has Business bank account
What is the root cause of that problem?
BaseKYCWall checks if you had a valid personal bank account by hasExpensifyPaymentMethodhere to display the add payment method menu if you don't. But since the linked account is a business one, the AddPaymentMethodMenu shows nothing because all the conditions here fails.
However the problem here is not about the AddPaymentMethodMenu shows nothing but that the add bank account step in enable wallet flow is mistakenly skipped because it incorrectly assumes that user already has a valid personal bank account even though he only has a business account.
Taking a look at the condition to render initial step in EnablePaymentsPage above, we incorrectly assume that if bankAccountList is not empty, the initial step will be ADDITIONAL_DETAILS (personal info step) => the add bank account step is skipped. But bankAccountList can have accounts of either BUSINESS or PERSONAL type. To enable the wallet, we must have a PERSONAL one. If you only have a business bank account, you still need to go through the add bank account step in enable wallet flow.
What changes do you think we should make in order to solve the problem?
Please re-state the problem that we are trying to solve in this issue.
The Wallet › Transfer balance entry point renders a blank right-hand panel on web when a workspace has enabled the business wallet flow but the user only linked a business bank account. Transfer should still be possible for business-only wallets, so the RN/web page must render their balance and payout options instead of blocking them behind an empty KYC wall.
What is the root cause of that problem?
The helper that decides whether a user has an eligible payout method, hasExpensifyPaymentMethod, only treated personal bank accounts as valid
As a result, both the Wallet page and the stand-alone transfer view bailed out early, leaving users with an empty screen.
What changes do you think we should make in order to solve the problem?
We can allow consumers of the helper method hasExpensifyPaymentMethod to opt into business-bank-account eligibility when they explicitly need to support that flow and pass the new flag from the transfer UI and its KYC gate.
// src/components/KYCWall/BaseKYCWall.tsxconstshouldIncludeBusinessBankAccount=currentSource===CONST.KYC_WALL_SOURCE.TRANSFER_BALANCE;if((isExpenseReport&&reimbursementAccount?.achData?.state!==CONST.BANK_ACCOUNT.STATE.OPEN)||(!isExpenseReport&&bankAccountList!==null&&!hasExpensifyPaymentMethod(paymentCardList,bankAccountList,shouldIncludeDebitCard,shouldIncludeBusinessBankAccount))){Log.info('[KYC Wallet] User does not have valid payment method');
...
}
Together, these changes let the transfer flow short-circuit in favour of business banking whenever the source is the wallet transfer entry point while keeping existing behaviour intact for the other KYC wall use cases.
What specific scenarios should we cover in automated tests to prevent reintroducing this issue in the future?
Unit test for hasExpensifyPaymentMethod that exercises personal-only, debit-only, and business-only input combinations when the business flag is on or off.
changed the title [-]Wallet - Blank popup on selecting Transfer balance option when BA has Business bank account[/-][+][$250] Wallet - Blank popup on selecting Transfer balance option when BA has Business bank account[/+]on Sep 29, 2025
[Contributor] If the regression was CRITICAL (e.g. interrupts a core flow) A discussion in #expensify-open-source has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner.
Link to discussion: N/A.
[Contributor] If it was decided to create a regression test for the bug, please propose the regression test steps using the template below to ensure the same bug will not reach production again.
[BugZero Assignee] Create a GH issue for creating/updating the regression test once above steps have been agreed upon.
we can consider to increase the compensation. I think $375 makes sense as they seem not too complicated.
@youssef-lr are you cool with the above? I appreciate the additional work being done, especially if it keeps us from having a separate bug we'd need to fix later. The only reason to possibly not increase the rate would be if the additional work was minuscule or if it was intended to be included from what's outlined in the OP.
Yeah I think as per our instructions for additional fixes, we can add $75 to the original price.
he standard payout for a small improvement on top of the original fix is 25% (rounded up to $75 if it’s a $250 job) and the submitter of the first proposal should include the later improvement in their PR.
Activity
melvin-bot commentedon Sep 28, 2025
Triggered auto assignment to @lschurr (
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.gijoe0295 commentedon Sep 28, 2025
Proposal
Please re-state the problem that we are trying to solve in this issue.
Blank popup on selecting Transfer balance option when BA has Business bank account
What is the root cause of that problem?
BaseKYCWallchecks if you had a valid personal bank account byhasExpensifyPaymentMethodhere to display the add payment method menu if you don't. But since the linked account is a business one, theAddPaymentMethodMenushows nothing because all the conditions here fails.However the problem here is not about the
AddPaymentMethodMenushows nothing but that the add bank account step in enable wallet flow is mistakenly skipped because it incorrectly assumes that user already has a valid personal bank account even though he only has a business account.App/src/pages/EnablePayments/EnablePayments.tsx
Line 56 in b624dc2
Taking a look at the condition to render initial step in
EnablePaymentsPageabove, we incorrectly assume that ifbankAccountListis not empty, the initial step will beADDITIONAL_DETAILS(personal info step) => the add bank account step is skipped. ButbankAccountListcan have accounts of eitherBUSINESSorPERSONALtype. To enable the wallet, we must have aPERSONALone. If you only have a business bank account, you still need to go through the add bank account step in enable wallet flow.What changes do you think we should make in order to solve the problem?
App/src/pages/EnablePayments/EnablePayments.tsx
Line 56 in b624dc2
Modify this condition to check if user actually has a valid personal bank account using
hasExpensifyPaymentMethod.So it would become:
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
ShridharGoel commentedon Sep 29, 2025
Proposal
Please re-state the problem that we are trying to solve in this issue.
The Wallet › Transfer balance entry point renders a blank right-hand panel on web when a workspace has enabled the business wallet flow but the user only linked a business bank account. Transfer should still be possible for business-only wallets, so the RN/web page must render their balance and payout options instead of blocking them behind an empty KYC wall.
What is the root cause of that problem?
The helper that decides whether a user has an eligible payout method,
hasExpensifyPaymentMethod, only treated personal bank accounts as validApp/src/libs/PaymentUtils.ts
Lines 29 to 41 in b315370
Because the KYC wall’s transfer-balance gate reuses that helper, it still rejected business-only customers even after the wallet had been upgraded
App/src/components/KYCWall/BaseKYCWall.tsx
Lines 193 to 225 in b315370
As a result, both the Wallet page and the stand-alone transfer view bailed out early, leaving users with an empty screen.
What changes do you think we should make in order to solve the problem?
We can allow consumers of the helper method
hasExpensifyPaymentMethodto opt into business-bank-account eligibility when they explicitly need to support that flow and pass the new flag from the transfer UI and its KYC gate.Screen.Recording.2025-09-29.at.11.25.45.AM.mov
Together, these changes let the transfer flow short-circuit in favour of business banking whenever the source is the wallet transfer entry point while keeping existing behaviour intact for the other KYC wall use cases.
What specific scenarios should we cover in automated tests to prevent reintroducing this issue in the future?
Unit test for
hasExpensifyPaymentMethodthat exercises personal-only, debit-only, and business-only input combinations when the business flag is on or off.[-]Wallet - Blank popup on selecting Transfer balance option when BA has Business bank account[/-][+][$250] Wallet - Blank popup on selecting Transfer balance option when BA has Business bank account[/+]melvin-bot commentedon Sep 29, 2025
Job added to Upwork: https://www.upwork.com/jobs/~021972730652326576464
melvin-bot commentedon Sep 29, 2025
Triggered auto assignment to Contributor-plus team member for initial proposal review - @ahmedGaber93 (
External)ShridharGoel commentedon Oct 5, 2025
Do we have any updates on this?
41 remaining items
lschurr commentedon Nov 5, 2025
@ahmedGaber93 could you post the checklist here?
gijoe0295 commentedon Nov 5, 2025
@lschurr @joekaufmanexpensify I'm being paid via NewDot now. Given the increased scope (#71437 (comment) and #71437 (comment)), we can consider to increase the compensation. I think $375 makes sense as they seem not too complicated.
cc @ahmedGaber93
ahmedGaber93 commentedon Nov 9, 2025
BugZero Checklist:
[Contributor] The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake.
Link to comment: https://github.com/Expensify/App/pull/42589/files#r2508150994
[Contributor] If the regression was CRITICAL (e.g. interrupts a core flow) A discussion in #expensify-open-source has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner.
Link to discussion: N/A.
[Contributor] If it was decided to create a regression test for the bug, please propose the regression test steps using the template below to ensure the same bug will not reach production again.
[BugZero Assignee] Create a GH issue for creating/updating the regression test once above steps have been agreed upon.
Link to issue: https://github.com/Expensify/Expensify/issues/567902
Regression Test Proposal
Precondition:
Test:
Do we agree 👍 or 👎
ahmedGaber93 commentedon Nov 9, 2025
@lschurr The checklist have been completed.
mallenexpensify commentedon Nov 10, 2025
@youssef-lr are you cool with the above? I appreciate the additional work being done, especially if it keeps us from having a separate bug we'd need to fix later. The only reason to possibly not increase the rate would be if the additional work was minuscule or if it was intended to be included from what's outlined in the OP.
lschurr commentedon Nov 12, 2025
@youssef-lr are you able to confirm here?
youssef-lr commentedon Nov 12, 2025
Yeah I think as per our instructions for additional fixes, we can add $75 to the original price.
lschurr commentedon Nov 13, 2025
Payment Summary
Contributor: @gijoe0295 due $325 via NewDot
Contributor+: @ahmedGaber93 due $325 via NewDot
trjExpensify commentedon Nov 17, 2025
approved $325 for @ahmedGaber93.
JmillsExpensify commentedon Nov 26, 2025
$325 approved for @gijoe0295