Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/main'
Browse files Browse the repository at this point in the history
  • Loading branch information
huult committed Jan 26, 2025
2 parents efc527c + b59f23b commit f46e797
Show file tree
Hide file tree
Showing 195 changed files with 3,795 additions and 1,973 deletions.
4 changes: 4 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,10 @@ const restrictedImportPaths = [
importNames: ['memoize'],
message: "Please use '@src/libs/memoize' instead.",
},
{
name: 'react-native-animatable',
message: "Please use 'react-native-reanimated' instead.",
},
];

const restrictedImportPatterns = [
Expand Down
4 changes: 2 additions & 2 deletions .github/actions/composite/setupNode/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ runs:
uses: actions/cache@v4
with:
path: node_modules
key: ${{ runner.os }}-node-modules-${{ hashFiles('package-lock.json', 'patches/**') }}

key: ${{ inputs.IS_HYBRID_BUILD == 'true' && format('{0}-node-modules-{1}', runner.os, hashFiles('package-lock.json', 'patches/**', 'Mobile-Expensify/patches/**')) || format('{0}-node-modules-{1}', runner.os, hashFiles('package-lock.json', 'patches/**'))}}
- id: cache-old-dot-node-modules
if: inputs.IS_HYBRID_BUILD == 'true'
uses: actions/cache@v4
Expand Down
2 changes: 1 addition & 1 deletion Mobile-Expensify
4 changes: 2 additions & 2 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -110,8 +110,8 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
multiDexEnabled rootProject.ext.multiDexEnabled
versionCode 1009008806
versionName "9.0.88-6"
versionCode 1009008905
versionName "9.0.89-5"
// 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
6 changes: 6 additions & 0 deletions assets/images/arrows-leftright.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions assets/images/chatbubble-slash.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion config/webpack/webpack.common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ const getCommonConfiguration = ({file = '.env', platform = 'web'}: Environment):
// We are importing this worker as a string by using asset/source otherwise it will default to loading via an HTTPS request later.
// This causes issues if we have gone offline before the pdfjs web worker is set up as we won't be able to load it from the server.
{
test: new RegExp('node_modules/pdfjs-dist/legacy/build/pdf.worker.mjs'),
test: new RegExp('node_modules/pdfjs-dist/legacy/build/pdf.worker.min.mjs'),
type: 'asset/source',
},

Expand Down
5 changes: 5 additions & 0 deletions docs/_data/_routes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,11 @@ platforms:
icon: /assets/images/money-into-wallet.svg
description: Learn more about expense tracking and submission.

- href: connect-credit-cards
title: Connect Credit Cards
icon: /assets/images/bank-card.svg
description: Track credit card transactions and reconcile company cards.

- href: expensify-card
title: Expensify Card
icon: /assets/images/hand-card.svg
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
---
title: Managing Primary and Secondary Logins in Expensify
description: Learn how to update or add an email address to your Expensify Classic account with this step-by-step guide.
---
<div id="expensify-classic" markdown="1">

Your **primary email address** on Expensify is used for receiving all notifications and updates. Adding a **secondary email address** enables you to:
- Change your primary email to a new email.
- Connect a personal email as a secondary login when your primary email is employer-provided. This ensures continued account access if your employment changes.
- Log in to your Expensify account using either your primary or secondary email address.
- SmartScan receipts by sending them to [email protected] from your secondary login.

**Important:** Before removing your primary email, add and make another email the primary. Emails must be added as a secondary login first.

---

# Adding a Secondary Login

⚠️ **This process is only available on the Expensify website, not the mobile app.**

1. Go to **Settings** > **Account**.
2. Under **Account Details**, find **Secondary Logins**, and click **Add Secondary Login**.
3. Enter the email address or phone number you want to use.
- For phone numbers, include the international code if applicable.
4. Check your email or text messages for a verification Magic Code and enter it in the required field.

---

# Changing Your Primary Login

If you have multiple email addresses linked to your account, follow these steps to change your primary login:

1. Navigate to **Settings** > **Account** > **Secondary Logins**.
2. Click **Make Primary** next to the desired email address.
3. *(Optional)* To remove the old email address, click **Remove** next to it.

---

# Unlinking an Email from a Closed Account

If you previously added your personal email as a Secondary Login on a company account and the account has been closed, you can unlink your email to use it with a new Expensify account:

1. Go to the **Expensify Sign-In** page.
2. Enter your personal email address.
3. Click **Unlink Accounts**.
4. Follow the steps in the verification email to complete the unlinking process.

---

# FAQ

## What does changing the primary login do?
Changing your primary login updates:
- The email address displayed on reports (old and new).
- Workspace account settings.
- Your account’s default email.

## Can I have multiple secondary logins?
Yes, you can add an unlimited number of secondary logins to your account.

</div>
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
---
title: Commercial-feeds.md
description: Commercial feeds
---
# Overview
Commercial feeds are the most reliable way to import company card expenses. They remain unaffected by changes to bank login credentials or UI updates, making them highly recommended for those eligible.
The easiest way to confirm your eligibility for a commercial feed is to ask your bank directly.
# Prerequisites for enabling a commercial feed
If you haven't already, you need to create a workspace before setting up a commercial feed. Go to Settings > Workspaces > New workspace to create one.
Additionally, you’ll need to enable company cards on your workspace by navigating to Settings > Workspaces > [your workspace] > More features, and toggling on Company cards. Note that upgrading to the Control plan is required to access this feature.
# How to set up a Mastercard commercial feed
Your bank must access Mastercard's SmartData portal to complete the process. Expensify is a registered vendor in the portal, so no additional Mastercard forms are required. Your bank may, however, have its own forms.
## Steps to add a Mastercard commercial feed:
Contact your banking relationship manager and request that your CDF (Common Data File) feed be sent directly to Expensify in the Mastercard SmartData Portal (file type: CDF version 3 Release 11.01). Specify the earliest transaction date you need in the feed.
The bank will initiate feed delivery by selecting Expensify in Mastercard's portal and will email you the distribution ID.
While waiting for your bank, ensure your Control plan workspace in Expensify is set up.
Submit the distribution ID in Expensify by navigating to Settings > Workspaces > [your workspace] > Company cards > Add cards, selecting your bank (choose "Other" if not listed), and then selecting Mastercard Commercial Cards.
Once submitted, Expensify will connect the feed and notify you when it’s enabled.
# How to set up a Visa commercial feed
## Steps to add a Visa commercial feed:
Contact your banking relationship manager and request that your VCF (Variant Call Format) feed be sent directly to Expensify. Share this with your bank: "There’s a checkbox in your Visa Subscription Management portal that can be selected to enable the feed, eliminating the need for a test file."
Request the feed filename or raw file information, including the Processor ID, Financial Institution (bank) ID, and Company ID.
While waiting for your bank, ensure your Control plan workspace in Expensify is set up.
Submit the required IDs in Expensify by navigating to Settings > Workspaces > [your workspace] > Company cards > Add cards, selecting your bank (choose "Other" if not listed), and then selecting Visa Commercial Cards.
Once submitted, Expensify will connect the feed and notify you when it’s enabled.

# How to set up an American Express corporate feed
To begin, fill out Amex's required forms and send them to Amex for processing. Download the forms [here](https://drive.google.com/file/d/1zqDA_MCk06jk_fWjzx2y0r4gOyAMqKJe/view?usp=sharing).

## Instructions for filling out the Amex forms:
PAGE 1
Corporation Name: The legal name of your company on file with American Express
Corporation Address: The legal address of your company
Requested Feed Start Date: The earliest transaction date you want in Expensify (use international date format: DD/MM/YY or spelled out, e.g., January 1, 1900).
Requestor Contact: Name of the person completing the request
Email Address: Email of the person completing the request
Control Account Number: The master or basic control account number for the cards you’d like to add (not a credit card number). Contact Amex if you need assistance identifying the correct number.
PAGE 2
No information required
PAGE 3
Client Registered Name: The legal name of your company on file with American Express
Master Control Account or Basic Control Account: Same as the control account number on page 1
PAGE 4
Country List: The country where the account originates
Client Authorization: Complete your full name, job title, and date (use international date format i.e., DD/MM/YY). Sign where indicated.


## Steps to add an American Express corporate feed:
Send the completed forms to [email protected] and request they send your corporate card feed to Expensify. You should receive a confirmation email within a few days.
While waiting, ensure your Control plan workspace in Expensify is set up.
Amex will send a Production Letter with delivery file name information (e.g., R123456_B123456789_GL1025_001_$DATE$$TIME$_$SEQ$).
Submit the delivery file name in Expensify by navigating to Settings > Workspaces > [your workspace] > Company cards > Add cards > American Express > American Express Corporate Cards.
Once submitted, Expensify will connect the feed and notify you when it’s enabled.

# How to assign company cards
Once your feed is connected, you can assign cards to employees. To do this, navigate to Settings > Workspaces > [your workspace] > Company cards.

![Click the feed name to view the feed selector]({{site.url}}/assets/images/commfeed/commfeed-01.png){:width="100%"}

If you have multiple feeds, click the feed name at the top left to select the appropriate one.

![Select a feed from the feed selector to view it]({{site.url}}/assets/images/commfeed/commfeed-02.png){:width="100%"}

Click Assign card to select an employee. All workspace members appear in the list.

![Click assign card and select an employee from the list]({{site.url}}/assets/images/commfeed-03.png){:width="100%"}

Select the card you want to assign. Cards only appear if they have recent transactions.

![Select a card from the list]({{site.url}}/assets/images/commfeed/commfeed-04.png){:width="100%"}

Choose a start date:
From the beginning: Imports all available transactions (typically 30-90 days).
Custom start date: Allows you to specify a date.
![Select your transaction start date]({{site.url}}/assets/images/commfeed/commfeed-05.png){:width="100%"}
Review the details and click Assign card. Transactions will import immediately.
![Double check the selections and assign the card]({{site.url}}/assets/images/commfeed/commfeed-06.png){:width="100%"}

# Managing cards
Clicking an assigned card opens the Card details page, where you can:
Change the card name.
Select a card-specific export account (if connected to accounting software like QuickBooks, NetSuite, Xero, etc.).
Update the card to pull recent transactions.
Unassign the card (note: unassigning deletes unsubmitted expenses on draft reports in the cardholder’s account).
![Manage the card on the card details page]({{site.url}}/assets/images/commfeed/commfeed-07.png){:width="100%"}

{% include faq-begin.md %}

## My commercial feed is connected. Why is a specific card not appearing for assignment?
Cards appear for assignment if they’re active and have at least one recent transaction. If a card meeting these criteria doesn’t appear, contact your account manager or message [email protected].

## Is there an extra fee for using commercial feeds?
No, commercial feed setup is included in the Control plan.

## What’s the difference between a direct feed and commercial feed?
Direct feeds use login credentials for quick setup, but can require re-authenticating from time to time. Commercial feeds require bank involvement for setup but offer the most reliable connection.

## I have a Small Business Amex account. Am I eligible to set up a commercial feed?
Small Business or Triumph Amex accounts may not be eligible for a commercial feed and might need to use an Amex direct feed.

## Are commercial feeds the best option if my bank isn’t one where Expensify supports direct feeds?
Yes. If direct feeds are not available for your bank, commercial feeds are the best option for importing company card transactions. Currently, Expensify supports direct feeds for:
American Express
Bank of America
Brex
Capital One
Chase
Citibank
Stripe
Wells Fargo


{% include faq-end.md %}



Loading

0 comments on commit f46e797

Please sign in to comment.