Skip to content

Commit 038f5f1

Browse files
committed
Merge branch 'main' into fix/add-reason-attributes-reimbursement-account-skeletons
2 parents c42532e + e806938 commit 038f5f1

731 files changed

Lines changed: 46022 additions & 8059 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.

Mobile-Expensify

android/app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,8 @@ android {
111111
minSdkVersion rootProject.ext.minSdkVersion
112112
targetSdkVersion rootProject.ext.targetSdkVersion
113113
multiDexEnabled rootProject.ext.multiDexEnabled
114-
versionCode 1009033400
115-
versionName "9.3.34-0"
114+
versionCode 1009033500
115+
versionName "9.3.35-0"
116116
// Supported language variants must be declared here to avoid from being removed during the compilation.
117117
// This also helps us to not include unnecessary language variants in the APK.
118118
resConfigs "en", "es"

babel.config.js

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ const webpack = {
6363
};
6464

6565
const metro = {
66-
presets: [require('@react-native/babel-preset')],
66+
presets: [[require('@react-native/babel-preset'), {disableImportExportTransform: true}]],
6767
plugins: [
6868
['babel-plugin-react-compiler', ReactCompilerConfig], // must run first!
6969

@@ -174,5 +174,14 @@ module.exports = (api) => {
174174
const runningIn = api.caller((args = {}) => args.name);
175175
console.debug(' - running in: ', runningIn);
176176

177-
return ['metro', 'babel-jest'].includes(runningIn) ? metro : webpack;
177+
// Jest runs in Node.js without Metro's experimentalImportSupport transform,
178+
// so Babel must handle import/export transforms for tests.
179+
if (runningIn === 'babel-jest') {
180+
return {
181+
...metro,
182+
presets: [[require('@react-native/babel-preset'), {disableImportExportTransform: false}]],
183+
};
184+
}
185+
186+
return runningIn === 'metro' ? metro : webpack;
178187
};

contributingGuides/PAYMENT_VIA_EXPENSIFY.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,29 @@ Contributors are eligible to be paid via Expensify 18 months after they were ass
99
- View [Receive Payments](https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/payments/Receive-Payments) for details on receiving payments in the US and internationally, including via Wise (formerly TransferWise), Paypal, Venmo and more.
1010

1111
After approval it can take between 1 business day and a week, depending on the country and service you use.
12+
13+
## For issues with deposits
14+
If you're having an issue with the deposit, ie. a report gets _stuck_ in a state like Approved, start a chat with Concierge. Ask them to create a Github issue using [this template](https://github.com/Expensify/Expensify/issues/new?template=MISSING_REIMBURSEMENT_TEMPLATE.md). Provide as many details below as possible
15+
16+
### Please provide the following details:
17+
> - Report ID:
18+
> - Reimbursement ID:
19+
> - Amount of reimbursement:
20+
> - Date reimbursement was initiated:
21+
> - Date reimbursement was expected:
22+
> - Last 4-digits of the deposit account:
23+
>
24+
> ### Is the missing reimbursement international (CAD > CAD, USD > GBP, etc.) or domestic?
25+
>
26+
> ### If this is an international reimbursement, please provide the following details
27+
> - Location of reimbursement account (AUD, CAD, GBP, EUR, USD)
28+
> - Location/currency of deposit account
29+
>
30+
> ### Have you received reimbursements to the connected deposit account successfully in the past?
31+
> - Yes or No
32+
>
33+
> ### Please select which option best describes the scenario:
34+
> - The recipient connected a deposit account that was closed
35+
> - The recipient entered the bank details incorrectly when connecting their deposit account
36+
> - The recipient entered the correct bank details, but the reimbursement is still missing
37+
> - Something else (please describe below)

docs/articles/expensify-classic/bank-accounts-and-payments/payments/Global-Reimbursement-UK.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ This is a signed document authorizing a client’s bank to pull payments via dir
7373
Once the bank account is approved for global reimbursement:
7474
1. Go to **Settings > Workspaces > [Workspace Name] > Workflows**.
7575
2. Scroll to **Make or track payments**.
76-
3. Choose your verified EU account as the default reimbursement method.
76+
3. Choose your verified UK/GBP account as the default reimbursement method.
7777
4. Instruct employees to connect their deposit account:
7878
- Go to **Settings > Account > Wallet**.
7979
- Click **Add deposit-only bank account** and input their account details.

docs/articles/expensify-classic/bank-accounts-and-payments/payments/Reimburse-Reports.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ You can reimburse submitted and approved reports in Expensify using direct depos
4242
For international bank transfers.
4343

4444
## Setup requirements
45-
- A Workspace Admin must [enable global reimbursements](https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Enable-Global-Reimbursements).
45+
- A Workspace Admin must [enable global reimbursements](https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/payments/Enable-Global-Reimbursement).
4646
- Recipients must [connect a deposit account](https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Connect-Personal-US-Bank-Account).
4747

4848
> Only verified business accounts can send global reimbursements.
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
---
2+
title: CER937 Error in Certinia Integration
3+
description: Learn what the CER937 error means in Certinia and how to update the Expensify integration configuration to restore syncing.
4+
keywords: CER937, Certinia export error, update Expensify in Certinia, Certinia connection issue, Expensify Certinia sync error, Workspace Admin
5+
internalScope: Audience is Workspace Admins and Certinia Admins using the Certinia integration. Covers resolving the CER937 error caused by an outdated Certinia integration configuration. Does not cover other Certinia error codes.
6+
---
7+
8+
# CER937 Error in Certinia Integration
9+
10+
If you see the error:
11+
12+
CER937: Please update Expensify in Certinia.
13+
14+
This means Certinia has detected that the Expensify integration configuration is outdated and must be updated before exports or syncs can proceed.
15+
16+
---
17+
18+
## Why the CER937 Error Happens in Certinia
19+
20+
The CER937 error typically indicates:
21+
22+
- A newer version of the Expensify integration is available in Certinia.
23+
- The existing integration configuration has not been updated.
24+
- Certinia is blocking exports until the integration version is aligned.
25+
26+
This is a Certinia configuration issue, not a Workspace configuration issue.
27+
28+
---
29+
30+
## How to Fix the CER937 Error
31+
32+
This issue must be resolved in Certinia.
33+
34+
1. Log in to Certinia as an administrator.
35+
2. Locate the **Expensify Integration** configuration.
36+
3. Select the option to **Update** the integration.
37+
4. Follow any prompts to upgrade, reinstall, or refresh metadata.
38+
5. Confirm API credentials or OAuth tokens if prompted.
39+
6. Save your changes.
40+
41+
If you do not see an update option, contact your Certinia administrator or Certinia support to confirm access to the latest integration release.
42+
43+
After updating Certinia:
44+
45+
1. Go to **Settings > Workspaces**.
46+
2. Select your Workspace.
47+
3. Click **Accounting**.
48+
4. Click **Sync Now**.
49+
50+
Then retry exporting the report.
51+
52+
---
53+
54+
# FAQ
55+
56+
## Can I Retry the Export?
57+
58+
You can attempt to retry the export after updating the integration and selecting **Sync Now**. If the error persists, confirm the integration version in Certinia is current.
59+
60+
## Does CER937 Mean My Data Is Lost?
61+
62+
No. The report remains in Expensify. The export is simply blocked until the Certinia integration is updated.
63+
64+
## Is CER937 Caused by Workspace Settings?
65+
66+
No. CER937 is triggered when Certinia requires an integration update. Workspace accounting settings are not the cause.
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
---
2+
title: Certinia Integration FAQ and Export Troubleshooting
3+
description: Learn why reports may not export to Certinia, how to manually export, fix company card export issues, manage project limitations, and disconnect the Certinia integration.
4+
keywords: Certinia export not working, automatic export failed, manual export Certinia, company card wrong account export, preferred exporter domain admin, disconnect Certinia, Certinia project status export limitation, assignment status export, Workspace Admin
5+
internalScope: Audience is Workspace Admins and Domain Admins using the Certinia integration. Covers common export failures, manual export restrictions, company card export mapping, project limitations, and disconnecting Certinia. Does not cover specific Certinia error codes.
6+
---
7+
8+
# Certinia FAQ
9+
10+
## Why is my report not automatically exporting to Certinia?
11+
12+
An error is preventing the report from exporting automatically.
13+
14+
You can find the error in several ways:
15+
16+
- The **preferred exporter** (as configured in Expensify) receives an email with error details.
17+
- The error appears in the report’s comments section.
18+
- Automatic exports will continue to fail until the error is resolved.
19+
20+
### How to resolve automatic export failures
21+
22+
1. Open the affected report in Expensify.
23+
2. Review the error message in the comments section.
24+
3. Make the required corrections.
25+
4. Have a Workspace Admin manually export the report.
26+
27+
---
28+
29+
## Why am I unable to manually export a report to Certinia?
30+
31+
Only reports in **Approved**, **Done**, or **Paid** status can be exported.
32+
33+
If the report is in **Draft** status, selecting export may result in an empty screen.
34+
35+
### How to resolve manual export issues
36+
37+
1. Submit the report if it is in Draft status.
38+
2. Have an approver approve the report if it is Outstanding.
39+
3. Once the report is Approved, Done, or Paid, a Workspace Admin can manually export it.
40+
41+
---
42+
43+
## Why are company card expenses exporting to the wrong account?
44+
45+
Company card expenses may export to the wrong account if the card export mapping is incorrect or if the exporter does not have proper permissions.
46+
47+
### How to verify company card export mapping
48+
49+
1. Go to the navigation tabs on the left.
50+
2. Click **Settings**.
51+
3. Click **Domains**.
52+
4. Select **Company Cards**.
53+
5. Click **Edit Export** for the affected card.
54+
6. Confirm the correct export account is selected.
55+
56+
Also confirm:
57+
58+
- The expenses display the **Card + Lock icon**, which ensures they are mapped correctly.
59+
- The preferred exporter is a **Domain Admin**.
60+
61+
If the preferred exporter is not a Domain Admin, exports will default to the fallback company card account set in the Workspace configuration.
62+
63+
### How to check the preferred exporter
64+
65+
1. Go to the navigation tabs on the left.
66+
2. Click **Workspaces**.
67+
3. Select your Workspace.
68+
4. Click **Accounting**.
69+
5. Click **Configure**.
70+
6. Review the **Export** settings.
71+
72+
---
73+
74+
## How do I disconnect the Certinia connection?
75+
76+
Disconnecting removes the active integration and clears imported options.
77+
78+
### How to disconnect Certinia
79+
80+
1. Go to the navigation tabs on the left.
81+
2. Click **Settings**.
82+
3. Click **Workspaces**.
83+
4. Select your Workspace.
84+
5. Click **Accounting**.
85+
6. Click the gray **Disconnect** button under the Certinia connection.
86+
7. Confirm to disconnect.
87+
88+
Note: Disconnecting clears all imported options from Expensify.
89+
90+
---
91+
92+
## Are there export limitations based on projects in Certinia?
93+
94+
Yes. Project settings in Certinia can prevent expenses from exporting.
95+
96+
### Expenses can be exported when:
97+
98+
- **Project Status** = Active or In Progress
99+
- **Assignment Status** = Closed, Active, or Completed
100+
- **Closed for Expense Entry** = Unchecked
101+
102+
### Expenses cannot be exported when:
103+
104+
- **Project Status** = Closed
105+
- **Closed for Expense Entry** = Checked
106+
107+
### How to resolve project export limitations
108+
109+
1. Check the Project Status in Salesforce.
110+
- If Project Status is Closed, expenses cannot be entered or exported.
111+
- If Active or In Progress, continue to step 2.
112+
2. Verify the **Closed for Expense Entry** setting.
113+
- If checked, uncheck it to allow expense exports.
114+
3. Manually test expense entry in Salesforce.
115+
- If manual entry works, the Expensify–Certinia integration should also allow export.
116+
117+
---
118+
119+
## Does assignment status affect expense exports?
120+
121+
No.
122+
123+
Assignment Status in Certinia (Closed, Active, or Completed) does not impact expense entry or export.
124+
125+
Only Project Status and the Closed for Expense Entry setting affect export eligibility.
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
---
2+
title: CER047 Error in Certinia Integration
3+
description: Learn what the CER047 error means in Certinia and how to enable the Expense Ops Edit permission to restore syncing.
4+
keywords: CER047, Certinia export error, Ops Edit permission, Expense Ops Edit, approved records permission error, Expensify Certinia sync error, Workspace Admin
5+
internalScope: Audience is Workspace Admins using the Certinia integration. Covers resolving the CER047 error caused by missing Expense Ops Edit permissions. Does not cover other Certinia error codes.
6+
---
7+
8+
# CER047 Error in Certinia Integration
9+
10+
If you see the error:
11+
12+
CER047: "Ops Edit" permission is required to edit approved records.
13+
14+
This means the Certinia integration user does not have permission to edit approved expense records, preventing the export from completing.
15+
16+
---
17+
18+
## Why the CER047 Error Happens in Certinia
19+
20+
The CER047 error typically indicates:
21+
22+
- The connected Certinia integration user lacks the **Expense Ops Edit** permission.
23+
- Certinia requires permission to modify approved records during export processing.
24+
- The export is blocked due to missing permissions.
25+
26+
This is a Certinia permission configuration issue, not a Workspace configuration issue.
27+
28+
---
29+
30+
## How to Fix the CER047 Error
31+
32+
This issue must be resolved in Certinia.
33+
34+
1. Log in to Certinia.
35+
2. Go to **Permission Controls**.
36+
3. Select the permission set assigned to the integration user.
37+
4. Locate **Expense Ops Edit**.
38+
5. Enable the permission.
39+
6. Save your changes.
40+
41+
After updating permissions:
42+
43+
1. Go to **Settings > Workspaces**.
44+
2. Select your Workspace.
45+
3. Click **Accounting**.
46+
4. Click **Sync Now**.
47+
48+
Then retry exporting the report.
49+
50+
---
51+
52+
# FAQ
53+
54+
## Can I Retry the Export?
55+
56+
Yes. After enabling **Expense Ops Edit** and selecting **Sync Now**, retry the export. If the error persists, confirm the permission is applied to the exact user connected to the integration.
57+
58+
## Does CER047 Mean My Expense Was Deleted?
59+
60+
No. The report remains in Expensify. The export was blocked due to missing permissions.
61+
62+
## Is CER047 Caused by Workspace Settings?
63+
64+
No. CER047 is triggered by missing permissions in Certinia. Workspace accounting settings are not the cause.

0 commit comments

Comments
 (0)