Skip to main content
Integrate New Expensify with QuickBooks Desktop using a desktop computer and the Expensify Web Connector for seamless expense syncing.

Requirements

Desktop Required: QuickBooks Desktop integration requires a desktop or laptop computer. Mobile devices are not supported.
Before connecting:
  • QuickBooks Desktop installed on a Windows or Mac computer
  • QuickBooks Desktop opened and company file loaded
  • Stable internet connection
  • Administrator access to QuickBooks Desktop

Setup

1

Navigate to Accounting

Go to Workspace Settings > Accounting and select QuickBooks Desktop
2

Check Device Compatibility

Ensure you’re on a desktop or laptop (not mobile)
3

Get Setup Link

Copy the unique setup link provided by Expensify
4

Install Web Connector

Download and install the Expensify Web Connector on your computer
5

Configure Connection

Open QuickBooks Desktop and authorize the connection

Connection Flow

The QuickBooks Desktop connection flow checks for device compatibility:
// Source: src/components/ConnectToQuickbooksDesktopFlow/index.tsx
const isMobileWeb = isMobile();

function ConnectToQuickbooksDesktopFlow({policyID}: ConnectToQuickbooksDesktopFlowProps) {
    useEffect(() => {
        if (isMobileWeb) {
            Navigation.navigate(ROUTES.POLICY_ACCOUNTING_QUICKBOOKS_DESKTOP_SETUP_REQUIRED_DEVICE_MODAL.getRoute(policyID));
        } else {
            Navigation.navigate(ROUTES.POLICY_ACCOUNTING_QUICKBOOKS_DESKTOP_SETUP_MODAL.getRoute(policyID));
        }
    }, [policyID]);

    return null;
}
If you attempt to connect from a mobile device, you’ll be shown instructions to switch to a desktop computer.
Expensify generates a unique setup link for your workspace:
// Source: src/pages/workspace/accounting/qbd/QuickBooksDesktopSetupPage.tsx
function RequireQuickBooksDesktopModal({route}: RequireQuickBooksDesktopModalProps) {
    const {translate} = useLocalize();
    const {environmentURL} = useEnvironment();
    const policyID: string = route.params.policyID;
    const [codatSetupLink, setCodatSetupLink] = useState<string>('');

    const fetchSetupLink = useCallback(() => {
        getQuickbooksDesktopCodatSetupLink(policyID).then((response) => {
            if (response.jsonCode === CONST.JSON_CODE.SUCCESS) {
                setCodatSetupLink(String(response?.setupUrl ?? ''));
            } else {
                setConnectionError(policyID, CONST.POLICY.CONNECTIONS.NAME.QBD, translate('workspace.qbd.setupPage.setupErrorTitle'));
                setHasError(true);
            }
        });
    }, [policyID, translate]);

    useEffect(() => {
        // Since QBD doesn't support Taxes, we should disable them
        enablePolicyTaxes(policyID, false);
        fetchSetupLink();
    }, []);
}
The setup link is displayed with copy functionality:
// Source: src/pages/workspace/accounting/qbd/QuickBooksDesktopSetupPage.tsx
<View style={[styles.qbdSetupLinkBox, styles.mt5]}>
    {!hasResultOfFetchingSetupLink ? (
        <ActivityIndicator />
    ) : (
        <CopyTextToClipboard
            text={codatSetupLink}
            textStyles={[styles.textSupporting]}
        />
    )}
</View>
Tax Support: QuickBooks Desktop doesn’t support Expensify Taxes. When connecting to QBD, taxes are automatically disabled in your workspace.

Import Settings

Configure what data to import from QuickBooks Desktop:

Chart of Accounts

Import your QuickBooks Desktop chart of accounts as expense categories.

Classes

Import QuickBooks classes as:
  • Tags: Expense-level categorization
  • Report Fields: Report-level categorization
  • Not Imported: Skip classes

Customers

Import QuickBooks customers as:
  • Tags: For expense-level assignment
  • Report Fields: For report-level assignment
  • Not Imported: Skip customers
Customers can be displayed as different field names in Expensify.

Items

Import QuickBooks items for detailed expense tracking:
  • Service items
  • Product items
  • Other charge items

Export Settings

Configure how expenses are exported to QuickBooks Desktop:

Preferred Exporter

Select which workspace admin handles exports to QuickBooks Desktop.

Export Date

Choose the date for QuickBooks transactions:
  • Date Created: Expense creation date
  • Date Exported: When exported to QuickBooks
  • Date Submitted: Report submission date

Out-of-Pocket Expenses

Export reimbursable expenses as:
  • Check: For employee reimbursements
  • Journal Entry: For accounting entries
  • Vendor Bill: For accounts payable
Select the appropriate QuickBooks account for each export type.

