Skip to content

Commit

Permalink
Merge branch 'main' into NewChatPage_list_refactor_2
Browse files Browse the repository at this point in the history
  • Loading branch information
lukemorawski committed Apr 15, 2024
2 parents e5a73de + 3275bfd commit c00bc93
Show file tree
Hide file tree
Showing 156 changed files with 3,755 additions and 1,442 deletions.
4 changes: 4 additions & 0 deletions .github/actions/javascript/awaitStagingDeploys/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -12738,6 +12738,10 @@ function promiseWhile(condition, action) {
else {
const actionResult = action?.();
console.info('[promiseWhile] promiseWhile() actionResult', actionResult);
if (!actionResult) {
resolve();
return;
}
Promise.resolve(actionResult).then(loop).catch(reject);
}
};
Expand Down
6 changes: 6 additions & 0 deletions .github/libs/promiseWhile.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,12 @@ function promiseWhile(condition: () => boolean, action: (() => Promise<void>) |
} else {
const actionResult = action?.();
console.info('[promiseWhile] promiseWhile() actionResult', actionResult);

if (!actionResult) {
resolve();
return;
}

Promise.resolve(actionResult).then(loop).catch(reject);
}
};
Expand Down
4 changes: 2 additions & 2 deletions __mocks__/react-native-onyx.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

/* eslint-disable rulesdir/prefer-onyx-connect-in-libs */
import type {ConnectOptions, OnyxKey} from 'react-native-onyx';
import Onyx, {withOnyx} from 'react-native-onyx';
import Onyx, {useOnyx, withOnyx} from 'react-native-onyx';

