Skip to content

Commit 762b8c8

Browse files
committed
Merge branch 'main' into fix/62070
2 parents 2d057fc + b2f5d0b commit 762b8c8

313 files changed

Lines changed: 6110 additions & 6035 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.

.github/workflows/deploy.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -752,7 +752,7 @@ jobs:
752752
channel: '#announce',
753753
attachments: [{
754754
color: 'good',
755-
text: `🎉️ Successfully deployed ${process.env.AS_REPO} <https://github.com/Expensify/App/releases/tag/${{ needs.prep.outputs.APP_VERSION }}|${{ needs.prep.outputs.APP_VERSION }}> to ${{ github.ref == 'refs/heads/production' && 'production' || 'staging' }} 🎉️`,
755+
text: `🎉️ Successfully deployed ${process.env.AS_REPO} <https://github.com/Expensify/App/releases/tag/${{ needs.prep.outputs.TAG }}|${{ needs.prep.outputs.TAG }}> to ${{ github.ref == 'refs/heads/production' && 'production' || 'staging' }} 🎉️`,
756756
}]
757757
}
758758
env:
@@ -769,7 +769,7 @@ jobs:
769769
channel: '#deployer',
770770
attachments: [{
771771
color: 'good',
772-
text: `🎉️ Successfully deployed ${process.env.AS_REPO} <https://github.com/Expensify/App/releases/tag/${{ needs.prep.outputs.APP_VERSION }}|${{ needs.prep.outputs.APP_VERSION }}> to ${{ github.ref == 'refs/heads/production' && 'production' || 'staging' }} 🎉️`,
772+
text: `🎉️ Successfully deployed ${process.env.AS_REPO} <https://github.com/Expensify/App/releases/tag/${{ needs.prep.outputs.TAG }}|${{ needs.prep.outputs.TAG }}> to ${{ github.ref == 'refs/heads/production' && 'production' || 'staging' }} 🎉️`,
773773
}]
774774
}
775775
env:
@@ -787,7 +787,7 @@ jobs:
787787
channel: '#expensify-open-source',
788788
attachments: [{
789789
color: 'good',
790-
text: `🎉️ Successfully deployed ${process.env.AS_REPO} <https://github.com/Expensify/App/releases/tag/${{ needs.prep.outputs.APP_VERSION }}|${{ needs.prep.outputs.APP_VERSION }}> to production 🎉️`,
790+
text: `🎉️ Successfully deployed ${process.env.AS_REPO} <https://github.com/Expensify/App/releases/tag/${{ needs.prep.outputs.TAG }}|${{ needs.prep.outputs.TAG }}> to production 🎉️`,
791791
}]
792792
}
793793
env:

.github/workflows/finishReleaseCycle.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ jobs:
7676
# Update the production branch to trigger the production deploy.
7777
updateProduction:
7878
needs: validate
79+
if: ${{ fromJSON(needs.validate.outputs.isValid) }}
7980
uses: ./.github/workflows/updateProtectedBranch.yml
8081
secrets: inherit
8182
with:

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 1009015100
118-
versionName "9.1.51-0"
117+
versionCode 1009015301
118+
versionName "9.1.53-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"

contributingGuides/NAVIGATION_TESTS.md

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@
1515
3. Verify that after pressing back arrow in the header you are on the settings root page.
1616

1717

18-
#### There is a proper split navigator under the overlay after refreshing page with RHP/LHP on wide screen
18+
#### There is a proper split navigator under the overlay after refreshing page with RHP on wide screen
1919

2020
1. Open the browser on wide screen with url `/settings/profile/display-name`.
2121
2. Verify that you can see settings profile page under the overlay of RHP.
2222

2323

24-
#### There is a proper split navigator under the overlay after deeplinking to page with RHP/LHP on wide screen
24+
#### There is a proper split navigator under the overlay after deeplinking to page with RHP on wide screen
2525

2626
1. Open the browser on wide screen.
2727
2. Open any report.
@@ -50,25 +50,6 @@
5050
6. Verify that the last visited page in this tab is displayed.
5151

5252

