Skip to content

Commit

Permalink
Merge branch 'main' into Rory-SeparateBuildAndDeploy
Browse files Browse the repository at this point in the history
# Conflicts:
#	.github/workflows/deploy.yml
  • Loading branch information
roryabraham committed Sep 9, 2024
2 parents d3a130d + 201dc52 commit 3f02959
Show file tree
Hide file tree
Showing 109 changed files with 1,951 additions and 987 deletions.
121 changes: 53 additions & 68 deletions .github/workflows/deploy.yml

Large diffs are not rendered by default.

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 1009003014
versionName "9.0.30-14"
versionCode 1009003103
versionName "9.0.31-3"
// 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
10 changes: 5 additions & 5 deletions assets/emojis/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -774,11 +774,6 @@ const emojis: PickerEmojis = [
code: '🤞',
types: ['🤞🏿', '🤞🏾', '🤞🏽', '🤞🏼', '🤞🏻'],
},
{
name: 'hand_with_index_finger_and_thumb_crossed',
code: '🫰',
types: ['🫰🏿', '🫰🏾', '🫰🏽', '🫰🏼', '🫰🏻'],
},
{
name: 'love_you_gesture',
code: '🤟',
Expand Down Expand Up @@ -844,6 +839,11 @@ const emojis: PickerEmojis = [
code: '👎',
types: ['👎🏿', '👎🏾', '👎🏽', '👎🏼', '👎🏻'],
},
{
name: 'hand_with_index_finger_and_thumb_crossed',
code: '🫰',
types: ['🫰🏿', '🫰🏾', '🫰🏽', '🫰🏼', '🫰🏻'],
},
{
name: 'fist_raised',
code: '✊',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,61 +1,29 @@
---
title: Third Party Payments
description: A help article that covers Third Party Payment options including PayPal, Venmo, Wise, and Paylocity.
title: Third-Party Payments
description: Reimburse reports and pay bills using PayPal or Venmo.
---
# Expensify Third Party Payment Options

Expensify offers convenient third party payment options that allow you to streamline the process of reimbursing expenses and managing your finances. With these options, you can pay your expenses and get reimbursed faster and more efficiently. In this guide, we'll walk you through the steps to set up and use Expensify's third party payment options.

# Overview

Expensify offers integration with various third party payment providers, making it easy to reimburse employees and manage your expenses seamlessly. Some of the key benefits of using third-party payment options in Expensify include:

Expensify integrates with PayPal and Venmo, which can be used to reimburse employees or pay bills. Some of the key benefits of using a third-party payment provider are:
- Faster Reimbursements: Expedite the reimbursement process and reduce the time it takes for employees to receive their funds.
- Secure Transactions: Benefit from the security features and protocols provided by trusted payment providers.
- Centralized Expense Management: Consolidate all your expenses and payments within Expensify for a more efficient financial workflow.

# Setting Up Third Party Payments

To get started with third party payments in Expensify, follow these steps:

1. **Log in to Expensify**: Access your Expensify account using your credentials.

2. **Navigate to Settings**: Click on the "Settings" option in the top-right corner of the Expensify dashboard.

3. **Select Payments**: In the Settings menu, find and click on the "Payments" or "Payment Methods" section.

4. **Choose Third Party Payment Provider**: Select your preferred third party payment provider from the available options. Expensify may support providers such as PayPal, Venmo, Wise, and Paylocity.

5. **Link Your Account**: Follow the prompts to link your third party payment account with Expensify. You may need to enter your account details and grant necessary permissions.
# Connect a third-party payment option

6. **Verify Your Account**: Confirm your linked account to ensure it's correctly integrated with Expensify.

# Using Third Party Payments

Once you've set up your third party payment option, you can start using it to reimburse expenses and manage payments:

1. **Create an Expense Report**: Begin by creating an expense report in Expensify, adding all relevant expenses.

2. **Submit for Approval**: After reviewing and verifying the expenses, submit the report for approval within Expensify.

3. **Approval and Reimbursement**: Once the report is approved, the approved expenses can be reimbursed directly through your chosen third party payment provider. Expensify will automatically initiate the payment process.

4. **Track Payment Status**: You can track the status of payments and view transaction details within your Expensify account.
To connect a third-party payment platform to Expensify:
1. Log into your Expensify web account
2. Head to **Settings > Account > Payments > Alternative Payment Accounts**
3. Choose PayPal or Venmo
- **PayPal**: Enter your username in the `paypal.me/` field
- **Venmo**: Receive invoices via Venmo by adding your mobile phone number as a Secondary Login

{% include faq-begin.md %}

## Q: Are there any fees associated with using third party payment options in Expensify?

A: The fees associated with third party payments may vary depending on the payment provider you choose. Be sure to review the terms and conditions of your chosen provider for details on any applicable fees.

## Q: Can I use multiple third party payment providers with Expensify?

A: Expensify allows you to link multiple payment providers if needed. You can select the most suitable payment method for each expense report.
## Can I use multiple third-party payment providers with Expensify?

## Q: Is there a limit on the amount I can reimburse using third party payments?
Yes, you can link both your Venmo and PayPal accounts to Expensify if you'd like.

A: The reimbursement limit may depend on the policies and settings configured within your Expensify account and the limits imposed by your chosen payment provider.
## Is there a limit on the amount I can reimburse using third party payments?

With Expensify's third party payment options, you can simplify your expense management and reimbursement processes. By following the steps outlined in this guide, you can set up and use third party payments efficiently.
The payment limit is dependent on the settings configured within your Expensify account as well as the limits imposed by the third-party payment provider.

{% include faq-end.md %}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
title: Get Reimbursed Faster as a Non-US Employee
description: How to use Wise to get paid faster
---

If you are an overseas employee who works for a US-based company, you can use Wise to be reimbursed for expenses just as quickly as your US-based colleagues. Wise (formerly TransferWise) is an FCA-regulated global money transfer service.

Here’s how it works:

1. When you sign up for a Wise account, you are provided with a USD checking account number and a routing number to use as your Expensify bank account.
2. Once you receive a reimbursement, it will be deposited directly into your Wise account.
3. You can then convert your funds into 40+ different currencies and withdraw them to your local bank account. If you live in the UK or EU, you can also get a debit card to spend money directly from your Wise account.

## Set up reimbursements through Wise

1. Check with your company to see if you can submit your expenses in USD.
2. Sign up for a Wise Borderless Account and get verified (verification can take up to 3 days).
3. In Expensify, [add a deposit-only bank account](https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Connect-Personal-US-Bank-Account) with your Wise USD account and ACH routing numbers (NOT the wire transfer routing number).

{% include info.html %}
Do not include spaces in the Wise account number, which should be 16 digits.
{% include end-info.html %}

If your expenses are not in USD, Expensify will automatically convert them to USD when they are added to your expense report. Once you submit your expenses to your company’s USD workspace and they are approved, you will receive the reimbursement for the approved report total in USD in your Wise account.
4 changes: 2 additions & 2 deletions ios/NewExpensify/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>9.0.30</string>
<string>9.0.31</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
Expand All @@ -40,7 +40,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>9.0.30.14</string>
<string>9.0.31.3</string>
<key>FullStory</key>
<dict>
<key>OrgId</key>
Expand Down
4 changes: 2 additions & 2 deletions ios/NewExpensifyTests/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>9.0.30</string>
<string>9.0.31</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>9.0.30.14</string>
<string>9.0.31.3</string>
</dict>
</plist>
4 changes: 2 additions & 2 deletions ios/NotificationServiceExtension/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundleShortVersionString</key>
<string>9.0.30</string>
<string>9.0.31</string>
<key>CFBundleVersion</key>
<string>9.0.30.14</string>
<string>9.0.31.3</string>
<key>NSExtension</key>
<dict>
<key>NSExtensionPointIdentifier</key>
Expand Down
28 changes: 22 additions & 6 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "new.expensify",
"version": "9.0.30-14",
"version": "9.0.31-3",
"author": "Expensify, Inc.",
"homepage": "https://new.expensify.com",
"description": "New Expensify is the next generation of Expensify: a reimagination of payments based atop a foundation of chat.",
Expand Down Expand Up @@ -113,7 +113,7 @@
"date-fns-tz": "^2.0.0",
"dom-serializer": "^0.2.2",
"domhandler": "^4.3.0",
"expensify-common": "2.0.83",
"expensify-common": "2.0.84",
"expo": "51.0.17",
"expo-av": "14.0.6",
"expo-image": "1.12.12",
Expand Down Expand Up @@ -289,6 +289,7 @@
"eslint-plugin-you-dont-need-lodash-underscore": "^6.14.0",
"html-webpack-plugin": "^5.5.0",
"http-server": "^14.1.1",
"husky": "^9.1.5",
"jest": "29.4.1",
"jest-circus": "29.4.1",
"jest-cli": "29.4.1",
Expand Down
84 changes: 84 additions & 0 deletions patches/date-fns-tz+2.0.0.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
diff --git a/node_modules/date-fns-tz/_lib/tzTokenizeDate/index.js b/node_modules/date-fns-tz/_lib/tzTokenizeDate/index.js
index 9222a61..8540224 100644
--- a/node_modules/date-fns-tz/_lib/tzTokenizeDate/index.js
+++ b/node_modules/date-fns-tz/_lib/tzTokenizeDate/index.js
@@ -59,20 +59,23 @@ function hackyOffset(dtf, date) {

var dtfCache = {};

+// New browsers use `hourCycle`, IE and Chrome <73 does not support it and uses `hour12`
+const testDateFormatted = new Intl.DateTimeFormat('en-US', {
+ hourCycle: 'h23',
+ timeZone: 'America/New_York',
+ year: 'numeric',
+ month: '2-digit',
+ day: '2-digit',
+ hour: '2-digit',
+ minute: '2-digit',
+ second: '2-digit',
+}).format(new Date('2014-06-25T04:00:00.123Z'))
+const hourCycleSupported =
+ testDateFormatted === '06/25/2014, 00:00:00' ||
+ testDateFormatted === '‎06‎/‎25‎/‎2014‎ ‎00‎:‎00‎:‎00'
+
function getDateTimeFormat(timeZone) {
if (!dtfCache[timeZone]) {
- // New browsers use `hourCycle`, IE and Chrome <73 does not support it and uses `hour12`
- var testDateFormatted = new Intl.DateTimeFormat('en-US', {
- hour12: false,
- timeZone: 'America/New_York',
- year: 'numeric',
- month: 'numeric',
- day: '2-digit',
- hour: '2-digit',
- minute: '2-digit',
- second: '2-digit'
- }).format(new Date('2014-06-25T04:00:00.123Z'));
- var hourCycleSupported = testDateFormatted === '06/25/2014, 00:00:00' || testDateFormatted === '‎06‎/‎25‎/‎2014‎ ‎00‎:‎00‎:‎00';
dtfCache[timeZone] = hourCycleSupported ? new Intl.DateTimeFormat('en-US', {
hour12: false,
timeZone: timeZone,
diff --git a/node_modules/date-fns-tz/esm/_lib/tzTokenizeDate/index.js b/node_modules/date-fns-tz/esm/_lib/tzTokenizeDate/index.js
index cc1d143..17333cc 100644
--- a/node_modules/date-fns-tz/esm/_lib/tzTokenizeDate/index.js
+++ b/node_modules/date-fns-tz/esm/_lib/tzTokenizeDate/index.js
@@ -48,23 +48,24 @@ function hackyOffset(dtf, date) {
// to get deterministic local date/time output according to the `en-US` locale which
// can be used to extract local time parts as necessary.
var dtfCache = {}
+
+// New browsers use `hourCycle`, IE and Chrome <73 does not support it and uses `hour12`
+const testDateFormatted = new Intl.DateTimeFormat('en-US', {
+ hourCycle: 'h23',
+ timeZone: 'America/New_York',
+ year: 'numeric',
+ month: '2-digit',
+ day: '2-digit',
+ hour: '2-digit',
+ minute: '2-digit',
+ second: '2-digit',
+}).format(new Date('2014-06-25T04:00:00.123Z'))
+const hourCycleSupported =
+ testDateFormatted === '06/25/2014, 00:00:00' ||
+ testDateFormatted === '‎06‎/‎25‎/‎2014‎ ‎00‎:‎00‎:‎00'
+
function getDateTimeFormat(timeZone) {
if (!dtfCache[timeZone]) {
- // New browsers use `hourCycle`, IE and Chrome <73 does not support it and uses `hour12`
- var testDateFormatted = new Intl.DateTimeFormat('en-US', {
- hour12: false,
- timeZone: 'America/New_York',
- year: 'numeric',
- month: 'numeric',
- day: '2-digit',
- hour: '2-digit',
- minute: '2-digit',
- second: '2-digit',
- }).format(new Date('2014-06-25T04:00:00.123Z'))
- var hourCycleSupported =
- testDateFormatted === '06/25/2014, 00:00:00' ||
- testDateFormatted === '‎06‎/‎25‎/‎2014‎ ‎00‎:‎00‎:‎00'
-
dtfCache[timeZone] = hourCycleSupported
? new Intl.DateTimeFormat('en-US', {
hour12: false,
Loading

0 comments on commit 3f02959

Please sign in to comment.