Related articles
Overview
This guide will take you through best practices and nuances related to building and testing Merge's QuickBooks Desktop integration.
Sync frequency
Unlike most integrations, Merge does not dictate when a sync between Merge and QuickBooks Desktop occurs: an Intuit tool called QuickBooks Web Connector does. Merge is only able to sync data with QuickBooks Desktop when the end user's computer is on and both QuickBooks Desktop and QuickBooks Web Connector are running. When the computer is on and the applications are running, Merge will sync with QuickBooks Desktop every minute by default. However, the sync cadence is utlimately determined by the QuickBooks Web Connector installed on the end user's computer and could be updated to a lesser cadence.
QuickBooks Web Connector runs in the background by default when QuickBooks Desktop is open.
If the connected computer is closed for an extended period of time, no data will update in Merge.
POSTing data
As outlined in the "Sync frequency" section above, Merge will not be in constant connection with QuickBooks Desktop. Therefore, to POST data to QuickBooks Desktop, such as Journal Entries, you must utilize Merge's asynchronous POST functionality.
Merge is currently in the process of overhauling our asynchronous POST experience. The current behavior is outlined below, though this experience will be improved by Q1 2025.
To make an asynchronous POST, you simply add the run_async
query parameter to your POST request. Sample cURL below.
curl --location 'https://api.merge.dev/api/accounting/v1/journal-entries?run_async=true' \
--header 'Authorization: ••••••' \
--header 'X-Account-Token: ••••••' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{
"model": {
"memo": "memo here",
"transaction_date": "2026-12-07",
"journal_number": "12345678",
"lines": [
{
"account": "475a009e-3195-43c3-9391-0cf9a2b60d1b",
"net_amount": -2.22,
"description": "a line description",
"tracking_categories": [
"7fc753b9-40b9-4d17-9cfc-e5a31be3dd9f"
]
},
{
"account": "3f672ea5-f600-4809-bbe1-9f01b19638ed",
"net_amount": 2.22,
"description": "another line description",
"tracking_categories": [
"7fc753b9-40b9-4d17-9cfc-e5a31be3dd9f"
]
}
]
}
}'
Merge will respond with a "shell" Journal Entry, with all null properties besides the id
. Sample response body below.
{
"id": "17c4e5d4-4d49-4380-9fea-bd11920bf63a",
"remote_id": null,
"created_at": "2024-10-25T19:49:47.598960Z",
"modified_at": "2024-10-25T19:49:47.598978Z",
"transaction_date": null,
"payments": [],
"applied_payments": [],
"memo": null,
"currency": null,
"exchange_rate": null,
"company": null,
"inclusive_of_tax": null,
"lines": [],
"journal_number": null,
"tracking_categories": [],
"remote_was_deleted": false,
"posting_status": null,
"accounting_period": null,
"remote_created_at": null,
"remote_updated_at": null,
"field_mappings": null,
"remote_data": null
}
The processing of the single Journal Entry is then added to the sync queue. As outlined in the "Sync frequency" section above, Merge syncs with QuickBooks Desktop once per minute, as long as the connection is open. Syncs to create data (such as the above POST Journal Entry example) are added to the front of the queue, meaning they will take place before data retrieval syncs.
After POSTing the Journal Entry, poll the GET /journal-entries/{id}
endpoint to retrieve the Journal Entry once it has been created in QuickBooks Desktop.
Merge Dashboard features
All Merge Dashboard features like Logs, Issues, Field Mappings, etc are still available! Important tips and callouts for some features are listed below.
Logs
You will see a few different requests in the Logs page of a QuickBooks Desktop Linked Account.
authenticate: Authenticates the subsequent requests between Merge and QuickBooks Desktop
sendRequestXML: Outlines the instructions for data retrieval
receiveResponseXML: QuickBooks Desktop's response to Merge. These are typically the most useful.
closeConnection: Terminates the connection's session
Issues
Merge is still able to flag when issues occur! For instance, Merge can flag when the end user's computer is offline, like in the below Issue.