53-
#### The Workspace selected in the application is reset when you select a chat that does not belong to the current policy
54-
55-
1. Open the home page.
56-
2. Click on the Expensify icon in the upper left corner.
57-
3. Select any workspace.
58-
4. Click on the magnifying glass above the list of available chats.
59-
5. Select a chat that does not belong to the workspace selected in the third step.
60-
6. Verify if the chat is opened and the global workspace is selected.
61-
62-
63-
#### The selected workspace is saved between Search and Inbox tabs
64-
65-
1. Open the Inbox tab.
66-
2. Change the workspace using the workspace switcher.
67-
3. Switch to the Search tab and verify if the workspace selected in the second step is also selected in the Search.
68-
4. Change the workspace once again.
69-
5. Go back to the Inbox.
70-
6. Verify if the workspace selected in the fourth step is also selected in the Inbox tab.
71-
7253
#### Going up to the workspace list page after refreshing on the workspace settings and pressing the up button
7354

7455
1. Open the workspace settings from the deep link (use a link in format: `/settings/workspaces/:policyID:/profile`)
@@ -101,13 +82,6 @@ narrow layout :
10182
3. Reload the app.
10283
4. Verify that after pressing back arrow in the header you are on the report previously seen in the details page.
10384

104-
#### Navigating back to the Workspace Switcher from the created workspace
105-
106-
1. Open the app and go to the Inbox tab.
107-
2. Open the workspace switcher (Click on the button in the upper left corner).
108-
3. Create a new workspace by clicking on the + button.
109-
4. Navigate back using the back button in the app.
110-
5. Verify if the workspace switcher is displayed with the report screen below it
11185

11286
#### Going up to the sidebar screen
11387

Lines changed: 106 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -1,110 +1,130 @@
11
---
2-
title: Commercial-feeds.md
3-
description: Commercial feeds
2+
title: Commercial Card Feeds
3+
description: Learn how to set up and manage commercial card feeds (Visa, Mastercard, Amex) in Expensify.
4+
keywords: [New Expensify, commercial feed, Mastercard feed, Visa feed, Amex feed, company cards, corporate cards, CDF, VCF, control account]
45
---
6+
<div id="new-expensify" markdown="1">
57

6-
# Overview
7-
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.
8-
9-
The easiest way to confirm your eligibility for a commercial feed is to ask your bank directly.
10-
11-
# Prerequisites for Enabling a Commercial Feed
12-
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. You can add one commercial or [direct feed](https://help.expensify.com/articles/new-expensify/connect-credit-cards/Direct-feeds) on the Collect plan. Upgrading to the Control plan allows you to add unlimited company cards.
13-
14-
# How to Set Up a Mastercard Commercial Feed
15-
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.
16-
17-
## Steps to Add a Mastercard Commercial Feed:
18-
1. 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.
19-
2. The bank will initiate feed delivery by selecting Expensify in Mastercard's portal and will email you the distribution ID.
20-
3. While waiting for your bank, ensure your workspace in Expensify is set up.
21-
4. 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**.
22-
5. Once submitted, Expensify will connect the feed and notify you when it’s enabled.
23-
24-
# How to Set Up a Visa Commercial Feed
25-
## Steps to Add a Visa Commercial Feed:
26-
1. 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."
27-
2. Request the feed filename or raw file information, including the Processor ID, Financial Institution (bank) ID, and Company ID.
28-
3. While waiting for your bank, ensure your workspace in Expensify is set up.
29-
4. 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**.
30-
5. Once submitted, Expensify will connect the feed and notify you when it’s enabled.
31-
32-
# How to Set Up an American Express Corporate Feed
33-
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).
34-
35-
## Instructions for Filling Out the Amex Forms:
36-
**PAGE 1**
37-
- **Corporation Name:** The legal name of your company on file with American Express
38-
- **Corporation Address:** The legal address of your company
39-
- **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).
40-
- **Requestor Contact:** Name of the person completing the request
41-
- **Email Address:** Email of the person completing the request
42-
- **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.
43-
44-
**PAGE 2**
45-
No information required
46-
47-
**PAGE 3**
48-
- **Client Registered Name:** The legal name of your company on file with American Express
49-
- **Master Control Account or Basic Control Account:** Same as the control account number on page 1
50-
51-
**PAGE 4**
52-
- **Country List:** The country where the account originates
53-
- **Client Authorization:** Complete your full name, job title, and date (use international date format i.e., DD/MM/YY). Sign where indicated.
54-
55-
## Steps to Add an American Express Corporate Feed:
56-
1. Send the completed forms to **electronictransmissionsteam@aexp.com** and request they send your corporate card feed to Expensify. You should receive a confirmation email within a few days.
57-
2. While waiting, ensure your workspace in Expensify is set up.
58-
3. Amex will send a Production Letter with delivery file name information (e.g., `R123456_B123456789_GL1025_001_$DATE$$TIME$_$SEQ$`).
59-
4. Submit the delivery file name in Expensify by navigating to **Settings > Workspaces > [your workspace] > Company cards > Add cards > American Express > American Express Corporate Cards**.
60-
5. Once submitted, Expensify will connect the feed and notify you when it’s enabled.
61-
62-
# How to Assign Company Cards
63-
Once your feed is connected, you can assign cards to employees. To do this, navigate to **Settings > Workspaces > [your workspace] > Company cards**.
8+
Commercial feeds are the most reliable way to import company card expenses. These feeds are not affected by login credential changes or banking UI updates, making them ideal for growing teams and finance admins.
649

