Automated Expensify Reimbursement Sync to QuickBooks Online (Make.com)

Streamline expense reporting by automatically converting approved Expensify reports into QuickBooks Online Bills with receipt attachments.

Tools: ExpensifyQuickBooks

Platform: Make.com

Short Answer

A fully automated Make.com scenario that triggers upon report approval, performs vendor lookups, creates a Bill in QuickBooks, and attaches the original receipt image, ensuring 100% data accuracy and real-time ledger updates.

The Problem

Manual entry of expense reports into accounting software is prone to human error, delayed financial reporting, and lost receipt documentation. Finance teams often struggle to reconcile employee reimbursements with bank statements while maintaining audit-ready records.

The Outcome

A fully automated Make.com scenario that triggers upon report approval, performs vendor lookups, creates a Bill in QuickBooks, and attaches the original receipt image, ensuring 100% data accuracy and real-time ledger updates.

Step-by-Step Guide

1. **Establish Connections**: In Make.com, create a new scenario. Add the **Expensify** module and connect using your Partner User ID and Secret. Add the **QuickBooks Online** module and authenticate via OAuth2. 2. **Trigger Configuration**: Search for the **Expensify > Watch Reports** module. Set the limit to 10. This module polls for reports based on their status. 3. **Add a Filter**: Click on the line after the trigger. Set a filter where `Status` (from Expensify) is equal to `Approved`. This prevents draft or deleted reports from syncing. 4. **Handle Receipts**: Add an **HTTP > Get a file** module. Map the `Receipt URL` from the Expensify bundle to the URL field. This downloads the binary file into Make.com's memory. 5. **Vendor Management**: Add the **QuickBooks Online > Search for Vendors** module. Search by the `Merchant Name`. Click 'Add an error handler' (right-click module). If no vendor is found, use a **Create a Vendor** module to prevent the scenario from failing. 6. **Map the Bill**: Add the **QuickBooks Online > Create a Bill** module. Map `Vendor ID` from the previous step, `Total Amount` to `Total Amount`, and use the `formatDate()` function: `{{formatDate(now; "YYYY-MM-DD")}}` for the transaction date. 7. **Account Mapping**: In the Bill Lines section, map the Expensify `Category` to your QuickBooks `Account ID`. *Tip: Use a Switch() function if category names don't match exactly.* 8. **Attach Receipt**: Add the **QuickBooks Online > Create an Attachment** module. Set the `Attachable Type` to 'Bill'. Map the `ID` from the 'Create a Bill' step to the `Attachable Ref` field. In the File section, select 'HTTP - Get a file'. 9. **Deduplication**: Before the QBO module, add a **Data Store > Check for record** module using the `Expensify Report ID` as the key to ensure you don't process the same report twice if the webhook re-fires. 10. **Error Handling**: Right-click the QBO modules and select 'Add Error Handler'. Use a **Break** or **Ignore** directive, or send a Slack message to the admin if a mapping fails.