Manual bookkeeping
Eliminated
Sync reliability
Automatic retry & reconciliation
Delivery
3 weeks, fixed scope

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.