Skip to content

Commit 2dc15c0

Browse files
authored
Merge branch 'Expensify:main' into fix-spinner-assign-card
2 parents fc3ff60 + 7053fde commit 2dc15c0

6 files changed

Lines changed: 199 additions & 119 deletions

File tree

Lines changed: 39 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,68 @@
11
---
2-
title: Filter and Reconcile the Expensify Cards
3-
description: Learn how to reconcile Expensify Card transactions using filters and exports in New Expensify, with tips for both card and payment reconciliation.
4-
keywords: [New Expensify, Expensify Card reconciliation, card filters, export transactions, payment reconciliation, report filters, posted date, settlement matching]
2+
title: View and Reconcile Expensify Card Expenses
3+
description: Learn how to view, verify, and export Expensify Card expenses by matching settlement withdrawals to grouped transactions in Expensify.
4+
keywords: [New Expensify, Expensify Card reconciliation, reconcile Expensify Card withdrawals, view Expensify Card expenses, verify Expensify Card totals, export Expensify Card expenses, withdrawal-based reconciliation, Workspace Admin]
5+
internalScope: Audience is Workspace Admins reconciling Expensify Card activity. Covers the withdrawal-based reconciliation workflow under Reconciliation > Expensify Card. Does not cover company card statement matching, reimbursement reconciliation, or manual export-based reconciliation.
56
---
67

7-
Once employees use the Expensify Card, you can easily view and reconcile their transactions from the Reports page in New Expensify.
8+
# View and Reconcile Expensify Card Expenses
89

10+
Expensify Card reconciliation helps you match each bank withdrawal (also known as a settlement) to the group of card expenses it covers. You can review and verify these withdrawals directly in Expensify.
911

10-
# View Card Transactions by Employee or Company
11-
12-
To view card transactions for a specific employee or for the entire company:
12+
---
1313

14-
1. Go to the **Reports** page.
15-
2. Click **Filters** in the top-right corner.
16-
3. Click **Card** to filter cards:
17-
- Select a feed from **Card feeds** to view expenses from all cards in the feed.
18-
- Select a card from **Individual cards** to view expenses from that card.
14+
## Who Can Reconcile Expensify Card Expenses
1915

20-
This view allows you to review all transactions made on the Expensify Card, grouped by employee or feed.
16+
Workspace Admins can reconcile Expensify Card expenses when the Expensify Card is enabled on the Workspace.
2117

2218
---
2319

24-
# Export Card Transactions by Date
20+
## How to View Expensify Card Withdrawals
2521

26-
You can export transactions from a specific date range to help with monthly reconciliations:
27-
28-
1. From the **Reports** page, select **Expenses** in the left-hand-bar.
29-
2. Select **All** above the expenses list.
30-
3. Click **Filters**.
31-
4. Apply the following filters:
32-
- **Card**: select the applicable card feed.
33-
- **Posted date**: Set the appropriate date range (e.g., `posted<2025-02-28 AND posted>2025-02-01`)
34-
5. Alternatively, you can enter this directly in the search bar (e.g., `type:expense feed:"all in cards" posted<2025-02-28 posted>2025-02-01`)
35-
6. Once filtered, click the **Export** icon in the top-right corner to download the report as a spreadsheet.
22+
1. Click the navigation tabs (on the left on web, on the bottom on mobile) and go to **Reports**.
23+
2. In the **Reconciliation** section, select **Expensify Card**.
24+
3. Choose the **Withdrawn** filter to select a date range (for example, **Last month**).
25+
4. Review the list of withdrawals. Each row represents a single settlement withdrawal from your bank account.
3626

3727
---
3828

39-
# Reconcile Card Payments Manually
29+
## How to View Expenses Included in an Expensify Card Withdrawal
30+
31+
1. From the Expensify Card reconciliation view, locate the withdrawal you want to review.
32+
2. Click the arrow next to the withdrawal amount to expand the row.
33+
3. Review the individual expenses included in that withdrawal.
34+
35+
---
4036

41-
To align exported card expenses with bank withdrawals:
37+
## How to Verify Expensify Card Withdrawal Totals Against Your Bank Statement
4238

43-
- Group the **posted dates** in your spreadsheet by **day** or **month**.
44-
- This allows you to match the totals with the amounts withdrawn from your **settlement account**.
39+
1. On your bank statement, locate Expensify Card settlement charges.
40+
2. From the reconciliation view, find the matching withdrawal.
41+
3. Compare the withdrawal total to the bank charge.
4542

46-
**Note:** This manual method is currently the best way to reconcile card payments. We're working on a more streamlined reconciliation tool, but it's not yet available.
43+
- If the totals match, the withdrawal is reconciled.
44+
- If the totals do not match, expand the withdrawal to review individual expenses and identify discrepancies.
4745

