Skip to content

Commit ecf1668

Browse files
committed
Merge branch 'main' into fix-remove-go-to-rooms-workpsace-menu-items
2 parents c7fe979 + dfe0420 commit ecf1668

116 files changed

Lines changed: 3988 additions & 686 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.
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: Generate static translations
2+
3+
on:
4+
pull_request:
5+
types: [opened, synchronize]
6+
7+
jobs:
8+
# We always run dry-run the script to verify that it still works.
9+
# The generateTranslations script runs with ts-node, which can't handle Flow
10+
# (the specialized JS that React Native is written in).
11+
# Therefore, adding an import in the wrong place could break the script, even if you didn't modify the script.
12+
dryRun:
13+
runs-on: ubuntu-latest
14+
steps:
15+
# v4
16+
- name: Checkout
17+
uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
18+
19+
- name: Setup Node
20+
uses: ./.github/actions/composite/setupNode
21+
22+
- name: Run generateTranslations dry run
23+
run: npx ts-node ./scripts/generateTranslations.ts --dry-run
24+
25+
- name: Explain failure
26+
if: failure()
27+
run: |
28+
echo '::error:: 😦 Something you did broke scripts/generateTranslations.ts. Most likely, this means you added an import that caused react-native to be directly or indirectly imported into the script.'
29+
exit 1

Mobile-Expensify

