Sync Shopify Orders to QuickBooks Online Sales Receipts (Make.com)
Automate real-time revenue recognition and inventory reconciliation using Make.com's visual workflow builder.
Tools: Shopify → QuickBooks
Platform: Make.com
Short Answer
Every Shopify order is automatically mirrored in QuickBooks Online as a Sales Receipt. This ensures 100% accurate tax reporting, automated customer creation, and real-time reconciliation of 'Undeposited Funds' with your Shopify Payouts.
The Problem
Manual entry of Shopify orders into QuickBooks is time-consuming and prone to human error, leading to mismatched financial statements and inaccurate inventory valuations. Without automation, businesses struggle to maintain a real-time view of their Profit & Loss statement.
The Outcome
Every Shopify order is automatically mirrored in QuickBooks Online as a Sales Receipt. This ensures 100% accurate tax reporting, automated customer creation, and real-time reconciliation of 'Undeposited Funds' with your Shopify Payouts.
Step-by-Step Guide
1. **Create Scenario**: Log into Make.com, click 'Create a new scenario', and name it 'Shopify to QuickBooks Sync'.
2. **Configure Shopify Trigger**: Add the **Shopify > Watch Orders** module. Create a Webhook, select 'Paid' as the Status, and 'Created' as the Trigger Event. Authenticate your Shopify store via OAuth.
3. **Handle Customer Searching**: Add the **QuickBooks Online > Search for Customers** module. Map the Shopify `Email` field to the QuickBooks `Email Address` filter. Set the limit to 1.
4. **Add Router for Logic**: Insert a **Router** module. Create two paths based on the Customer search result.
5. **Create/Identify Customer**: On Path A, set a filter: `QuickBooks Customer ID` 'Does not exist'. Add the **QuickBooks Online > Create a Customer** module, mapping Shopify's `First Name`, `Last Name`, and `Billing Address`.
6. **Map Line Items (Iterator/Aggregator)**: If your orders have multiple items, use the **Iterator** module on the Shopify `Line Items` array. Follow it with an **Array Aggregator** to format the data into the specific JSON structure QuickBooks requires for 'Line Items'.
7. **Generate Sales Receipt**: Add the **QuickBooks Online > Create a Sales Receipt** module. Map the `Customer ID` from the previous steps. Map the aggregated line items, `Total Tax`, and `Shipping` to their respective fields.
8. **Account Mapping**: Ensure the 'Deposit To' field in the QuickBooks module points to 'Undeposited Funds' or your 'Shopify Clearing Account' to facilitate easy bank reconciliation.
9. **Add Error Handler**: Right-click the QuickBooks module and select 'Add error handler'. Choose the **Break** directive to store the execution and allow for manual retries if the QuickBooks API is down.
Data Mapping
| Shopify Field | Make.com Mapping Logic | QuickBooks Field | Requirement |
| :--- | :--- | :--- | :--- |
| `Email` | `{{1.email}}` | `BillEmail` | **Required** |
| `Order Number` | `Shopify-{{1.order_number}}` | `DocNumber` | **Required** |
| `Line Items[]` | `map(line_items; product_id)` | `Line: SalesItemLineDetail` | **Required** |
| `Total Price` | `{{1.total_price}}` | `TotalAmt` | **Required** |
| `Created At` | `formatDate(1.created_at; YYYY-MM-DD)` | `TxnDate` | **Required** |
| `Province Code` | `{{1.billing_address.province_code}}` | `TaxCodeRef` | Optional |
| `Customer Name` | `{{1.first_name}} {{1.last_name}}` | `DisplayName` | **Required** |
Gotchas & Failure Modes
• **Rate Limiting**: QuickBooks Online API has strict throttling. If processing bulk historical orders, use the 'Sleep' module or set the scenario 'Max number of cycles' to 1 and run it on a schedule.
• **SKU Mismatches**: The 'Item Name' in QuickBooks must match the 'SKU' from Shopify exactly. If they don't, use a Make.com **Data Store** or a 'Switch' function to map Shopify SKUs to QuickBooks Item IDs.
• **Tax Rounding**: QuickBooks and Shopify calculate tax differently at the decimal level. Use the `round()` function in Make.com to ensure the `TotalAmt` matches to the cent, or QuickBooks will reject the bundle.
• **Multiple Currencies**: Ensure the 'Global Suite' in QuickBooks is active if Shopify orders come in different currencies; otherwise, the module will return a 400 error.
Verification Checklist
- [ ] **Run Once Test**: Use the 'Run once' button and trigger a single 'Paid' order in Shopify.
- [ ] **Check Execution Log**: Verify in the Make.com execution log that the bundle passed through the Router correctly.
- [ ] **QuickBooks Audit**: Open QuickBooks Online and search for the Sales Receipt by the Shopify Order Number.
- [ ] **Customer Deduplication**: Run the scenario twice for the same customer to ensure a duplicate customer record is NOT created.
- [ ] **Line Item Verification**: Confirm that the subtotal, tax, and shipping flow into the correct QuickBooks Chart of Accounts.
Ready to Automate?
Build this automation with Make.com in minutes.