The problem
The client's business system kept its accounting in step with QuickBooks Desktop through the Web Connector. As their customers moved to QuickBooks Online, that integration became a dead end. The replacement had to be exact: a missed or duplicated record in accounting is a real problem for a real business.
What we built
A .NET 10 service that keeps the SQL Server system and QuickBooks Online in sync, unattended.
- Authentication. Intuit OAuth 2.0 with automatic refresh of rotating tokens, so the sync keeps running without anyone logging in.
- Two-way lists. Customers/Jobs, Vendors, Employees, Items, Classes and Accounts sync both ways using NeedsPush/NeedsPull flags.
- One-way transactions. Purchase Orders, Time Activities, Journal Entries and Inventory Adjustments push to QuickBooks. Records missing required fields are held back instead of failing the run.
Designed to never skip a record
Sync is incremental, but the checkpoint only moves forward when a run has zero failures, with a safety buffer on top. If anything fails, the next run picks it up again.
Matching existing data
Existing QuickBooks records had to be linked to the business system without creating duplicates. Duplicate detection and Customer → Job → Phase hierarchy resolution linked 192 of 194 records automatically, with none left unresolved.
Built for operations
Configurable sync interval, an on-demand trigger from the legacy VB6 app, per-entity toggles, two admin web screens, per-run summaries and exit codes for monitoring. Delivered in three client-approved milestones.