Short Answer
A fully automated workflow that captures Dext data, validates vendor existence in QuickBooks, creates the transaction, and attaches the original source document, ensuring 100% compliance and zero manual data entry.
The Problem
Manual entry of receipts leads to human error and missing audit trails. Native integrations often lack the flexibility to handle missing vendors dynamically or route high-value expenses for approval before they hit the general ledger.
The Outcome
A fully automated workflow that captures Dext data, validates vendor existence in QuickBooks, creates the transaction, and attaches the original source document, ensuring 100% compliance and zero manual data entry.
Step-by-Step Guide
1. **Create Scenario**: Log in to Make.com and create a new scenario. Name it 'Dext to QBO Audit-Ready Sync'.
2. **Configure Dext Trigger**: Add the 'Dext - Watch Items' module. Set the filter to 'Published' or 'Archived' to ensure only reviewed items move forward. Establish a connection using your Dext API credentials.
3. **Add QuickBooks Search Module**: Add 'QuickBooks Online - Search for Objects'. Set the Object Type to 'Vendor'. Use the logic: `DisplayName = {{1.SupplierName}}` (from Dext) to check for duplicates.
4. **Implement Router & Filter**: Add a Router. **Route 1 (Create Vendor)**: Set a filter `ID (from Search) Does not exist`. Add the 'QuickBooks Online - Create a Vendor' module. **Route 2 (Proceed)**: Set the filter to `ID (from Search) Exists` OR use the output of the 'Create Vendor' module.
5. **Create Transaction**: Add 'QuickBooks Online - Create an Expense' (for paid items) or 'Create a Bill' (for unpaid items). Map `Total Amount`, `Transaction Date`, and `Account ID` using Make's mapping tool.
6. **Fetch File**: Add an 'HTTP - Get a File' module. Map the `Image URL` or `Direct Download URL` from the Dext module output to this module.
7. **Attach Document**: Add 'QuickBooks Online - Upload an Attachment'. Map the `Parent ID` to the ID produced by the 'Create Expense/Bill' module in Step 5 and the file content to the HTTP module output.
8. **Error Handling**: Right-click the QuickBooks modules and select 'Add Error Handler'. Use a 'Break' or 'Rollback' directive to prevent partial data entry if the attachment fails.
9. **Final Update**: Add 'Dext - Update an Item' module at the end to change the item's status to 'Archived' in Dext, preventing the scenario from re-processing the same item.
Data Mapping
| Dext Field | QBO Mapping | Transformation / Function | Required? |
| :--- | :--- | :--- | :--- |
| `Supplier Name` | `VendorRef (Value)` | `{{ifempty(1.vendor_id; 2.vendor_id)}}` | Yes |
| `Total Amount` | `TotalAmt` | `{{parseNumber(1.amount)}}` | Yes |
| `Date` | `TxnDate` | `{{formatDate(1.date; "YYYY-MM-DD")}}` | Yes |
| `Category` | `AccountRef` | `{{1.category_id}}` (via Mapping Tab) | Yes |
| `Currency` | `CurrencyRef` | `{{upper(1.currency)}}` | No |
| `Description` | `PrivateNote` | `Dext Ref: {{1.id}} - {{1.note}}` | No |
| `Image URL` | `File Content` | Handled via HTTP Module | Yes (for Audit) |
Gotchas & Failure Modes
* **Rate Limiting**: QuickBooks Online API has strict rate limits. If processing in bulk, use the 'Sleep' module or set the scenario to run at 'Longer intervals' (e.g., every 60 minutes).
* **Currency Mapping**: Ensure the Currency in Dext matches the ISO code in QBO (e.g., USD, GBP). If QBO Multi-currency is off, any mismatch will cause an error.
* **SyncTokens**: If using 'Update' modules, always 'Get/Search' the record first to retrieve the latest `SyncToken`, otherwise Make will return a 'Stale Object' error.
* **Attachment Size**: Ensure the file fetched from Dext does not exceed QBO’s 25MB attachment limit.
Verification Checklist
- [ ] **Trigger Check**: Use 'Run Once' and upload a test receipt to Dext. Ensure the webhook or polling picks up the 'Published' item.
- [ ] **Vendor Logic**: Confirm that if a Vendor name is slightly different, the Search module handles the error or the Filter correctly triggers 'Create Vendor'.
- [ ] **Data Formatting**: Check the Make.com execution logs (bubbles) to ensure `Total Amount` is being passed as a number, not a string.
- [ ] **Attachment Verification**: Log into the QuickBooks sandbox/live account and verify the PDF/Image appears in the 'Attachments' section of the specific transaction.
- [ ] **Status Loop**: Ensure the item in Dext is successfully moved to 'Archived' or 'Processed' to avoid duplicate Triggers on the next run.
Ready to Automate?
Build this automation with Make.com in minutes.