Skip to main content
Connect your New Expensify workspace to QuickBooks Online for seamless expense management and automatic syncing of categories, classes, customers, and tax codes.

Setup

1

Connect to QuickBooks Online

Navigate to Workspace Settings > Accounting and select QuickBooks Online
2

Authenticate

You’ll be redirected to QuickBooks to authorize the connection
3

Configure Import Settings

Choose what data to import from QuickBooks (accounts, classes, customers, locations, taxes)
4

Configure Export Settings

Set up export preferences for out-of-pocket expenses, invoices, and company cards
QuickBooks Online doesn’t support Expensify Taxes. When you connect to QBO, taxes are automatically disabled in your workspace.

Connection Flow

The connection process is handled by the ConnectToQuickbooksOnlineFlow component:
// Source: src/components/ConnectToQuickbooksOnlineFlow/index.tsx
function ConnectToQuickbooksOnlineFlow({policyID}: ConnectToQuickbooksOnlineFlowProps) {
    const {environmentURL} = useEnvironment();

    useEffect(() => {
        // Since QBO doesn't support Taxes, we should disable them from the LHN when connecting to QBO
        PolicyAction.enablePolicyTaxes(policyID, false);
        Link.openLink(getQuickbooksOnlineSetupLink(policyID), environmentURL);
    }, []);

    return null;
}

Import Settings

Configure what data to import from QuickBooks Online:

Chart of Accounts

Import your QuickBooks chart of accounts as expense categories in Expensify.
// Source: src/pages/workspace/accounting/qbo/import/QuickbooksImportPage.tsx
const sections: QBOSectionType[] = [
  {
    description: translate('workspace.accounting.accounts'),
    action: () => Navigation.navigate(ROUTES.POLICY_ACCOUNTING_QUICKBOOKS_ONLINE_CHART_OF_ACCOUNTS.getRoute(policyID)),
    title: translate('workspace.accounting.importAsCategory'),
    subscribedSettings: [CONST.QUICKBOOKS_CONFIG.ENABLE_NEW_CATEGORIES],
  },
  // ...
];

Classes

Import QuickBooks classes as:
  • Tags: For expense-level categorization
  • Report Fields: For 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

Locations

Import QuickBooks locations (if multi-location is enabled) as:
  • Tags: For expense-level tracking
  • Report Fields: For report-level tracking
  • Not Imported: Skip locations
If you have the line items restriction for locations, they must be imported as Report Fields, not Tags.

Taxes

For non-US QuickBooks accounts, you can import tax rates:
// Source: src/pages/workspace/accounting/qbo/import/QuickbooksImportPage.tsx
if (policy?.connections?.quickbooksOnline?.data?.country !== CONST.COUNTRY.US) {
  sections.push({
    description: translate('workspace.accounting.taxes'),
    action: () => Navigation.navigate(ROUTES.POLICY_ACCOUNTING_QUICKBOOKS_ONLINE_TAXES.getRoute(policyID)),
    title: translate(syncTax ? 'workspace.accounting.imported' : 'workspace.accounting.notImported'),
    subscribedSettings: [CONST.QUICKBOOKS_CONFIG.SYNC_TAX],
  });
}

Export Settings

Configure how expenses are exported to QuickBooks Online:

Preferred Exporter

Choose which workspace admin’s credentials are used for exporting:
// Source: src/pages/workspace/accounting/qbo/export/QuickbooksExportConfigurationPage.tsx
{
  description: translate('workspace.accounting.preferredExporter'),
  onPress: () => Navigation.navigate(ROUTES.POLICY_ACCOUNTING_QUICKBOOKS_ONLINE_PREFERRED_EXPORTER.getRoute(policyID)),
  title: qboConfig?.export?.exporter ?? policyOwner,
  subscribedSettings: [CONST.QUICKBOOKS_CONFIG.EXPORT],
}

Export Date

Choose which date to use when exporting expenses:
  • Date Created: When the expense was created
  • Date Exported: When the expense is exported
  • Date Submitted: When the report was submitted

Out-of-Pocket Expenses

Export reimbursable expenses as:
  • Check: For reimbursement tracking
  • Journal Entry: For accounting entries
  • Vendor Bill: For accounts payable

Invoices

Select which QuickBooks account to use for invoice receivables:
// Source: src/pages/workspace/accounting/qbo/export/QuickbooksExportConfigurationPage.tsx
{
  description: translate('workspace.qbo.exportInvoices'),
  onPress: () => Navigation.navigate(ROUTES.POLICY_ACCOUNTING_QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECT.getRoute(policyID)),
  title: qboConfig?.receivableAccount?.name,
  subscribedSettings: [CONST.QUICKBOOKS_CONFIG.RECEIVABLE_ACCOUNT],
}

Travel Invoicing

For workspaces with travel invoicing enabled, configure the payable account:
// Source: src/pages/workspace/accounting/qbo/export/QuickbooksExportConfigurationPage.tsx
...(isTravelInvoicingEnabled
  ? [
      {
        description: translate('workspace.qbo.travelInvoicing'),
        onPress: () => Navigation.navigate(ROUTES.POLICY_ACCOUNTING_QUICKBOOKS_ONLINE_TRAVEL_INVOICING_CONFIGURATION.getRoute(policyID)),
        title: travelPayableAccount?.name,
        subscribedSettings: [CONST.QUICKBOOKS_CONFIG.TRAVEL_INVOICING_VENDOR, CONST.QUICKBOOKS_CONFIG.TRAVEL_INVOICING_PAYABLE_ACCOUNT],
      },
    ]
  : [])

Company Card Expenses

Export company card expenses as:
  • Credit Card: Match to specific cards
  • Debit Card: For debit transactions
  • Vendor Bill: For non-reimbursable bills

Expensify Card

Expensify Card expenses are automatically exported as credit card transactions.

Advanced Settings

Enable automatic syncing to keep data up-to-date between Expensify and QuickBooks:
  • Sync frequency (daily, weekly, monthly)
  • Sync preferences (categories, classes, customers, etc.)
Choose between Cash or Accrual accounting method for exports
Select the default QuickBooks account for invoice exports

Troubleshooting

Common Issues:
  • Connection expired: Re-authenticate with QuickBooks
  • Missing accounts: Ensure accounts are active in QuickBooks
  • Export errors: Check that the preferred exporter has admin access

Best Practices

  1. Regular Syncing: Enable auto-sync for real-time data updates
  2. Consistent Mapping: Use the same export settings across similar workspaces
  3. Review Before Export: Check expense reports before exporting to QuickBooks
  4. Test First: Use a test QuickBooks company file when setting up

Support

For QuickBooks Online integration support, contact Expensify Concierge or visit the QuickBooks integration help center.

Build docs developers (and LLMs) love