A per-business OAuth connection to QuickBooks Online. Once connected, sending an invoice creates the customer and the invoice in QuickBooks, a contract countersign creates the customer and project there, and payments recorded in QuickBooks flow back to mark the platform invoice paid. Every integration is best-effort — QuickBooks being down never blocks the builder.
Also called: quickbooks · QBO · connect my accounting · sync with my bookkeeper · accounting software
Sending an invoice puts it in your QuickBooks company, once
The invoice is mirrored into your own QuickBooks file with the same document number, due date, memo and total, posted against the item and income account you mapped. The QuickBooks id is stored on the row, so the push never happens twice however many times a send is retried. Entering every invoice once here and again for the bookkeeper stops.
A payment your bookkeeper records in QuickBooks marks the invoice paid here
A signed notification from Intuit fires when an invoice or payment changes, the balance is copied onto the matching invoice — partial or paid in full — and the job moves with it. Absolute values are written rather than increments, so a retried notification cannot apply twice. The two systems stop disagreeing about who has paid.
You can see whether a job actually reached QuickBooks, and retry it
A chip on the job reads Synced, Syncing, or Sync failed with a Retry beside it, so a background operation is not silently succeeding or silently failing. A scheduled sweep independently re-drives rows that errored, were never synced, or were left mid-flight by a killed process, and stops after a capped number of attempts so a genuinely broken one stays visible instead of spinning.
QuickBooks being down costs you a warning, not a blocked invoice
Every QuickBooks step is best-effort. If the push fails, your send to the customer has already succeeded, the error is stored on the invoice, and you get a warning rather than a failure. The platform runs with or without QuickBooks connected, which is also what makes it safe to be mid-switch.
Customers get matched before they get created
The lookup checks the cached QuickBooks id first — no call at all — then the email address, then the display name, which is what catches customers your bookkeeper created directly in QuickBooks. Only then is one created, and a duplicate-name error is recovered by re-querying and using the record that already exists. It also works off the legal details on the estimate form, for a customer with no contact record of their own.
Countersigning a contract puts the job into QuickBooks for job costing
Where your plan and API access allow it, the job becomes a real QuickBooks project whose status moves when work starts. Where they do not, it becomes a sub-customer, and failing that the customer alone. The integration does not need the most expensive plan to be worth having, and signing a contract is never blocked by an accounting failure.
- 1Tokens are stored encrypted (AES-256-GCM) against the organisation and decrypted on read with a 60-second cache.
- 2Access tokens refresh proactively within 60 seconds of expiry, with a single retry on a 401 in case the clocks disagreed.
- 3Sandbox and production are the same code with different hosts and credentials, switched by an environment variable.
- 4The API minor version is pinned so Intuit cannot silently change behaviour on their next release.
- 5Every interaction writes a row to a sync log so a failure can be explained and retried.
Builders already run their books in QuickBooks and their bookkeeper is not switching, but a platform that requires it locks out everyone who does not use it. Everything works with or without QuickBooks connected, and when it is connected a QuickBooks problem surfaces as a warning rather than a failed send — the invoice still reaches the customer. The integration is pinned to one published version of QuickBooks' interface, because otherwise the oldest one gets chosen and behaviour changes without warning on somebody else's release schedule.
- Double data entry between the field system and the books.
- Customer records diverging between two systems.
- An accounting outage blocking day-to-day work.
See it on your own jobs
Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.
or keep browsing features →