Skip to content

Commit 5870f7c

Browse files
committed
Merge remote-tracking branch 'origin/main' into perf/hoist-transaction-violations
2 parents 44f2114 + ce524a7 commit 5870f7c

213 files changed

Lines changed: 4596 additions & 1119 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Mobile-Expensify

android/app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,8 @@ android {
111111
minSdkVersion rootProject.ext.minSdkVersion
112112
targetSdkVersion rootProject.ext.targetSdkVersion
113113
multiDexEnabled rootProject.ext.multiDexEnabled
114-
versionCode 1009038602
115-
versionName "9.3.86-2"
114+
versionCode 1009038901
115+
versionName "9.3.89-1"
116116
// Supported language variants must be declared here to avoid from being removed during the compilation.
117117
// This also helps us to not include unnecessary language variants in the APK.
118118
resConfigs "en", "es"

config/eslint/eslint.seatbelt.tsv

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,6 @@
123123
"../../src/components/MoneyRequestReportView/MoneyRequestReportActionsList.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 3
124124
"../../src/components/MoneyRequestReportView/MoneyRequestReportActionsList.tsx" "react-hooks/refs" 6
125125
"../../src/components/MoneyRequestReportView/MoneyRequestReportActionsList.tsx" "react-hooks/set-state-in-effect" 3
126-
"../../src/components/MoneyRequestReportView/MoneyRequestReportView.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
127126
"../../src/components/MultiGestureCanvas/index.tsx" "no-restricted-syntax" 1
128127
"../../src/components/MultiGestureCanvas/index.tsx" "react-hooks/preserve-manual-memoization" 1
129128
"../../src/components/MultiGestureCanvas/index.tsx" "react-hooks/refs" 2
@@ -209,7 +208,7 @@
209208
"../../src/hooks/useDialogContainerFocus/index.ts" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
210209
"../../src/hooks/useDomainGroupFilter.ts" "react-hooks/set-state-in-effect" 1
211210
"../../src/hooks/useDragAndDrop/types.ts" "@typescript-eslint/no-deprecated/React.MutableRefObject" 1
212-
"../../src/hooks/useExpenseActions.ts" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 3
211+
"../../src/hooks/useExpenseActions.ts" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 2
213212
"../../src/hooks/useFilesValidation.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 1
214213
"../../src/hooks/useInitial.ts" "react-hooks/refs" 4
215214
"../../src/hooks/useIsBlockedToAddFeed.ts" "react-hooks/set-state-in-effect" 1
@@ -387,20 +386,19 @@
387386
"../../src/libs/actions/ReimbursementAccount/resetNonUSDBankAccount.ts" "no-restricted-syntax" 1
388387
"../../src/libs/actions/ReimbursementAccount/resetUSDBankAccount.ts" "no-restricted-syntax" 1
389388
"../../src/libs/actions/Report/MarkAllMessageAsRead.tsx" "no-restricted-syntax" 1
390-
"../../src/libs/actions/Report/index.ts" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 2
389+
"../../src/libs/actions/Report/index.ts" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
391390
"../../src/libs/actions/Report/index.ts" "@typescript-eslint/no-deprecated/buildNextStepNew" 3
392391
"../../src/libs/actions/Report/index.ts" "@typescript-eslint/no-deprecated/reportAction.originalMessage" 1
393392
"../../src/libs/actions/Report/index.ts" "no-restricted-syntax" 10
394393
"../../src/libs/actions/Report/index.ts" "rulesdir/no-onyx-connect" 4
395394
"../../src/libs/actions/ReportLayout.ts" "no-restricted-syntax" 1
396395
"../../src/libs/actions/ScheduleCall.ts" "no-restricted-syntax" 1
397396
"../../src/libs/actions/Search.ts" "no-restricted-syntax" 1
398-
"../../src/libs/actions/Session/index.ts" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
397+
"../../src/libs/actions/Session/index.ts" "no-restricted-imports" 1
399398
"../../src/libs/actions/Session/index.ts" "no-restricted-syntax" 9
400399
"../../src/libs/actions/Session/index.ts" "rulesdir/no-onyx-connect" 2
401400
"../../src/libs/actions/StatsCounter.ts" "no-restricted-syntax" 2
402401
"../../src/libs/actions/Subscription.ts" "no-restricted-syntax" 1
403-
"../../src/libs/actions/Task.ts" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
404402
"../../src/libs/actions/Task.ts" "no-restricted-syntax" 7
405403
"../../src/libs/actions/TaxRate.ts" "no-restricted-syntax" 1
406404
"../../src/libs/actions/TeachersUnite.ts" "no-restricted-syntax" 1
@@ -466,7 +464,7 @@
466464
"../../src/pages/RoomMembersPage.tsx" "react-hooks/set-state-in-effect" 1
467465
"../../src/pages/ScheduleCall/ScheduleCallPage.tsx" "react-hooks/preserve-manual-memoization" 1
468466
"../../src/pages/Search/SearchAdvancedFiltersPage/SearchFiltersCardPage.tsx" "react-hooks/set-state-in-effect" 1
469-
"../../src/pages/Search/SearchMoneyRequestReportPage.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
467+
"../../src/pages/Search/SearchMoneyRequestReportPage.tsx" "no-restricted-imports" 1
470468
"../../src/pages/Search/SearchPage.tsx" "react-hooks/set-state-in-effect" 1
471469
"../../src/pages/Search/SearchTransactionsChangeReport.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
472470
"../../src/pages/Share/ShareRootPage.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
@@ -475,13 +473,12 @@
475473
"../../src/pages/ValidateLoginPage/index.web.tsx" "react-hooks/set-state-in-effect" 1
476474
"../../src/pages/domain/Groups/PreferredWorkspaceToggle.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 1
477475
"../../src/pages/domain/Saml/SamlLoginSectionContent.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 1
478-
"../../src/pages/inbox/DeleteTransactionNavigateBackHandler.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
476+
"../../src/pages/inbox/DeleteTransactionNavigateBackHandler.tsx" "no-restricted-imports" 1
479477
"../../src/pages/inbox/ReportFetchHandler.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 2
480478
"../../src/pages/inbox/ReportNavigateAwayHandler.tsx" "react-hooks/exhaustive-deps" 1
481479
"../../src/pages/inbox/hooks/useDeferNonEssentials.ts" "no-restricted-imports" 2
482480
"../../src/pages/inbox/hooks/useFlushDeferredWriteOnFocus.ts" "no-restricted-imports" 1
483481
"../../src/pages/inbox/hooks/useReportWasDeleted.ts" "react-hooks/set-state-in-effect" 1
484-
"../../src/pages/inbox/report/ContextMenu/BaseReportActionContextMenu.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
485482
"../../src/pages/inbox/report/ContextMenu/BaseReportActionContextMenu.tsx" "react-hooks/preserve-manual-memoization" 1
486483
"../../src/pages/inbox/report/ContextMenu/BaseReportActionContextMenu.tsx" "react-hooks/refs" 1
487484
"../../src/pages/inbox/report/ContextMenu/PopoverReportActionContextMenu.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 1
@@ -498,7 +495,7 @@
498495
"../../src/pages/inbox/report/ReportActionItemMessageEdit.tsx" "react-hooks/preserve-manual-memoization" 1
499496
"../../src/pages/inbox/report/ReportActionItemMessageEdit.tsx" "react-hooks/refs" 5
500497
"../../src/pages/inbox/report/ReportActionItemMessageEdit.tsx" "react-hooks/set-state-in-effect" 1
501-
"../../src/pages/inbox/report/ReportActionsList.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 4
498+
"../../src/pages/inbox/report/ReportActionsList.tsx" "no-restricted-imports" 1
502499
"../../src/pages/inbox/report/ReportActionsList.tsx" "react-hooks/refs" 5
503500
"../../src/pages/inbox/report/ReportActionsList.tsx" "react-hooks/set-state-in-effect" 3
504501
"../../src/pages/inbox/report/TripSummary.tsx" "rulesdir/no-default-id-values" 1
@@ -627,7 +624,6 @@
627624
"../../src/pages/workspace/companyCards/WorkspaceVerifyWorkAccountPage.tsx" "react-hooks/set-state-in-effect" 1
628625
"../../src/pages/workspace/companyCards/addNew/AddNewCardPage.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 1
629626
"../../src/pages/workspace/companyCards/addNew/PlaidConnectionStep.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
630-
"../../src/pages/workspace/companyCards/assignCard/ConfirmationStep.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
631627
"../../src/pages/workspace/distanceRates/PolicyDistanceRatesPage.tsx" "react-hooks/preserve-manual-memoization" 1
632628
"../../src/pages/workspace/downgrade/WorkspaceDowngradePage.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 1
633629
"../../src/pages/workspace/downgrade/WorkspaceDowngradePage.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 2

cspell.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@
163163
"IHDR",
164164
"INTECOMS",
165165
"IPHONEOS",
166+
"ITIN",
166167
"ITSM",
167168
"Idology",
168169
"Inactives",

docs/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Troubleshooting-business-bank-account-setups.md

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: Troubleshooting business bank account setup
33
description: Fix common errors when adding or verifying a verified business bank account in Expensify.
4-
keywords: [bank account troubleshooting, verified business account, Onfido error, missing test transactions, ACH whitelisting, ID upload issues, missing verification amounts, missing micro deposits]
4+
keywords: [bank account troubleshooting, verified business account, Onfido error, missing test transactions, ACH whitelisting, ID upload issues, missing verification amounts, missing micro deposits, validation failed, test deposits wrong, Fix button missing, Unlock button missing, bank account pending, verification stuck, documentation review]
55
---
66
<div id="expensify-classic" markdown="1">
77

@@ -99,4 +99,46 @@ Yes. Expensify cannot process payments for:
9999

100100
If your business operates in one of these industries, you may not be able to use Expensify for payments.
101101

102+
---
103+
104+
# Troubleshooting Test Transaction Validation
105+
106+
## I entered the correct test transaction amounts but validation failed
107+
108+
If you can see the test transactions in your bank account but the amounts are being rejected:
109+
110+
- **Wait for transactions to fully post.** Pending transactions may display slightly different amounts than the final posted values. Only enter amounts after they have fully posted.
111+
- **Double-check for rounding.** Enter the exact amounts including cents. Even a one-cent difference will cause validation to fail.
112+
- **Verify you have the right transactions.** Look for transactions labeled "Expensify, Inc. Validation" or similar. If you have multiple bank accounts connected, make sure you are not mixing up transactions from different accounts.
113+
114+
If you have confirmed all of the above and validation still fails, contact Concierge for assistance.
115+
116+
## Validation is temporarily locked after multiple failed attempts
117+
118+
Entering incorrect amounts multiple times will temporarily lock the validation process. The lock typically lasts a few hours. After the lock period, retry by navigating to your bank account in **Settings > Account > Payments** and clicking the pending bank account.
119+
120+
If you are unable to validate after the lock period has passed, contact Concierge.
121+
122+
## Test transactions expired or validation window closed
123+
124+
Test transactions and the validation window are active for a limited time. If you did not complete validation before the window expired, contact Concierge to request a new set of test transactions.
125+
126+
---
127+
128+
# Troubleshooting Additional Documentation Review
129+
130+
## Concierge says my account requires additional documentation
131+
132+
If automatic verification cannot be completed, Expensify may request a manual review of your supporting documents. This can happen when:
133+
134+
- Business information does not match public records
135+
- The business is newly formed or has limited public data
136+
- Additional verification is required for compliance reasons
137+
138+
Concierge will send you a message with specific instructions on what to provide. Common documents include a bank statement, business license, articles of incorporation, or EIN confirmation letter.
139+
140+
## How long does the documentation review take?
141+
142+
Reviews are typically completed within **1-3 business days** after all requested documents are submitted. You will receive a message from Concierge when the review is complete. If your review is taking longer than expected, contact Concierge for a status update.
143+
102144
</div>

docs/articles/new-expensify/connect-credit-cards/Assign-Company-Cards.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ Workspace Admins and their Copilots can assign company cards after a company car
1818
If you haven’t set up a feed yet, learn how to set one up:
1919

2020
- [Learn how to set up a direct company card feed connection](/articles/new-expensify/connect-credit-cards/Set-up-a-Direct-Company-Card-Feed-Connection).
21-
- [Learn how to set up a commercial card feed connection](/articles/new-expensify/connect-credit-cards/Set-up-a-Commercial-Card-Feed-Connection).
21+
- [Learn how to set up a commercial card feed connection](/articles/new-expensify/connect-credit-cards/Set-up-a-Commercial-Card-Feed-Connection).
22+
- [Learn how to import company card transactions from a spreadsheet](/articles/new-expensify/connect-credit-cards/Import-Company-Card-Transactions-From-a-Spreadsheet).
2223

2324
## How to assign company cards
2425

docs/articles/new-expensify/connect-credit-cards/Import-Company-Card-Transactions-From-a-Spreadsheet.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ internalScope: Audience is Workspace Admins. Covers how to import, update, and d
77

88
# Import Company Card Transactions From a Spreadsheet
99

10-
If your bank isn't supported by a direct connection, you can still import company card transactions into Expensify using a CSV, TXT, XLX or XLSX file. This lets you bring your own card (BYOC) and manually upload company card transactions when a direct bank connection is unavailable.
10+
If your bank isn't supported by a direct connection, you can still import company card transactions into Expensify using a CSV, TXT, XLS, or XLSX file. This lets you bring your own card (BYOC) and manually upload company card transactions when a direct bank connection is unavailable.
1111

1212
If your bank does support a direct connection, you can connect your account to automatically import transactions. [Learn how to set up a direct company card feed connection](/articles/new-expensify/connect-credit-cards/Set-up-a-Direct-Company-Card-Feed-Connection).
1313

@@ -26,7 +26,7 @@ Only **Workspace Admins** can import transactions for company cards.
2626
3. Click on **Add card**.
2727
- If you already have a company card feed set up, click the feed name to see **Add Card**.
2828
5. Choose **Import transactions from file**.
29-
6. Choose the CSV, TXT, XLX or XLSX file you want to upload.
29+
6. Choose the CSV, TXT, XLS, or XLSX file you want to upload.
3030
7. Enter a name for the card feed.
3131
8. Set your field mappings (e.g., Card Number, Date, Amount, Merchant).
3232
9. Assign cards to users based on the transactions in the file.
@@ -50,7 +50,7 @@ Only **Workspace Admins** can import transactions for company cards.
5050
2. Select the name of the card feed you want to update.
5151
3. Click **Settings**.
5252
4. Choose **Import spreadsheet**.
53-
5. Choose the CSV, TXT, XLX or XLSX file you want to upload.
53+
5. Choose the CSV, TXT, XLS, or XLSX file you want to upload.
5454
6. Review and confirm the field mappings.
5555
7. Click **Import**.
5656

docs/articles/new-expensify/connect-credit-cards/Set-up-a-Commercial-Card-Feed-Connection.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Commercial card feeds are file-based connections managed by your bank that impor
1111

1212
Before you begin, contact your bank to confirm that your card program is eligible for a commercial card feed.
1313

14-
If you're not eligible for a commercial card feed, you can [set up a direct company card feed connection instead](/articles/new-expensify/connect-credit-cards/Set-up-a-Direct-Company-Card-Feed-Connection).
14+
If you're not eligible for a commercial card feed, you can [set up a direct company card feed connection](/articles/new-expensify/connect-credit-cards/Set-up-a-Direct-Company-Card-Feed-Connection) or [learn how to import company card transactions from a spreadsheet](/articles/new-expensify/connect-credit-cards/Import-Company-Card-Transactions-From-a-Spreadsheet).
1515

1616
---
1717

@@ -104,7 +104,7 @@ Expensify will notify you when the feed is connected.
104104

105105
## What can I do if my bank doesn't offer a commercial card feed?
106106

107-
If you're not eligible for a commercial card feed, connect company cards using a direct feed or through Plaid using your online banking credentials. [Learn how to set up a direct company card feed connection](/articles/new-expensify/connect-credit-cards/Set-up-a-Direct-Company-Card-Feed-Connection).
107+
If you're not eligible for a commercial card feed, connect company cards using a direct feed or through Plaid using your online banking credentials. [Learn how to set up a direct company card feed connection](/articles/new-expensify/connect-credit-cards/Set-up-a-Direct-Company-Card-Feed-Connection). You can also [import company card transactions from a spreadsheet](/articles/new-expensify/connect-credit-cards/Import-Company-Card-Transactions-From-a-Spreadsheet).
108108

109109
## Can I connect the same commercial card feed connection across different workspaces?
110110

docs/articles/new-expensify/connect-credit-cards/Set-up-a-Direct-Company-Card-Feed-Connection.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ internalScope: Audience is Workspace Admins. Covers connecting a company card fe
99

1010
Setting up a direct company card feed connection allows you to automatically import card transactions into Expensify.
1111

12-
You can connect company cards using a direct connection with your bank, or through Plaid, depending on your bank and country.
12+
You can connect company cards using a direct connection with your bank, or through Plaid, depending on your bank and country. If your bank isn't supported, you can also [learn how to import company card transactions from a spreadsheet](/articles/new-expensify/connect-credit-cards/Import-Company-Card-Transactions-From-a-Spreadsheet).
1313

1414
---
1515

0 commit comments

Comments
 (0)