Problem
A field-services business ran jobs in a custom web platform but invoiced in QuickBooks by hand. Double entry consumed days each month and the two systems constantly disagreed.
Solution
We built a background synchronization service: OAuth 2.0 connection to QuickBooks Online, two-way sync of customers, invoices and payments, and webhook-driven updates with an idempotent reconciliation job that repairs any drift.
Architecture
A Node.js worker service beside the existing platform, PostgreSQL sync-state tables, a queue for outbound writes with retry and rate-limit handling, and structured audit logging of every mutation.
Challenges
QuickBooks webhooks can arrive late, duplicated or out of order. Idempotency keys and a periodic reconciliation sweep made the sync self-healing rather than alert-driven.
Results
Bookkeeping is now a review task instead of a data-entry task, and the two systems agree by construction.