Skip to content

Commit 810dc65

Browse files
committed
Merge branch 'main' into snyk-fix-d4b5669ca76951e1fd2fab3e4130c806
2 parents 7cae68e + 6761677 commit 810dc65

112 files changed

Lines changed: 2714 additions & 2577 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.

.gitignore

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,5 +154,5 @@ react-compiler-output.txt
154154
# Generated by bob (for Nitro modules)
155155
modules/*/lib/
156156

157-
# Claude Code files
158-
.claude/
157+
# Claude local settings
158+
.claude/settings.local.json

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 1009019703
118-
versionName "9.1.97-3"
117+
versionCode 1009019705
118+
versionName "9.1.97-5"
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"

config/webpack/webpack.common.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -189,19 +189,12 @@ const getCommonConfiguration = ({file = '.env', platform = 'web'}: Environment):
189189
*/
190190
exclude: [new RegExp(`node_modules/(?!(${includeModules})/).*|.native.js$`)],
191191
},
192-
193192
// We are importing this worker as a string by using asset/source otherwise it will default to loading via an HTTPS request later.
194193
// 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.
195194
{
196-
// eslint-disable-next-line prefer-regex-literals
197195
test: new RegExp('node_modules/pdfjs-dist/build/pdf.worker.min.mjs'),
198196
type: 'asset/source',
199197
},
200-
{
201-
// eslint-disable-next-line prefer-regex-literals
202-
test: new RegExp('node_modules/pdfjs-dist/legacy/build/pdf.worker.min.mjs'),
203-
type: 'asset/source',
204-
},
205198