android/app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,8 @@ android {
114114
minSdkVersion rootProject.ext.minSdkVersion
115115
targetSdkVersion rootProject.ext.targetSdkVersion
116116
multiDexEnabled rootProject.ext.multiDexEnabled
117-
versionCode 1009016900
118-
versionName "9.1.69-0"
117+
versionCode 1009017001
118+
versionName "9.1.70-1"
119119
// Supported language variants must be declared here to avoid from being removed during the compilation.
120120
// This also helps us to not include unnecessary language variants in the APK.
121121
resConfigs "en", "es"

cspell.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -680,7 +680,8 @@
680680
"zoneinfo",
681681
"zxcv",
682682
"zxldvw",
683-
"مثال"
683+
"مثال",
684+
"pnrs"
684685
],
685686
"ignorePaths": [
686687
"src/languages/de.ts",
Lines changed: 81 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,106 +1,120 @@
11
---
2-
title: Reimburse Reports
3-
description: Learn how to reimburse reports in Expensify using direct deposit, global reimbursement, third-party payment providers, or manual tracking methods.
4-
keywords: [Expensify Classic, reimburse reports, direct deposit, USD, ACH, global reimbursement]
2+
title: How to Reimburse Reports in Expensify
3+
description: Learn how to reimburse employee reports in Expensify using direct deposit, global transfers, Venmo, ABA files, or manual methods.
4+
keywords: [Expensify Classic, reimburse reports, direct deposit, ACH, global reimbursement, Venmo, ABA file]
55
---
66
<div id="expensify-classic" markdown="1">
77

8-
Once a report is submitted and approved, you can reimburse the expenses directly via direct deposit or global reimbursement, use an indirect reimbursement method (such as a third-party payment processor), or mark the report as reimbursed outside of Expensify (if your organization bundles reimbursements in payroll, for instance).
8+
You can reimburse submitted and approved reports in Expensify using direct deposit (USD or international), third-party payment tools like Venmo, or manual methods such as payroll tracking or ABA batch files.
99

10-
---
10+
# Reimburse via Direct Deposit (USD)
1111

12-
# Direct Deposit - USD
12+
## Setup requirements
13+
- **Reimburser** must [connect a verified business bank account](https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Connect-US-Business-Bank-Account).
14+
- **Recipient** must [connect a personal bank account](https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Connect-Personal-US-Bank-Account).
1315

14-
Before a report can be reimbursed via direct deposit:
15-
- The reimburser must [connect a verified business bank account](https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Connect-US-Business-Bank-Account)
16-
- The recipient must [connect a personal bank account](https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Connect-Personal-US-Bank-Account)
16+
> Only verified business accounts can issue reimbursement payments. Deposit-only accounts can receive funds but cannot initiate them.
1717
18-
To reimburse a report via direct deposit (USD):
19-
1. Open the report.
20-
2. Click the **Reimburse** button and select **Via Direct Deposit**.
21-
3. Confirm that the correct bank account is listed in the dropdown menu.
22-
4. Click **Accept Terms & Pay**.
18+
## Steps
19+
1. Open the approved report.
20+
2. Click **Reimburse** > **Via Direct Deposit**.
21+
3. Confirm the bank account.
22+
4. Click **Accept Terms & Pay**.
2323

24-
If the reimbursement is less than $100, it will typically be deposited into the employee's bank account immediately. If the reimbursement is more than $100, the deposit will be processed within one to five business days.
24+
## Deposit timing
2525

26-
---
26+
### Rapid Reimbursement
27+
- Available for USD ACH reimbursements from verified U.S. business bank accounts
28+
- Applies to reports under $100
29+
- Funds are usually deposited the same day or next business day
30+
- Works with any U.S. bank account type (including deposit-only)
31+
- Maximum daily limit: $10,000 per business account
2732

28-
# Direct Deposit - Global Reimbursement
29-
Before a report can be reimbursed via global reimbursement:
30-
- A workspace admin must [set up global reimbursements](https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Enable-Global-Reimbursements)
31-
- Employees must [connect a deposit account](https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Connect-Personal-US-Bank-Account)
33+
> **Tip:** Concierge will add a comment to the report showing the estimated reimbursement date once payment is initiated.
3234
33-
To reimburse a report via global reimbursement:
34-
1. Open the report.
35-
2. Click the **Reimburse** button and select **Via Direct Deposit**.
36-
3. Confirm that the correct bank account is listed in the dropdown menu.
37-
4. Click **Accept Terms & Pay**.
35+
### Standard Reimbursement
36+
- Applies to reports over $100 or if the daily $10,000 limit is exceeded
37+
- Deposits typically take 1–5 business days
3838

39-
The reimbursement should be processed within five business days. If the payment hasn't been processed within that timeframe, reach out to Expensify Support for assistance.
39+
> **Tip:** The Concierge comment on the report includes expected deposit timing and payment details.
4040
41-
---
41+
# Reimburse via Global Reimbursement
4242

43-
# Indirect Reimbursement
44-
If you are reimbursing reports outside of Expensify via paper check or payroll, you’ll want to manually mark the report as paid to track the payment history.
43+
For international bank transfers.
4544

46-
To label a report as reimbursed after sending a payment outside of Expensify:
47-
1. Open the report
48-
2. Click **Reimburse**.
49-
3. Select **I’ll do it manually - just mark it as reimbursed**. This changes the report status to **Reimbursed**.
45+
## Setup requirements
46+
- A Workspace Admin must [enable global reimbursements](https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Enable-Global-Reimbursements).
47+
- Recipients must [connect a deposit account](https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Connect-Personal-US-Bank-Account).
5048

51-
Once the recipient has received the payment, the submitter can return to the report and click **Confirm**. This will change the report status to **`Reimbursed: CONFIRMED`**.
49+
> Only verified business accounts can send global reimbursements.
5250
53-
## Reimburse a Report via a Third-Party Payment Provider
51+
## Steps
52+
1. Open the approved report.
53+
2. Click **Reimburse** > **Via Direct Deposit**.
54+
3. Confirm the recipient’s bank account.
55+
4. Click **Accept Terms & Pay**.
5456

55-
If both the reimburser and the payment recipient have Venmo accounts, you can [connect them directly to Expensify](https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/Third-Party-Payments) to send and receive reimbursements.
57+
Funds are typically deposited within five business days. If delayed, reach out to Concierge.
5658

57-
## Reimburse a Report via ABA Batch File
59+
> **Tip:** Concierge adds a comment with the estimated deposit date once payment is triggered.
5860
59-
Workspace Admins can reimburse AUD expense reports by downloading an ABA file containing the accounts needing payment and uploading the file to the bank. This can be done for a single report or for a batch of payments.
61+
# Reimburse via Manual or Third-Party Methods
6062

61-
More information on reimbursing reports via ABA batch file can be found **[here](https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/payments/Reimburse-Australian-Reports)**.
63+
## Manual reimbursement (e.g., payroll or check)
64+
To mark a report as reimbursed manually:
6265

63-
---
64-
65-
# FAQ
66+
1. Open the report.
67+
2. Click **Reimburse** > **I’ll do it manually – just mark it as reimbursed**.
6668

67-
## Is there a maximum report total?
69+
The report status will update to **Reimbursed**.
6870

69-
Expensify cannot process a reimbursement for any single report over $20,000. If you have a report with expenses exceeding $20,000, we recommend splitting the expenses into multiple reports.
71+
Once the employee confirms receipt:
72+
- Click **Confirm** to update the status to **Reimbursed: CONFIRMED**.
7073

71-
## Why is my business bank account locked?
74+
## Reimburse via Venmo
75+
If both parties have Venmo accounts, [connect them to Expensify](https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/Third-Party-Payments) to send payments directly.
7276

73-
When you reimburse a report, you authorize Expensify to withdraw the funds from your account and send them to the person requesting reimbursement. If your bank rejects Expensify’s withdrawal request, your verified bank account is locked until the issue is resolved.
77+
## Reimburse via ABA batch file (Australia)
78+
Admins can generate an ABA file to reimburse AUD reports via bank upload. This supports one or multiple reports.
7479

75-
Withdrawal requests can be rejected if the bank account has not been enabled for direct debit or due to insufficient funds. If you need to enable direct debits from your verified bank account, your bank will require the following details:
76-
- The ACH CompanyIDs: 1270239450 and 4270239450
77-
- The ACH Originator Name: Expensify
80+
[Learn more about ABA reimbursements](https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/payments/Reimburse-Australian-Reports)
7881

79-
Once resolved, you can request to unlock the bank account by completing the following steps:
80-
1. Hover over **Settings**, then click **Account**.
81-
2. Click the **Payments** tab.
82-
3. Click **Bank Accounts**.
83-
4. Next to the bank account, click **Fix**.
82+
# FAQ
8483

85-
Our support team will review and process the request within 4-5 business days.
84+
## Is there a maximum reimbursement amount per report?
85+
Yes. Expensify cannot process reimbursements over $20,000. To reimburse a larger amount, split the expenses across multiple reports.
8686

87-
## Who can reimburse reports?
87+
## Why is my business bank account locked?
88+
Your account may be locked due to a failed withdrawal (e.g., insufficient funds or direct debit not enabled).
8889

89-
Only a Workspace Admin who has added a verified business bank account connected to their Expensify account can reimburse employee reports.
90+
### To fix it:
91+
- Make sure your bank authorizes direct debits:
92+
- **ACH Company IDs:** 1270239450 and 4270239450
93+
- **ACH Originator Name:** Expensify
94+
- Then:
95+
1. Go to **Settings > Account > Wallet**
96+
2. Click **Fix** next to the locked account
97+
3. Concierge will review and update the account within 4–5 business days
9098

91-
## How can I add another employee as a reimburser?
99+
## Who can reimburse reports?
100+
Only Workspace Admins with a verified business bank account can reimburse reports.
92101

93-
You can give another employee reimbursement access by doing the following:
94-
1. If they're not already a workspace admin, add them as one under **Settings > Workspaces > [Workspace Name] > Members**.
95-
2. Share the business bank account with them by heading to **Settings > Account > Payments** and clicking **Share**.
96-
3. The new reimburser will need to validate the shared bank connection by entering the test deposits that Expensify sends to the bank account.
97-
4. Once validated, the employee will have reimbursement access.
98-
5. If you want to set them as the default reimburser on a workspace, you can do that under **Settings > Workspaces > [Workspace Name] > Workflows > Make or track payments**.
102+
## How do I add another employee as a reimburser?
103+
1. Add them as a Workspace Admin:
104+
**Settings > Workspaces > [Workspace Name] > Members**
105+
2. Share the business bank account:
106+
**Settings > Account > Wallet** > Click **Share**
107+
3. The employee enters test deposits to verify access.
108+
4. Once verified, they can reimburse reports.
109+
5. To set them as the default reimburser:
110+
**Settings > Workspaces > [Workspace Name] > Workflows > Make or track payments**
99111

100-
## Why can’t I trigger direct ACH reimbursements in bulk?
112+
## Can I reimburse reports in bulk?
113+
Not directly. However, you can set a threshold to automate reimbursements.
101114

102-
Expensify does not offer bulk reimbursement, but you can automate reimbursements by setting a threshold amount under **Settings > Workspaces > [Workspace Name] > Workflows > Make or track payments**.
115+
To configure this:
116+
**Settings > Workspaces > [Workspace Name] > Workflows > Make or track payments**
103117

104-
After setting a threshold amount, an employee's reimbursement is triggered once a report is **Final Approved**. If the total of a report is more than the threshold amount, the reimbursement will need to be manually triggered.
118+
Reports that are Final Approved and under the threshold will auto-reimburse. Reports over the threshold require manual reimbursement.
105119

106120
</div>

ios/NewExpensify/Info.plist

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<key>CFBundlePackageType</key>
2424
<string>APPL</string>
2525
<key>CFBundleShortVersionString</key>
26-
<string>9.1.69</string>
26+
<string>9.1.70</string>
2727
<key>CFBundleSignature</key>
2828
<string>????</string>
2929
<key>CFBundleURLTypes</key>
@@ -44,7 +44,7 @@
4444
</dict>
4545
</array>
4646
<key>CFBundleVersion</key>
47-
<string>9.1.69.0</string>
47+
<string>9.1.70.1</string>
4848
<key>FullStory</key>
4949
<dict>
5050
<key>OrgId</key>

ios/NotificationServiceExtension/Info.plist

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
<key>CFBundleName</key>
1212
<string>$(PRODUCT_NAME)</string>
1313
<key>CFBundleShortVersionString</key>
14-
<string>9.1.69</string>
14+
<string>9.1.70</string>
1515
<key>CFBundleVersion</key>
16-
<string>9.1.69.0</string>
16+
<string>9.1.70.1</string>
1717
<key>NSExtension</key>
1818
<dict>
1919
<key>NSExtensionPointIdentifier</key>

ios/ShareViewController/Info.plist

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
<key>CFBundleName</key>
1212
<string>$(PRODUCT_NAME)</string>
1313
<key>CFBundleShortVersionString</key>
14-
<string>9.1.69</string>
14+
<string>9.1.70</string>
1515
<key>CFBundleVersion</key>
16-
<string>9.1.69.0</string>
16+
<string>9.1.70.1</string>
1717
<key>NSExtension</key>
1818
<dict>
1919
<key>NSExtensionAttributes</key>

package-lock.json

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "new.expensify",
3-
"version": "9.1.69-0",
3+
"version": "9.1.70-1",
44
"author": "Expensify, Inc.",
55
"homepage": "https://new.expensify.com",
66
"description": "New Expensify is the next generation of Expensify: a reimagination of payments based atop a foundation of chat.",
@@ -45,7 +45,7 @@
4545
"test": "TZ=utc NODE_OPTIONS=--experimental-vm-modules jest",
4646
"perf-test": "NODE_OPTIONS=--experimental-vm-modules npx reassure",
4747
"typecheck": "NODE_OPTIONS=--max_old_space_size=8192 tsc",
48-
"lint": "NODE_OPTIONS=--max_old_space_size=8192 eslint . --max-warnings=0 --cache --cache-location=node_modules/.cache/eslint",
48+
"lint": "NODE_OPTIONS=--max_old_space_size=8192 eslint . --max-warnings=332 --cache --cache-location=node_modules/.cache/eslint",
4949
"lint-changed": "NODE_OPTIONS=--max_old_space_size=8192 ./scripts/lintChanged.sh",
5050
"lint-watch": "npx eslint-watch --watch --changed",
5151
"shellcheck": "./scripts/shellCheck.sh",
@@ -304,7 +304,7 @@
304304
"electron-builder": "25.0.0",
305305
"eslint": "^8.57.0",
306306
"eslint-config-airbnb-typescript": "^18.0.0",
307-
"eslint-config-expensify": "2.0.78",
307+
"eslint-config-expensify": "2.0.82",
308308
"eslint-config-prettier": "^9.1.0",
309309
"eslint-plugin-deprecation": "^3.0.0",
310310
"eslint-plugin-jest": "^28.6.0",

0 commit comments

Comments
 (0)