4846
---
4947

50-
# FAQ
48+
## How to Export Expensify Card Expenses
5149

52-
## Where do I find the Card filter?
50+
1. From the Expensify Card reconciliation view, select the expenses you want to export using the checkboxes.
51+
2. Click the **Selected** button that appears above the results.
52+
3. Choose an export template to download the results as a CSV file.
5353

54-
On the **Reports** page:
55-
- Click **Filters**.
56-
- Click into the **Card** section.
57-
- Choose a specific card feed or select all feeds to view all transactions.
54+
---
5855

59-
## Can I reconcile card transactions for a custom date range?
56+
# FAQ
6057

61-
Yes. Use the **Posted date** filter or add the search query directly to the search bar.
58+
## Why is Expensify Card not showing under Reconciliation?
6259

63-
## Is there a reconciliation tool available?
60+
The Expensify Card option only appears when the feature is enabled for your Workspace. If you don’t see it, confirm that the Expensify Card is enabled and active.
6461

65-
Not yet. A more automated reconciliation tool is in development, but for now, we recommend using the manual export and filter method.
62+
## How is Expensify Card reconciliation different from statement matching?
6663

67-
## Where can I learn more about using the Reports page?
64+
Expensify Card reconciliation uses withdrawal-based matching, where each bank withdrawal corresponds to grouped expenses. Company card reconciliation uses statement matching, where transactions are compared against an external card statement.
6865

