Automated Chase Transaction Reconciliation to QuickBooks Online (Make.com)
Streamline bookkeeping by automatically syncing and categorizing Chase bank activity using Plaid and Make.com.
Tools: Chase → QuickBooks Online
Platform: Make.com
Short Answer
A fully automated workflow that captures Chase transactions in real-time via Plaid, cleans the data using a Make.com Data Store 'Mapping Table', and ensures every expense or deposit is perfectly categorized in QuickBooks Online with zero manual effort.
The Problem
Manual entry of bank transactions into QuickBooks is time-consuming and prone to human error, often leading to messy books and missed tax deductions. Bank descriptions are frequently cryptic, making it difficult to categorize expenses consistently without a manual lookup table.
The Outcome
A fully automated workflow that captures Chase transactions in real-time via Plaid, cleans the data using a Make.com Data Store 'Mapping Table', and ensures every expense or deposit is perfectly categorized in QuickBooks Online with zero manual effort.
Step-by-Step Guide
1. **Initialize Scenario**: Log in to Make.com, create a new scenario, and search for the **Plaid** (or Salt Edge) module.
2. **Configure Plaid Trigger**: Add the 'Watch Transactions' module. Use the 'Add' button to create a connection, which will launch the Link flow to authorize your Chase Business credentials. Select the specific Chase account (e.g., Business Checking) to monitor.
3. **Set Up Data Store Mapping**: Add a **Data Store > Get a record** module. Create a store named 'Vendor Mapping'. Use the Payer/Description from Plaid as the 'Key'. This will store your manual overrides (e.g., If Plaid says 'AMZN MKTP', the Data Store returns 'Amazon' and 'Office Supplies').
4. **Add a Router**: Place a Router after the Data Store module to handle 'Categorized' vs. 'Unrecognized' transactions.
5. **Category Filter**: On the top path, set a filter: `Category (from Data Store) EXISTS`. On the bottom path, set `Category (from Data Store) DOES NOT EXIST`.
6. **Create QuickBooks Action**: On the top path, add **QuickBooks Online > Create an Expense**. Map the 'Total Amount' from Plaid (use `abs()` function to ensure positive values for expenses) and the 'Transaction Date'.
7. **Dynamic Mapping**: In the QBO module, map the 'Account' and 'Category' fields using the outputs from your Data Store. For the 'Payment Method', select 'Credit Card' or 'Check' based on the Plaid transaction type.
8. **Duplicate Prevention**: Use the Plaid `Transaction ID` as the 'Private Note' or a custom field in QBO. Before the QBO module, add a **QuickBooks Online > Search for Expenses** module to check if that ID already exists.
9. **Exception Handling**: On the bottom 'Unrecognized' path, add a **Slack > Post a Message** module to notify you that a new transaction style from Chase needs to be added to the Data Store mapping table.
10. **Global Error Handler**: Right-click the QBO module and select 'Add error handler'. Choose the **Break** or **Ignore** directive to prevent the scenario from stopping if the QBO API is temporarily unreachable.
Data Mapping
| QuickBooks Field | Chase/Plaid Source Field | Make.com Transformation/Logic |
| :--- | :--- | :--- |
| **Transaction Date** | `Date` | `parseDate(date; "YYYY-MM-DD")` |
| **Total Amount** | `Amount` | `abs(amount)` (QBO expenses must be positive) |
| **Payment Account** | Hardcoded or Data Store | The QBO Bank Account ID (found in mapping list) |
| **Category/Account** | Data Store: `Category` | `ifempty(DataStore.Category; "Uncategorized")` |
| **Entity (Vendor)** | Data Store: `Vendor Name` | Map to QBO Vendor ID |
| **Description** | `Name` / `Memo` | `trim(Name)` |
| **Doc Number** | `Transaction ID` | Used for duplicate checking |
Gotchas & Failure Modes
- **Operation Consumption**: Plaid 'Watch' triggers poll frequently. If you have low movement, increase the 'Maximum number of results' to save operations by processing in batches.
- **Negative vs. Positive**: Chase/Plaid export expenses as positive numbers and income as negative (or vice versa depending on the API). Use a **Router** with `Amount < 0` to flip logic between 'Create Expense' and 'Create Sales Receipt'.
- **Token Expiry**: Bank connections via Plaid often require 'Re-authentication' every 30-90 days due to MFA/OAuth security. Make.com will send a system email; do not ignore it or the sync will stop.
- **Rate Limiting**: QuickBooks Online API limits are generous but can be hit if you attempt to sync 500+ historical transactions at once. Use a **Sleep** module or process in smaller batches.
Verification Checklist
- [ ] **Test Run**: Use the 'Run Once' button and manually paste a single Transaction JSON from Plaid to verify mapping.
- [ ] **Duplicate Logic**: Run the same transaction twice to ensure the 'Search' module correctly filters out the second attempt.
- [ ] **Data Store Check**: Verify that 'AMZN' in the raw description correctly pulls 'Amazon' from the Data Store.
- [ ] **Direct Link**: Ensure the QBO 'Account ID' in Make.com matches the 'Bank Account' in the QBO Chart of Accounts exactly.
- [ ] **Notification Check**: Deliberately process a transaction not in the Data Store to see if the Slack/Email alert triggers.
Ready to Automate?
Build this automation with Make.com in minutes.