"Can I get my QuickBooks data into a database?" has two different answers depending on which QuickBooks you run. QuickBooks Online and QuickBooks Desktop share a name and most of the accounting concepts, and almost nothing else about how a program gets at the data. Knowing which side you are on decides the tools, the cost and what is even possible.
Where the data lives
QuickBooks Desktop keeps everything in a company file (.QBW) on a PC or a file server in your office. Programs reach it through the QuickBooks SDK, which has to run on a Windows machine that has QuickBooks installed and can open the file. The data never leaves your network unless you send it somewhere.
QuickBooks Online keeps everything on Intuit's servers. There is no file. Programs reach it through a REST API over the internet, after the company's administrator authorises the app through OAuth 2.0. Your own office network is not involved at all.
How a program reads it
| QuickBooks Desktop | QuickBooks Online | |
|---|---|---|
| Interface | QuickBooks SDK: qbXML requests, or the QBFC library from .NET | REST API, JSON, OAuth 2.0 |
| Runs where | On a Windows machine with QuickBooks installed | Anywhere with internet access |
| Needs QuickBooks running | The file must be openable by the sync user; a service can do this unattended | No |
| Picking up changes | Query by TimeModified, plus a deleted-records query | Query by LastUpdatedTime, or the Change Data Capture endpoint; webhooks for near-real-time |
| Throughput | Limited by the machine and the file; large files are slow | Intuit throttles requests per company per minute; bulk reads are paged |
| ODBC | Third-party drivers (e.g. QODBC) against the file | Third-party drivers over the API |
| Built-in export | Reports and lists to Excel/CSV | Reports and lists to Excel/CSV |
What that means for a database sync
Desktop: local, fast, Windows-bound
A Desktop sync is a Windows program sitting next to the company file. It can read a large file quickly because nothing crosses the internet, it works whether or not your office connection is up, and it can run on a schedule from the system tray of the machine where QuickBooks is open. The constraint is that it is tied to that machine: the sync, QuickBooks and the file all have to be together on one Windows box. This is the environment QBSync is built for: it works alongside the open Desktop company file and keeps a MySQL or SQL Server copy current on a schedule.
Online: anywhere, rate-limited, token-managed
An Online sync is a web-style program that calls Intuit's API with an access token. It can run on any server, including the one hosting the database. The work is in the plumbing: refreshing tokens before they expire, staying within the request limits, paging through large result sets, and mapping JSON entities into tables. The Change Data Capture endpoint makes incremental runs straightforward once that plumbing exists. We build these as custom integrations, sized to the company and the objects that matter.
The objects are mostly the same
Both products have customers, vendors, items, accounts, invoices, bills, payments and journal entries, and both carry a stable ID and a modified timestamp on each record. A database schema designed for one translates to the other with renamed keys (ListID/TxnID on Desktop, numeric Id on Online) and a few field differences. The reports you build on top are the same.
The exceptions worth knowing: Desktop has richer inventory (assemblies, units of measure, sites in Enterprise) and job costing; Online has features that do not exist on Desktop (for example its own payments and some app integrations). If your reporting depends on one of those, it only exists on the side that has it.
Choosing the approach
- Desktop, want reporting or a feed to other systems: a scheduled sync utility on the file server. QBSync does this with a free demo.
- Desktop, need data posted back into QuickBooks: a custom SDK integration.
- Online, any direction: a custom API integration, hosted wherever your database is.
- Both products in the same business (common after a partial migration): a copy of each in one database is often the only place the combined numbers can be seen.