206199
// Rule for react-native-web-webview
207200
{

cspell.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,6 @@
239239
"formatjs",
240240
"Français",
241241
"Frederico",
242-
"freetext",
243242
"frontpart",
244243
"fullstory",
245244
"FWTV",
@@ -438,6 +437,7 @@
438437
"numberformat",
439438
"objc",
440439
"oblador",
440+
"OCBC",
441441
"octocat",
442442
"officedocument",
443443
"oldarch",
@@ -503,6 +503,7 @@
503503
"Pressables",
504504
"prettierrc",
505505
"proguard",
506+
"Proofpoint",
506507
"Protip",
507508
"purchaseamount",
508509
"purchasecurrency",

docs/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Connect-Personal-Bank-Account.md

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,35 @@ However, if you encounter an error during this process, you can close the pop-up
5252

5353
Some banks, such as Chase, may display masked or tokenized account numbers when connected via Plaid. This is a security feature implemented by the bank and does not indicate any setup error. As long as the connection was successful and you see your account listed in your **Wallet**, reimbursements should process correctly.
5454

55-
## Why can't I add my HSBC bank account details in Singapore?
56-
57-
You can. HSBC typically includes the **branch code** which is the final three digits of the Swift Code (HSBCSGS2XXX) in their "Account Number". If you see figures like "146172002492", please drop first 3 digit (146) which is the Branch Code.
55+
## I can't find all the details for my bank in Singapore that you require. Where can I find them?
56+
57+
Expensify requires many fields to add a Singaporean Business account (for paying out) or Personal account (for receiving into). The Name and Address fields are self-explanatory. The other fields are:
58+
59+
- Swift Code
60+
- Account Number
61+
- Clearing Code
62+
63+
The Swift code can generally be found by searching for your bank [here](https://wise.com/gb/swift-codes/countries). It always contains a capitalized alphanumerical string of characters that end in either XXX or the bank **Branch Code**. There is no requirement to use anything but the XXX head office option.
64+
65+
The Account Number can usually be found on your statement or in your online banking portal. For example, HSBC typically includes the **Branch Code** (the final three digits of the Swift Code, e.g. HSBCSGS2XXX → 146) in the **Account Number**. If you see figures like `146172002492`, drop the first 3 digits (`146`), which form the Branch Code, and use the remainder as the Account No.
66+
67+
The Clearing Code is made up of both the **Bank Code** and the **Branch Code** to form a full 7-digit Clearing Code. Some bank-specific help is outlined below:
68+
69+
- **UOB (Standard Accounts)** — Bank Code: 7375. Branch Code: first 3 digits of Account No. Account No: unchanged.
70+
Example: `9102031012` → Branch Code `030`, Clearing Code `7375030`, Account No `9102031012`.
71+
- **DBS** — Bank Code: 7171. Branch Code: first 3 digits of Account No. Account No: unchanged.
72+
Example: `0052312891` → Branch Code `005`, Clearing Code `7171005`.
73+
- **POSBank** — Bank Code: 7171. Branch Code: always `081`. Account No: unchanged.
74+
Example: `84102395` → Branch Code `081`, Clearing Code `7171081`.
75+
- **OCBC** — Bank Code: 7339. Branch Code: first 3 digits of Account No. Account No: drop the first 3 digits.
76+
Example: `5501089550` → Branch Code `550`, Clearing Code `7339550`, Account No `1089550`.
77+
- **HSBC (Corporate)** — Bank Code: 7232. Branch Code: first 3 digits of Account No. Account No: drop the first 3 digits.
78+
Example: `146172002492` → Branch Code `146`, Clearing Code `7232146`, Account No `172002492`.
79+
- **HSBC (Personal)** — Bank Code: 9548. Branch Code: first 3 digits of Account No. Account No: drop the first 3 digits.
80+
Example: `146123843293` → Branch Code `146`, Clearing Code `9548146`, Account No `123843293`.
81+
- **SBI** — Bank Code: 7791. Branch Code: first 3 digits of Account No. Account No: drop the first 3 digits.
82+
Example: `27767012518738` → Branch Code `277`, Clearing Code `7791277`, Account No `67012518738`.
83+
- **Standard Chartered** — Bank Code: 9496. Branch Code: `0` + first 2 digits of Account No. Account No: full 10 digits.
84+
Example: `1803645852` → Branch Code `018`, Clearing Code `9496018`, Account No `1803645852`.
5885

5986
</div>

docs/articles/expensify-classic/settings/Email-Notifications.md

Lines changed: 86 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,67 @@
11
---
22
title: Expensify Email Notifications
3-
description: Troubleshooting steps for receiving emails and notifications from Expensify.
4-
keywords: [Expensify Classic, Email notifications, spam settings]
3+
description: Troubleshooting steps for receiving emails and notifications from Expensify, including Magic Code login emails and unblock procedures.
4+
keywords: [Expensify Classic, Email notifications, spam settings, magic code not received, login email missing, cannot sign in, expensify email blocked, expensify login help, email deliverability, spam filter, unblock email]
55
---
66
<div id="expensify-classic" markdown="1">
77

88
Occasionally, members may have trouble receiving Email notifications from Expensify, including Magic Code Emails, account validation Emails, contact method validations, integration Emails, or report action notifications.
99

1010
---
1111

12+
# Magic Code Login Emails
13+
14+
Magic Code emails are sent when you log in to Expensify and are critical for account access. These emails may be delayed or blocked due to spam filtering, corporate email policies, or server-level blocks. If you choose to or are automatically directed to sign in via SAML/SSO, you will **not** receive a magic code.
15+
16+
## Quick Fixes for Users
17+
18+
If you're not receiving your Magic Code email:
19+
20+
1. **Wait up to 10 minutes** - Magic Codes may be delayed due to email processing
21+
2. **Check spam/junk folders** - Search for emails from "expensify.com" or "concierge@expensify.com"
22+
3. **Search your entire inbox** for "Expensify" to find filtered messages
23+
4. **Add concierge@expensify.com to your contacts** to prevent future filtering
24+
5. **Try resending the code** by clicking "Resend" on the login screen
25+
26+
## Expected Wait Times
27+
28+
- **Normal delivery:** 0-3 minutes
29+
- **Delayed delivery:** Up to 10 minutes
30+
- **If no email after 10 minutes:** Follow the troubleshooting steps below
31+
32+
## When to Escalate
33+
34+
Contact Expensify Concierge if you've tried the above steps and still can't receive Magic Codes. Include:
35+
- Your email domain (e.g., @company.com)
36+
- Timestamp of your login attempt
37+
- Any bounce or SMTP error messages you received
38+
39+
---
40+
1241
# Troubleshooting Missing Expensify Notifications
1342

1443
## Issue: The Email or Notification Is Never Received, and No Error Message Appears
1544

16-
Emails can sometimes be delayed and may take up to 30–60 minutes to arrive. If an expected notification has not arrived:
45+
Emails can sometimes be delayed and may take up to 10 minutes to arrive. If an expected notification has not arrived:
1746

1847
- Check your **Email Preferences** via **Settings > Account > Preferences**. In the **Contact Preferences** section, ensure the relevant notification types are enabled.
1948
- Check your Email spam and trash folders, as Expensify messages might be filtered incorrectly.
20-
- Ensure that Expensify Emails are not blocked by adding the domain **expensify.com** to your Email provider’s allowlist.
49+
- Ensure that Expensify Emails are not blocked by adding the domain **expensify.com** to your Email provider's allowlist.
50+
51+
## Issue: A Banner Says "We're Having Trouble Emailing You"
52+
53+
This banner appears when Expensify detects that emails to your address are bouncing or being blocked.
2154

22-
## Issue: A Banner Says “We’re Having Trouble Emailing You”
55+
### Step 1: Try the Self-Service Unblock
2356

24-
Confirm that the Email address on your Expensify account is valid, then click the link in the banner labeled **"here."** If successful, you will see a confirmation that your Email was unblocked.
57+
1. Confirm that the Email address on your Expensify account is valid
58+
2. Click the link in the banner labeled **"here"**
59+
3. If successful, you will see a confirmation that your Email was unblocked
2560

2661
![Expensify Email Error](https://help.expensify.com/assets/images/Email Error - Classic.png){:width="100%"}
2762

63+
### Step 2: If the Unblock Fails
64+
2865
**If unsuccessful, another error may appear:**
2966

3067
- If the error or SMTP message includes a URL, follow the provided link for further instructions.
@@ -33,6 +70,23 @@ Confirm that the Email address on your Expensify account is valid, then click th
3370

3471
![Expensify SMTP Error](https://help.expensify.com/assets/images/ExpensifyHelp_SMTPError.png){:width="100%"}
3572

73+
### Step 3: Persistent Unblock Issues
74+
75+
If clicking "here" doesn't resolve the issue or you keep getting re-blocked:
76+
77+
**Common Causes:**
78+
- Corporate email servers automatically re-block after bounce events
79+
- Third-party spam filters maintain their own blacklists
80+
- Email server configuration changes
81+
82+
**Next Steps:**
83+
1. Contact your IT team with the error message details
84+
2. Request a permanent allowlist for **expensify.com**
85+
3. If the issue persists after IT involvement, contact Expensify Concierge with:
86+
- Screenshots of the error messages
87+
- Confirmation that your IT team has allowlisted expensify.com
88+
- Your company's email domain
89+
3690
---
3791

3892
# Further Troubleshooting for Public Domains
@@ -73,6 +127,32 @@ Even if you have received Expensify Emails in the past, confirm that **expensify
73127

74128
# FAQ
75129

130+
## What if I still don't get my Magic Code after following all the steps?
131+
132+
If you've waited 10+ minutes, checked spam folders, and tried resending but still don't receive your Magic Code:
133+
134+
1. **Try an alternate contact method** if you have one configured in your account settings
135+
2. **Contact Expensify Concierge** with your email domain and timestamp of the login attempt
136+
3. **Ask your IT team** to check server logs for blocked messages from expensify.com
137+
138+
## How long should I wait before trying to resend my Magic Code?
139+
140+
- **First retry:** Wait at least 2-3 minutes before requesting a new code
141+
- **Subsequent retries:** Wait 5-10 minutes between attempts to avoid overwhelming email filters
142+
- **If no success after 3 attempts:** Follow the troubleshooting steps or contact support
143+
144+
## When should I contact my IT team vs Expensify support?
145+
146+
**Contact your IT team first if:**
147+
- You work for a company with managed email (not Gmail, Yahoo, etc.)
148+
- The error message mentions "mimecast," "blacklist," or specific filtering services
149+
- Other employees at your company report similar email issues
150+
151+
**Contact Expensify Concierge if:**
152+
- You use a personal email provider (Gmail, Yahoo, Outlook.com, etc.)
153+
- Your IT team has confirmed expensify.com is allowlisted but you're still blocked
154+
- You need help with account access after trying all troubleshooting steps
155+
76156
## How Can I Be Sure That Emails from Expensify Are Legitimate and Not Spam?
77157

78158
Expensify Emails are **SPF** and **DKIM-signed**, meaning they are cryptographically signed and encrypted to prevent spoofing.
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
---
2+
title: Troubleshooting Missing Magic Code Emails
3+
description: Dedicated guide for resolving Magic Code login email delivery issues and accessing your Expensify account.
4+
keywords: [magic code not received, login email missing, cannot sign in, expensify email blocked, expensify login help, email deliverability, magic code troubleshooting, account access]
5+
---
6+
<div id="expensify-classic" markdown="1">
7+
8+
Magic Code emails are critical for logging into your Expensify account. If you're not receiving these emails, this guide provides step-by-step troubleshooting to help you regain access.
9+
10+
---
11+
12+
# Quick Fixes for Users
13+
14+
**Try these steps first before contacting support:**
15+
16+
## 1. Wait and Check Basic Locations
17+
18+
- **Wait up to 10 minutes** - Magic Codes may be delayed due to email processing
19+
- **Check your spam/junk folder** - Look specifically for emails from "expensify.com"
20+
- **Search your entire inbox** for "Expensify" to find filtered messages
21+
- **Check your trash/deleted items** folder
22+
23+
## 2. Improve Email Delivery
24+
25+
- **Add concierge@expensify.com to your contacts** to prevent future filtering
26+
- **Mark previous Expensify emails as "Not Spam"** if found in spam folder
27+
- **Create an email filter** to direct all expensify.com emails to your inbox
28+
29+
## 3. Try Resending
30+
31+
- **Click "Resend Magic Code"** on the login screen
32+
- **Wait 2-3 minutes** between resend attempts
33+
- **Limit to 3 attempts** before trying other solutions
34+
35+
---
36+
37+
# Alternate Access Options
38+
39+
## Use Backup Contact Methods
40+
41+
If you have multiple email addresses or phone numbers configured:
42+
43+
1. Go to the **"Can't access your account?"** link on the login page
44+
2. **Try an alternate email** if you have one configured
45+
3. **Use phone verification** if available for your account
46+
47+
## Update Contact Methods
48+
49+
If you can access your account through alternate means:
50+
51+
1. Go to **Settings > Account > Contact Methods**
52+
2. **Add a backup email** for future login issues
53+
3. **Verify the new contact method** before you need it
54+
55+
---
56+
57+
# For IT Teams and Administrators
58+
59+
## Email Server Diagnostics
60+
61+
**Check these common blocking points:**
62+
63+
1. **Review email server logs** for messages from expensify.com
64+
2. **Verify domain allowlist** includes the full expensify.com domain
65+
3. **Check third-party filters** (Mimecast, Proofpoint, Barracuda, etc.)
66+
4. **Confirm SPF/DKIM settings** allow Expensify's authentication
67+
68+
## Allowlist Configuration
69+
70+
**Ensure these domains and addresses are allowlisted:**
71+
72+
- **Domain:** expensify.com
73+
- **Key addresses:** concierge@expensify.com, receipts@expensify.com
74+
- **IP ranges:** Contact Expensify Concierge for current sending IP ranges
75+
76+
## Test Email Delivery
77+
78+
1. **Send a test email** to receipts@expensify.com from the affected domain
79+
2. **Monitor server logs** for delivery confirmation or bounce messages
80+
3. **Check with your email provider** about any recent filtering changes
81+
82+
---
83+
84+
# When to Escalate
85+
86+
## Contact Your IT Team If:
87+
88+
- You work for a **company with managed email** (not Gmail, Yahoo, etc.)
89+
- Error messages mention **"mimecast," "blacklist," or filtering services**
90+
- **Multiple employees** report similar email delivery issues
91+
- You're using **corporate Wi-Fi or VPN** that might affect email
92+
93+
## Contact Expensify Concierge If:
94+
95+
- You use a **personal email provider** (Gmail, Yahoo, Outlook.com, etc.)
96+
- Your **IT team has confirmed allowlisting** but you're still blocked
97+
- You need **immediate account access** for business purposes
98+
- **All troubleshooting steps** have been completed without success
99+
100+
### Information to Include When Contacting Support:
101+
102+
- **Your email domain** (e.g., @company.com or @gmail.com)
103+
- **Exact timestamp** of your login attempt
104+
- **Screenshots of any error messages**
105+
- **Steps you've already tried** from this guide
106+
- **Any bounce or SMTP error messages** you received
107+
108+
---
109+
110+
# FAQ
111+
112+
## How long should I wait for a Magic Code?
113+
114+
- **Normal delivery:** 1-3 minutes
115+
- **Acceptable delay:** Up to 10 minutes
116+
- **Contact support if:** No email after 10+ minutes
117+
118+
## Can I log in without a Magic Code?
119+
120+
Magic Codes are required for security. However, you may be able to use:
121+
- **Alternate email addresses** configured on your account
122+
- **Phone verification** if enabled
123+
- **SSO login** if your company uses single sign-on
124+
125+
## What if I keep getting re-blocked after unblocking?
126+
127+
This usually indicates:
128+
- **Corporate email servers** automatically re-blocking after bounce events
129+
- **Third-party spam filters** maintaining persistent blocks
130+
- **Email configuration changes** at your organization
131+
132+
**Solution:** Work with your IT team to implement permanent allowlisting rather than temporary unblocks.
133+
134+
## Why do Magic Codes work sometimes but not others?
135+
136+
**Common causes:**
137+
- **Email server load** causing intermittent delays
138+
- **Spam filter updates** changing blocking behavior
139+
- **Network connectivity issues** between email providers
140+
- **Corporate policy changes** affecting email routing
141+
142+
## Is it safe to add Expensify to my email allowlist?
143+
144+
Yes. Expensify emails are:
145+
- **SPF and DKIM-signed** to prevent spoofing
146+
- **Cryptographically authenticated** to verify legitimacy
147+
- **Sent only from verified domains** controlled by Expensify
148+
149+
</div>

ios/NewExpensify/Info.plist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
</dict>
4545
</array>
4646
<key>CFBundleVersion</key>
47-
<string>9.1.97.3</string>
47+
<string>9.1.97.5</string>
4848
<key>FullStory</key>
4949
<dict>
5050
<key>OrgId</key>

0 commit comments

Comments
 (0)