69-
Check out [Using Reports in New Expensify](https://docs.expensify.com/help/using-reports-in-new-expensify) for more details.
66+
## Why don't I see any withdrawals in the Expensify Card reconciliation view?
7067

68+
If you don’t see any withdrawals, adjust the **Withdrawn** filter and select a different date range.
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
---
2+
title: Reconcile Reimbursements
3+
description: Learn how to match reimbursement payments to bank charges, trace payments to expense reports, and troubleshoot discrepancies with your accounting system.
4+
keywords: [New Expensify, reconcile reimbursements, match reimbursements bank statement, reimbursement payments Expensify, reimbursement mismatch NetSuite QuickBooks, trace reimbursement to expense reports]
5+
internalScope: Audience is Workspace Admins reconciling reimbursement payments. Covers payment-based reconciliation under Reconciliation > Reimbursements. Does not cover Expensify Card reconciliation or company card statement matching.
6+
---
7+
8+
# Reconcile Reimbursements
9+
10+
Reimbursement reconciliation helps you match each reimbursement payment to the bank charge it creates, then trace that payment back to the expense reports it covers. You can review and verify these payments directly in Expensify.
11+
12+
---
13+
14+
## Who Can Reconcile Reimbursements
15+
16+
Workspace Admins can reconcile reimbursements when Payments is enabled on the Workspace with a verified business bank account.
17+
18+
---
19+
20+
## How to View Reimbursements
21+
22+
1. Click the navigation tabs (on the left on web, on the bottom on mobile) and go to **Reports**.
23+
2. In the **Reconciliation** section, select **Reimbursements**.
24+
3. Choose the **Withdrawn** filter to select a date range (for example, **Last month**).
25+
4. Review the list of reimbursements. Each row represents a reimbursement for a single report and shows the total amount.
26+
27+
---
28+
29+
## How to Trace a Reimbursement Payment to Expense Reports
30+
31+
1. From the Reimbursements reconciliation view, locate the payment you want to investigate.
32+
2. Click the arrow next to the reimbursement amount to expand the row.
33+
3. Review each report to confirm the payment matches expected activity.
34+
35+
---
36+
37+
## How to Verify Reimbursement Totals Against Your Bank Statement
38+
39+
1. On your bank statement, locate the reimbursement charges for the period you are reconciling.
40+
2. In the reimbursement reconciliation view, compare each payment total to the corresponding charge on your bank statement.
41+
- If the totals match, the reimbursement is reconciled.
42+
- If a total does not match, expand the reimbursement to review the underlying expenses and identify discrepancies.
43+
44+
---
45+
46+
# FAQ
47+
48+
## How do I identify an unknown bank charge?
49+
50+
If you see a charge on your bank statement that you cannot identify, go to the Reimbursements reconciliation view and filter to the date range when the charge occurred. Match the charge amount to a payment in the list, then expand it to see which report(s) were reimbursed.
51+
52+
## What does a reimbursement payment include?
53+
54+
A single reimbursement payment may cover one expense report. Expanding the payment row shows all the expenses on the report that was reimbursed.
55+
56+
## Why don't I see Reimbursements under Reconciliation?
57+
58+
The Payments option only appears when your workspace has Payments enabled with a verified business bank account. If you don’t see it, confirm that the Payments is enabled and a verified business bank account is connected.
Lines changed: 30 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,88 +1,61 @@
11
---
22
title: Statement Matching and Reconciliation
3-
description: Learn how Workspace Admins can use suggested search to match card statements and reconcile bank activity.
4-
keywords: [statement matching, reconciliation, accounting workflows, Expensify Card, reimbursements, Workspace Admin, bank reconciliation, accounting, suggested search]
3+
description: Learn how to reconcile company card transactions in Expensify against your credit card statement.
4+
keywords: [New Expensify, company cards, statement matching, company card reconciliation, reconciliation, card statement, card feed, statement close date, statement mismatch]
5+
internalScope: Audience is Workspace Admins reconciling third-party company card spend. Covers statement-based reconciliation under Reconciliation > Card statements. Does not cover Expensify Card withdrawal-based reconciliation or reimbursement reconciliation.
56
---
6-
<div id="new-expensify" markdown="1">
7-
8-
Statement matching and reconciliation workflows bring your financial data together in one place so you can confirm card statement totals and reconcile bank withdrawals from within Expensify. These shortcuts help Workspace Admins keep their books accurate and close periods faster.
97

108
# Statement Matching and Reconciliation
119

12-
Suggested search includes shortcuts for **Statement Matching** and **Reconciliation** so Workspace Admins can close the books faster. These workflows let you compare card statements against recorded spend, and reconcile reimbursements or Expensify Card withdrawals with your bank statement — all without leaving Expensify.
10+
Company card reconciliation helps you match the transactions in Expensify to your card statement for a given period. This ensures the totals line up and all card activity is accounted for before you close your books.
1311

1412
---
1513

16-
## Who can access Statement Matching and Reconciliation
17-
Workspace Admins with:
18-
- the Expensify Card, or
19-
- at least one company card feed connected, or
20-
- Reimbursements enabled with a verified business bank account.
21-
22-
---
14+
## Who Can Reconcile Company Cards
2315

24-
## Where to find Statement Matching and Reconciliation
25-
Go to:
26-
- **Reports > Reconciliation > Card statements** — compare card statement totals against recorded spend
27-
- **Reports > Reconciliation > Expensify Card** — match Expensify Card withdrawals with your bank statement
28-
- **Reports > Reconciliation > Reimbursements** — match reimbursement payments with your bank statement
16+
Workspace Admins whose workspace has at least one company card feed connected can reconcile company cards in Expensify.
2917

3018
---
3119

32-
## Statement Matching
33-
Statement Matching helps you verify that all company card transactions in Expensify match your card statement total.
34-
35-
The Statement Matching view shows:
36-
- **Grouped by card** view with subtotals per card
37-
- **Feed filter** if you have more than one card feed
38-
- **Posted filter** with a preset for **Last statement**
39-
- **Total footer** showing the sum of transactions for the statement period
20+
## How to Reconcile Company Card Transactions Against a Statement
4021

41-
**Steps:**
42-
1. Open **Reports > Reconciliation > Card statements**.
43-
2. Apply the **Feed** filter for the correct card account.
44-
3. Use the **Posted** filter with **Last statement**.
45-
4. Compare the **Total** footer with your card statement.
46-
- If totals match, you’re done.
47-
- If not, expand the card groups to find missing or unmatched transactions.
48-
49-
**Note:** Admins can configure a **Statement close date** in card settings. By default, this is the last day of the month, but you can update the statement close date any time.
22+
1. Click the navigation tabs (on the left on web, on the bottom on mobile) and go to **Reports**.
23+
2. In the **Reconciliation** section, select **Card statements**.
24+
3. Choose the **Feed** filter to select the card feed or account you want to reconcile.
25+
4. Choose the **Posted** filter to select the date range that matches your statement period.
26+
5. Review the **Total spend** shown at the bottom of the results and compare it to your card statement total.
27+
- If the totals match, the statement period is reconciled.
28+
- If the totals do not match, expand the card groups to review individual transactions and identify missing expenses.
5029

5130
---
5231

53-
## Reconciliation
54-
Reconciliation helps you match payments and withdrawals to ensure your books reflect reality.
32+
## How to Identify and Fix Discrepancies in Company Card Reconciliation
5533

56-
**Expensify Card Reconciliation**
57-
1. Open **Reports > Reconciliation > Expensify Card**.
58-
2. Group expenses by **Withdrawal ID**, apply the **Withdrawn** filter (e.g. **Last month**), and compare totals per withdrawal against your bank statement.
34+
If the Expensify total does not match your card statement:
5935

60-
**Out-of-pocket Reconciliation**
61-
1. Open **Reports > Reconciliation > Reimbursements**.
62-
2. Group expenses by **Withdrawal ID**, apply the **Withdrawn** filter (e.g. **Last month**), and compare totals per reimbursement against your bank statement.
36+
1. From the reconciliation view, click the arrow next to the total to see individual transactions.
37+
2. Compare each transaction against your card statement line items.
38+
3. Look for missing transactions that appear on your card statement but not in Expensify, or duplicate transactions that may have been recorded twice.
39+
4. Check the posting dates — a transaction may fall into a different statement period in Expensify than on your card statement if posting dates differ.
6340

6441
---
6542

66-
## Multi-currency
67-
If your workspace has multiple currencies:
68-
- Apply the **Group currency** filter to convert all spend into a single currency (for example, GBP).
69-
- This ensures grouped totals match your accounting system’s reporting currency.
43+
## How Multi-Currency Works With Company Card Reconciliation
44+
45+
If your workspace uses multiple currencies, apply the **Group currency** filter to convert all transactions into a single currency. This ensures the grouped totals match your accounting system's reporting currency.
7046

7147
---
7248

7349
# FAQ
7450

75-
## What’s the difference between Statement Matching and Reconciliation?
76-
Statement Matching checks that all card transactions in Expensify equal the card statement total.
77-
Reconciliation ensures payments (card withdrawals or reimbursements) match what cleared your bank account.
51+
## What Is the Difference Between Company Card Reconciliation and Expensify Card Reconciliation?
52+
53+
Company card reconciliation is statement-based and matches Expensify transaction totals to an external card statement. Expensify Card reconciliation is withdrawal-based and matches bank withdrawals to grouped expenses within Expensify. See [View and Reconcile Expensify Card Expenses](/articles/new-expensify/expensify-card/View-and-Reconcile-Expensify-Card-Expenses) for the Expensify Card workflow.
7854

79-
## Can I expand grouped results to see individual transactions?
80-
Yes. You can expand or collapse groups (by card or withdrawal ID) inline to view the underlying transactions.
55+
## Why Don't I See Card Statements Under Reconciliation?
8156

82-
## Why don’t I see the Reconciliation section or some of its options?
83-
The **Reconciliation** section appears only when your workspace has at least one of: company card feeds, Expensify Card, or reimbursements (verified business bank account). Under Reconciliation, only the options that apply to your workspace are shown: **Card statements** (card feeds), **Expensify Card**, and **Reimbursements**.
57+
The Card statements option appears only when your workspace has at least one company card feed connected. If you don’t see it, confirm that a company card feed is set up and active.
8458

85-
## What’s the default Statement close date?
86-
For new card feeds, the last day of the month is automatically selected. You can update the statement close date anytime in **Settings > Workspaces > [Workspace Name] > Company Cards**.
59+
## What Does the Last Statement Filter Show?
8760

88-
</div>
61+
The **Last statement** filter shows transactions posted during the most recent completed statement period, based on your configured statement close date.

src/libs/TransactionUtils/index.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -580,6 +580,21 @@ function hasReceiptSource(transaction: OnyxInputOrEntry<Transaction>): boolean {
580580
return !!transaction?.receipt?.source;
581581
}
582582

583+
/** Check if odometer image has the source file */
584+
function hasOdometerImageSource(transaction: OnyxInputOrEntry<Transaction>, imageType: string): boolean {
585+
const odometerImage = imageType === CONST.IOU.ODOMETER_IMAGE_TYPE.START ? transaction?.comment?.odometerStartImage : transaction?.comment?.odometerEndImage;
586+
if (!odometerImage) {
587+
return false;
588+
}
589+
if (typeof odometerImage === 'string') {
590+
return odometerImage.length > 0;
591+
}
592+
if ('uri' in odometerImage) {
593+
return typeof odometerImage.uri === 'string' && odometerImage.uri.length > 0;
594+
}
595+
return true;
596+
}
597+
583598
function isDemoTransaction(transaction: OnyxInputOrEntry<Transaction>): boolean {
584599
return transaction?.comment?.isDemoTransaction ?? false;
585600
}
@@ -2939,6 +2954,7 @@ export {
29392954
removeTransactionFromDuplicateTransactionViolation,
29402955
getCardName,
29412956
hasReceiptSource,
2957+
hasOdometerImageSource,
29422958
shouldShowAttendees,
29432959
getAllSortedTransactions,
29442960
getFormattedPostedDate,

src/pages/iou/request/step/IOURequestStepConfirmation.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1535,7 +1535,7 @@ function IOURequestStepConfirmation({
15351535
shouldEnableMaxHeight={canUseTouchScreen()}
15361536
testID="IOURequestStepConfirmation"
15371537
>
1538-
<DragAndDropProvider isDisabled={!showReceiptEmptyState}>
1538+
<DragAndDropProvider isDisabled={!showReceiptEmptyState || isOdometerDistanceRequest}>
15391539
<View style={styles.flex1}>
15401540
<HeaderWithBackButton
15411541
title={headerTitle}

0 commit comments

Comments
 (0)