Company Card Expenses

Export company card expenses as:
  • Credit Card: Match to specific credit cards
  • Debit Card: For debit transactions
  • Vendor Bill: For non-reimbursable bills
Map each company card to a specific QuickBooks account:
// Source: src/pages/workspace/accounting/qbd/export/QuickbooksDesktopCompanyCardExpenseAccountPage.tsx
// Configure individual card mappings to QuickBooks accounts

Advanced Settings

Configure automatic synchronization between Expensify and QuickBooks Desktop:
  • Sync frequency settings
  • What data to sync automatically
  • Sync error notifications
Important: Your computer with QuickBooks Desktop must be on and the company file open for auto-sync to work.
Choose between Cash or Accrual basis accounting for exports
Configure the Expensify Web Connector:
  • Connection timeout
  • Sync schedule
  • Error handling

Web Connector

The Expensify Web Connector enables communication between Expensify and QuickBooks Desktop:

Installation

  1. Download: Get the Web Connector installer from the setup link
  2. Install: Run the installer on your computer
  3. Configure: Enter your QuickBooks company file information
  4. Authorize: Allow Expensify access in QuickBooks Desktop

Operation

The Web Connector must be running for syncing:
  • Keep QuickBooks Desktop open
  • Ensure the company file is loaded
  • Web Connector runs in the background
  • Manual sync available from the Web Connector interface
Keep Running: The Web Connector must be running on your computer for auto-sync to work. Closing QuickBooks Desktop will pause synchronization.

Card Reconciliation

QuickBooks Desktop integration supports card reconciliation:
// Source: src/pages/workspace/accounting/reconciliation/CardReconciliationQuickbooksDesktopAutoSyncPage.tsx
// Configure automatic card reconciliation settings
  • Automatically reconcile company cards
  • Match transactions between Expensify and QuickBooks
  • Configure reconciliation frequency

Trigger First Sync

After setup, trigger your first sync:
// Source: src/pages/workspace/accounting/qbd/QuickBooksDesktopSetupPage.tsx
<Button
    success
    text={translate('common.done')}
    onPress={() => Navigation.navigate(ROUTES.POLICY_ACCOUNTING_QUICKBOOKS_DESKTOP_TRIGGER_FIRST_SYNC.getRoute(policyID))}
    pressOnEnter
    large
/>
The first sync imports your QuickBooks data into Expensify:
  • Chart of accounts
  • Classes (if enabled)
  • Customers (if enabled)
  • Items (if enabled)
  • Vendors

Troubleshooting

If the connection fails:
  • Verify QuickBooks Desktop is open and company file is loaded
  • Check that Web Connector is running
  • Ensure firewall isn’t blocking the connection
  • Verify you have administrator access to QuickBooks
  • Try restarting QuickBooks Desktop and Web Connector
If syncing stops working:
  • Confirm QuickBooks Desktop is running
  • Check Web Connector status
  • Review error messages in Web Connector log
  • Verify company file isn’t in single-user mode
  • Ensure no other applications are using QuickBooks
If exports fail:
  • Check that accounts and classes exist in QuickBooks
  • Verify the preferred exporter has QuickBooks access
  • Ensure all required fields are filled in Expensify
  • Review QuickBooks Desktop error messages
  • Check that the company file isn’t read-only
If you see a mobile device error:
  • Switch to a desktop or laptop computer
  • QuickBooks Desktop integration doesn’t work on mobile
  • Copy the setup link to access from your desktop

Best Practices

  1. Dedicated Computer: Use a dedicated computer for QuickBooks Desktop and Web Connector
  2. Keep Running: Leave QuickBooks Desktop and Web Connector running during business hours
  3. Regular Backups: Back up your QuickBooks company file regularly
  4. Test First: Test the connection with a QuickBooks backup file first
  5. Monitor Sync: Check the Web Connector log regularly for errors
  6. Network Stability: Ensure stable internet connection for reliable syncing

System Requirements

QuickBooks Desktop Versions

Supported QuickBooks Desktop versions:
  • QuickBooks Desktop Pro
  • QuickBooks Desktop Premier
  • QuickBooks Desktop Enterprise

Operating Systems

  • Windows: Windows 10 or later
  • Mac: macOS 10.14 (Mojave) or later

Network Requirements

  • Stable internet connection (minimum 5 Mbps recommended)
  • Firewall configured to allow Web Connector traffic
  • No proxy restrictions on QuickBooks Desktop communication

Support

For QuickBooks Desktop integration help:
  • Contact Expensify Concierge for setup assistance
  • Check Web Connector logs for detailed error information
  • Refer to QuickBooks Desktop documentation for platform-specific issues
  • Work with your IT department for network and firewall configuration

Build docs developers (and LLMs) love