let connectCallbackDelay = 0;
function addDelayToConnectCallback(delay: number) {
Expand Down Expand Up @@ -40,4 +40,4 @@ const reactNativeOnyxMock: ReactNativeOnyxMock = {
};

export default reactNativeOnyxMock;
export {withOnyx};
export {withOnyx, useOnyx};
4 changes: 2 additions & 2 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -98,8 +98,8 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
multiDexEnabled rootProject.ext.multiDexEnabled
versionCode 1001046204
versionName "1.4.62-4"
versionCode 1001046206
versionName "1.4.62-6"
// Supported language variants must be declared here to avoid from being removed during the compilation.
// This also helps us to not include unnecessary language variants in the APK.
resConfigs "en", "es"
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
---
title: Deposit Accounts - USD
description: How to add a deposit account to receive payments for yourself or your business (US)
---
# Overview

There are two types of deposit-only accounts:

1. If you're an employee seeking reimbursement for expenses you’ve incurred, you’ll add a **Personal deposit-only bank account**.
2. If you're a vendor seeking payment for goods or services, you’ll add a **Business deposit-only account**.

# How to connect a personal deposit-only bank account

**Connect a personal deposit-only bank account if you are:**

- An employee based in the US who gets reimbursed by their employer
- An employee based in Australia who gets reimbursed by their company via batch payments
- An international (non-US) employee whose US-based employers send international reimbursements

**To establish the connection to a personal bank account, follow these steps:**

1. Navigate to your **Settings > Account > Payments** and click the **Add Deposit-Only Bank Account** button.
2. Click **Log into your bank** button and click **Continue** on the Plaid connection pop-up window.
3. Search for your bank account in the list of banks and follow the prompts to sign-in to your bank account.
4. Enter your bank login credentials when prompted.
- If your bank doesn't appear, click the 'x' in the upper right corner of the Plaid pop-up window and click **Connect Manually**.
- Enter your account information, then click **Save & Continue**.

You should be all set! You’ll receive reimbursement for your expense reports directly to this bank account.

# How to connect a business deposit-only bank account

**Connect a business deposit-only bank account if you are:**

- A US-based vendor who wants to be paid directly for bills sent to customers/clients
- A US-based vendor who wants to pay invoices directly via Expensify

**To establish the connection to a business bank account, follow these steps:**

1. Navigate to your **Settings > Account > Payments and click the Add Deposit-Only Bank Account** button.
2. Click **Log into your bank** button and click **Continue** on the Plaid connection pop-up window.
3. Search for your bank account in the list of banks and follow the prompts to sign-in to your bank account.
4. Enter your bank login credentials when prompted.
- If your bank doesn't appear, click the 'x' in the upper right corner of the Plaid pop-up window and click **Connect Manually**.
- Enter your account information, then click **Save & Continue**.
5. If you see the option to “Switch to Business” after entering the account owner information, click that link.
6. Enter your Company Name and FEIN or TIN information.
7. Enter your company’s website formatted as https://www.domain.com.

You should be all set! The bank account will display as a deposit-only business account, and you’ll be paid directly for any invoices you submit for payment.

# How to delete a deposit-only bank account

**To delete a deposit-only bank account, do the following:**

1. Navigate to **Settings > Account > Payments > Bank Accounts**
2. Click the **Delete** next to the bank account you want to remove

{% include faq-begin.md %}

## **What happens if my bank requires an additional security check before adding it to a third-party?**

If your bank account has 2FA enabled or another security step, you should be prompted to complete this when adding the account. If not, and you encounter an error, you can always select the option to “Connect Manually”. Either way, please double check that you are entering the correct bank account details to ensure successful payments.

## **What if I also want to pay employees with my business bank account?**

If you’ve added a business deposit-only account and also wish to also pay employees, vendors, or utilize the Expensify Card with this bank account, select “Verify” on the listed bank account. This will take you through the additional verification steps to use this account to issue payments.

## **I connected my deposit-only bank account – Why haven’t I received my reimbursement?**

There are a few reasons a reimbursement may be unsuccessful. The first step is to review the estimated deposit date on the report. If it’s after that date and you still haven’t seen the funds, it could have been unsuccessful because:
- The incorrect account was added. If you believe you may have entered the wrong account, please reach out to Concierge and provide the Report ID for the missing reimbursement.
- Your account wasn’t set up for Direct Deposit/ACH. You may want to contact your bank to confirm.

If you aren’t sure, please reach out to Concierge and we can assist!

{% include faq-end.md %}
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
---
title: International Reimbursements
description: International Reimbursements
---
# Overview

If your company’s business bank account is in the US, Canada, the UK, Europe, or Australia, you now have the option to send direct reimbursements to nearly any country across the globe!
The process to enable global reimbursements is dependent on the currency of your reimbursement bank account, so be sure to review the corresponding instructions below.

# How to request international reimbursements

## The reimbursement account is in USD

If your reimbursement bank account is in USD, the first step is connecting the bank account to Expensify.
The individual who plans on sending reimbursements internationally should head to **Settings > Account > Payments > Add Verified Bank Account**. From there, you will provide company details, input personal information, and upload a copy of your ID.

Once the USD bank account is verified (or if you already had a USD business bank account connected), click the support icon in your Expensify account to inform your Setup Specialist, Account Manager, or Concierge that you’d like to enable international reimbursements. From there, Expensify will ask you to confirm the currencies of the reimbursement and employee bank accounts.

Our team will assess your account, and if you meet the criteria, international reimbursements will be enabled.

## The reimbursement account is in AUD, CAD, GBP, EUR

To request international reimbursements, contact Expensify Support to make that request.

You can do this by clicking on the support icon and informing your Setup Specialist, Account Manager, or Concierge that you’d like to set up global reimbursements on your account.
From there, Expensify will ask you to confirm both the currencies of the reimbursement and employee bank accounts.

Our team will assess your account, and if you meet the criteria, international reimbursements will be enabled.

# How to verify the bank account for sending international payments

Once international payments are enabled on your Expensify account, the next step is verifying the bank account to send the reimbursements.

## The reimbursement account is in USD

First, confirm the workspace settings are set up correctly by doing the following:
1. Head to **Settings > Workspaces > Group > _[Workspace Name]_ > Reports** and check that the workspace currency is USD
2. Under **Settings > Workspaces > Group > _[Workspace Name]_ > Reimbursements**, set the reimbursement method to direct
3. Under **Settings > Workspaces > Group > _[Workspace Name]_ > Reimbursements**, set the USD bank account to the default account

Once that’s all set, head to **Settings > Account > Payments**, and click **Enable Global Reimbursement** on the bank account (this button may not show for up to 60 minutes after the Expensify team confirms international reimbursements are available on your account).

From there, you’ll fill out a form via DocuSign. Once the form is complete, it is automatically sent to our Compliance Team for review. Our Support Team will contact you with more details if additional information is required.

## The reimbursement account is in AUD, CAD, GBP, EUR

First, confirm the workspace currency corresponds with the currency of the reimbursement bank account. You can do this under **Settings > Workspaces > Group > _[Workspace Name]_ > Reports**. It should be AUD, CAD, GBP, or EUR.

Next, add the bank account to Expensify:
1. Head to **Settings > Workspaces > Group > _[Workspace Name]_ > Reimbursements** and set the reimbursement method to direct (this button may not show for up to 60 minutes after the Expensify team confirms international reimbursements are available on your account)
2. Click **Add Business Bank Account**
3. If the incorrect country shows as the default, click **Switch Country** to select the correct country
4. Enter the bank account details
5. Click **Save & Continue**

From there, you’ll fill out a form via DocuSign. Once the form is complete, it is automatically sent to our Compliance Team for review. Our Support Team will contact you with more details if additional information is required.

# How to start reimbursing internationally

After the bank account is verified for international payments, set the correct bank account as the reimbursement account.

You can do this under **Settings > Workspaces > Group > _[Workspace Name]_ > Reimbursements** by selecting the reimbursement account as the default account.

Finally, have your employees add their deposit-only bank accounts. They can do this by logging into their Expensify accounts, heading to **Settings > Account > Payments**, and clicking **Add Deposit-Only Bank Account**.

# Deep Dive

## Documents requested

Our Compliance Team may ask for additional information depending on who initiates the verification or what information you provide on the DocuSign form.

Examples of additional requested information:
- The reimburser’s proof of address and ID
- Company directors’ proofs of address and IDs
- An authorization letter
- An independently certified documentation such as shareholder agreement from a lawyer, notary, or public accountant if an individual owns more than 25% of the company

{% include faq-begin.md %}

## How many people can send reimbursements internationally?

Once your company is authorized to send global payments, the individual who verified the bank account can share it with additional admins on the workspace. That way, multiple workspace members can send international reimbursements.

## How long does it take to verify an account for international payments?

It varies! The verification process can take a few business days to several weeks. It depends on whether or not the information in the DocuSign form is correct if our Compliance Team requires any additional information, and how responsive the employee verifying the company’s details is to our requests.

## If I already have a USD bank account connected to Expensify, do I need to go through the verification process again to enable international payments?

If you’ve already connected a US business bank account, you can request to enable global reimbursements by contacting Expensify Support immediately. However, additional steps are required to verify the bank account for international payments.

## My employee says they don’t have the option to add their non-USD bank account as a deposit account – what should they do?

Have the employee double-check that their default workspace is set as the workspace that's connected to the bank you're using to send international payments.

An employee can confirm their default workspace is under **Settings > Workspaces > Group**. The default workspace has a green checkmark next to it. They can change their default workspace by clicking **Default Workspace** on the correct workspace.

## Who is the “Authorized User” on the International Reimbursement DocuSign form?

This is the person who will process international reimbursements. The authorized user should be the same person who manages the bank account connection in Expensify.

## Who should I enter as the “User” on the International Reimbursement form?

You can leave this form section blank since the “User” is Expensify.

{% include faq-end.md %}
8 changes: 0 additions & 8 deletions ios/NewExpensify.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -626,9 +626,7 @@
"${PODS_ROOT}/Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests-resources.sh",
"${PODS_CONFIGURATION_BUILD_DIR}/Airship/AirshipAutomationResources.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/Airship/AirshipCoreResources.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/Airship/AirshipExtendedActionsResources.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/Airship/AirshipMessageCenterResources.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/Airship/AirshipPreferenceCenterResources.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher/GTMSessionFetcher_Core_Privacy.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport/GoogleDataTransport_Privacy.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/GoogleSignIn/GoogleSignIn.bundle",
Expand All @@ -641,9 +639,7 @@
outputPaths = (
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AirshipAutomationResources.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AirshipCoreResources.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AirshipExtendedActionsResources.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AirshipMessageCenterResources.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AirshipPreferenceCenterResources.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GTMSessionFetcher_Core_Privacy.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleDataTransport_Privacy.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleSignIn.bundle",
Expand Down Expand Up @@ -793,9 +789,7 @@
"${PODS_ROOT}/Target Support Files/Pods-NewExpensify/Pods-NewExpensify-resources.sh",
"${PODS_CONFIGURATION_BUILD_DIR}/Airship/AirshipAutomationResources.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/Airship/AirshipCoreResources.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/Airship/AirshipExtendedActionsResources.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/Airship/AirshipMessageCenterResources.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/Airship/AirshipPreferenceCenterResources.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher/GTMSessionFetcher_Core_Privacy.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport/GoogleDataTransport_Privacy.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/GoogleSignIn/GoogleSignIn.bundle",
Expand All @@ -808,9 +802,7 @@
outputPaths = (
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AirshipAutomationResources.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AirshipCoreResources.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AirshipExtendedActionsResources.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AirshipMessageCenterResources.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AirshipPreferenceCenterResources.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GTMSessionFetcher_Core_Privacy.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleDataTransport_Privacy.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleSignIn.bundle",
Expand Down
2 changes: 1 addition & 1 deletion ios/NewExpensify/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>1.4.62.4</string>
<string>1.4.62.6</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSApplicationQueriesSchemes</key>
Expand Down
2 changes: 1 addition & 1 deletion ios/NewExpensifyTests/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,6 @@
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.4.62.4</string>
<string>1.4.62.6</string>
</dict>
</plist>
Loading

0 comments on commit c00bc93

Please sign in to comment.