65-
![Click the feed name to view the feed selector]({{site.url}}/assets/images/commfeed/commfeed-01-updated.png){:width="100%"}
10+
**Tip:** Contact your bank directly to check if your cards are eligible for a commercial feed.
11+
12+
---
13+
14+
# Prerequisites
15+
16+
Before setting up a commercial feed:
17+
18+
- Make sure you’ve created a workspace by going to **Workspaces > New Workspace**.
19+
- On the **Collect plan**, you can add **one commercial or [direct feed](https://help.expensify.com/articles/new-expensify/connect-credit-cards/Direct-feeds)**.
20+
- On the **Control plan**, you can add an **unlimited number of company cards**.
21+
22+
---
23+
24+
# Set Up a Mastercard Commercial Feed
25+
26+
To enable a Mastercard feed, your bank must send data from **Mastercard’s SmartData portal** to Expensify.
27+
28+
1. Ask your bank’s relationship manager to send your **CDF (Common Data File)** to **Expensify** via Mastercard’s SmartData portal.
29+
- File type: **CDF v3 Release 11.01**
30+
- Specify the earliest transaction date needed.
31+
2. The bank will initiate delivery and email you a **Distribution ID**.
32+
3. In Expensify, go to **Workspaces > [Workspace Name] > Company Cards > Add Cards**.
33+
4. Select your bank or choose **Other**, then select **Mastercard Commercial Cards**.
34+
5. Submit your **Distribution ID**.
35+
6. Expensify will activate the feed and notify you when setup is complete.
36+
37+
---
38+
39+
40+
# Set Up a Visa Commercial Feed
41+
42+
Visa commercial feeds are configured through your bank using Visa’s **Subscription Management portal**.
43+
44+
1. Ask your bank’s relationship manager to enable your **VCF (Visa Commercial Format)** feed and send it to **Expensify**.
45+
- Mention: “You can check a box in Visa’s Subscription Management portal to enable feed delivery—no test file needed.”
46+
2. Request the feed details:
47+
- **Processor ID**
48+
- **Bank (Financial Institution) ID**
49+
- **Company ID**
50+
3. In Expensify, go to
51+
**Settings > Workspaces > [Workspace Name] > Company Cards > Add Cards**.
52+
4. Select your bank or **Other**, then choose **Visa Commercial Cards**.
53+
5. Submit the required IDs and wait for confirmation from Expensify.
6654

67-
If you have multiple feeds, click the feed name at the top left to select the appropriate one.
55+
---
56+
57+
# Set Up an American Express Corporate Feed
58+
59+
To set up an Amex Corporate Feed, you’ll need to complete and email their required forms.
6860

69-
![Select a feed from the feed selector to view it]({{site.url}}/assets/images/commfeed/commfeed-02-updated.png){:width="100%"}
61+
1. Download the forms:
62+
[Amex Feed Setup Forms (Google Drive)](https://drive.google.com/file/d/1zqDA_MCk06jk_fWjzx2y0r4gOyAMqKJe/view?usp=sharing)
63+
2. Complete the form as follows:
64+
- **Page 1:** Fill in legal company details, requestor name/email, feed start date, and **Control Account Number** (not a credit card number).
65+
- **Page 2:** Leave blank.
66+
- **Page 3:** Re-enter client name and Control Account.
67+
- **Page 4:** Add country, authorization name, title, and signature (DD/MM/YY format).
7068

71-
Click **Assign card** to select an employee. All workspace members appear in the list.
69+
3. Email the completed forms to: **electronictransmissionsteam@aexp.com**
70+
4. Wait for the **Production Letter** containing your feed’s file name.
71+
5. In Expensify, go to **Workspaces > [Workspace Name] > Company Cards > Add Cards > American Express > American Express Corporate Cards**
72+
6. Enter your delivery file name to submit.
73+
7. You’ll be notified once the feed is live.
74+
75+
---
7276

73-
![Click assign card and select an employee from the list]({{site.url}}/assets/images/commfeed/commfeed-03-updated.png){:width="100%"}
77+
# Assign Company Cards
7478

75-
Select the card you want to assign. Cards only appear if they have recent transactions.
79+
Once a commercial feed is connected:
7680

77-
![Select a card from the list]({{site.url}}/assets/images/commfeed/commfeed-04-updated.png){:width="100%"}
81+
1. Go to **Workspaces > [Workspace Name] > Company Cards**.
82+
2. Click the **feed name** (top-left) to select the correct card feed if multiple are present.
83+
3. Click **Assign Card** next to the unassigned card.
84+
4. Select the employee from the list of workspace members.
85+
5. Choose a **transaction start date**:
86+
- **From the beginning** (all available transactions)
87+
- **Custom date**
88+
6. Click **Assign Card**.
7889

79-
Choose a start date:
80-
- **From the beginning:** Imports all available transactions (typically 30-90 days).
81-
- **Custom start date:** Allows you to specify a date.
90+
**Transactions will begin importing immediately.**
91+
92+
![Click the feed name to view the feed selector]({{site.url}}/assets/images/commfeed/commfeed-01-updated.png){:width="100%"}
8293

8394
![Select your transaction start date]({{site.url}}/assets/images/commfeed/commfeed-05-updated.png){:width="100%"}
8495

85-
Review the details and click **Assign card**. Transactions will import immediately.
86-
8796
![Double check the selections and assign the card]({{site.url}}/assets/images/commfeed/commfeed-06-updated.png){:width="100%"}
8897

89-
# Managing Cards
90-
Once a card is assigned, you can manage its settings by navigating to **Settings > Workspaces > [your workspace] > Company cards** and selecting the assigned card.
98+
---
9199

92-
## Available Card Management Actions:
93-
- **Rename the Card**: Change the card name for easier identification.
94-
- **Set a Specific Export Account**: If connected to accounting software like QuickBooks, NetSuite, or Xero, you can assign a unique export account for this card.
95-
- **Update Transactions**: Manually refresh the card feed to pull in the latest transactions.
96-
- **Unassign the Card**: Removing a card unassigns it from the employee and deletes unsubmitted expenses from draft reports in their account.
100+
# Manage Assigned Cards
101+
102+
You can update individual cards anytime under **Settings > Workspaces > [Workspace Name] > Company Cards**.
103+
104+
**Management Options:**
105+
106+
- **Rename the Card** – Customize for easier identification.
107+
- **Assign Export Account** – Direct expenses to a specific accounting category (if integrated).
108+
- **Update Transactions** – Pull the latest data manually.
109+
- **Unassign the Card** – Removes the card and deletes unsubmitted draft expenses.
97110

98111
![Manage the card on the card details page]({{site.url}}/assets/images/commfeed/commfeed-07-updated.png){:width="100%"}
99112

100-
# FAQ
113+
---
114+
115+
# FAQ
116+
117+
## My Feed Is Connected. Why Isn’t a Card Showing Up?
118+
119+
Cards only appear if they’re active and have at least one recent transaction. If the card is still missing, contact your account manager or message [concierge@expensify.com](mailto:concierge@expensify.com).
120+
121+
## Is There an Extra Cost for Commercial Feeds?
101122

102-
## My commercial feed is connected. Why is a specific card not appearing for assignment?
103-
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 concierge@expensify.com.
123+
No. The **Collect plan** includes one commercial feed. To get multiple feeds, upgrade to the **Control plan**.
104124

105-
## Is there an extra fee for using commercial feeds?
106-
No, the Collect plan includes one commercial feed. You can add additional commercial feeds by upgrading to the Control plan.
125+
## What’s the Difference Between a Commercial Feed and a Direct Feed?
107126

108-
## What’s the difference between a direct feed and commercial feed?
109-
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.
127+
- **Direct Feed**: Quick setup using login credentials, but may require re-authentication.
128+
- **Commercial Feed**: Set up with bank involvement but offers a **stable, uninterrupted** connection.
110129

130+
</div>

0 commit comments

Comments
 (0)