QuickBooks sync
If your accountant works in QuickBooks, you don’t have to move them. LawnLedger can push customers, invoices, payments and items across so the work happens here and the books stay there - and your financial statements on the Reports page come straight from QuickBooks.
Growth and up. An Owner or Admin connects it. Anyone whose role can view accounting can read what synced and what differs; anyone who can manage accounting can run, pause and approve a scheduled sync.
QuickBooks sync and LawnLedger’s own books are mutually exclusive. Running both would produce two sets of numbers with no way to say which is right, so LawnLedger asks you to pick. Choose the one your accountant actually opens.
Connect
Open Integrations
Settings → Connect → Integrations.
Connect QuickBooks
Click Connect on the QuickBooks card. You’ll be sent to Intuit to sign in and approve access, then returned.
Check your chart of accounts and items
Connecting mirrors your QuickBooks chart of accounts into LawnLedger. Under Chart of accounts on the QuickBooks card, set the posting defaults - the account a pushed record uses when it names none - and tell LawnLedger which QuickBooks items your services correspond to. Do this before the first sync - it’s much easier than fixing it after.
Your chart of accounts is mirrored
LawnLedger keeps a copy of your QuickBooks chart of accounts and refreshes it as QuickBooks changes. Every imported bill and expense lands on the QuickBooks account it was posted to, by account rather than by guessing from a name, and every record LawnLedger pushes names a QuickBooks account explicitly.
QuickBooks stays the place to add, rename or deactivate an account. Books → Accounting → Chart of accounts shows the mirror read-only, and Refresh from QuickBooks pulls it again on demand.
Posting defaults
A pushed record that names no account - a service with no income account, an expense line with no account - falls back to a default you set: the income account for services, the expense account of last resort, the bank or card account expenses and bill payments are paid from, and where customer payments deposit. Each expense category can also suggest an account.
A default left unset doesn’t guess. The push fails, the sync log says which default it needed, and it retries once you set one. That’s deliberate: a wrong account posted silently is the harder thing to find later.
What syncs
- Customers - created in QuickBooks when they don’t exist there. Deactivating a customer or a location here makes it inactive in QuickBooks too, and reactivating it brings it back - except while QuickBooks shows a balance for it (see below)
- Invoices - with their line items
- Payments - applied against the matching invoice
- Refunds - a refund receipt against the customer, split across the invoice’s items with their own tax codes, so each income account and the sales tax give back their share. Refunds recorded before October 2026 are not sent
- Credits - an invoice credit becomes a credit memo, split the same way, applied to the invoice it corrects. Credits recorded before this existed are not sent: enter those by hand, as before
- Items/services - linked to your service catalog
- Chart of accounts - mirrored from QuickBooks, refreshed as it changes
- Financial statements - the trial balance, balance sheet, income statement, cash-flow statement and general ledger on the Reports page are QuickBooks’ own, fetched on demand and marked From QuickBooks. The four statements print as QuickBooks lays them out: its groups and subtotals, sub-accounts under their parents, in its order - on screen and in the CSV, PDF and Excel downloads. The general ledger nests its sub-account blocks on screen, and its CSV carries QuickBooks’ with-sub-accounts totals. The Profit & Loss opens on that statement layout; the dashboard layouts are still a click away.
When changes go to QuickBooks
Push changes automatically, under Settings on the QuickBooks card, decides whether LawnLedger sends changes on its own.
- On - what you create and edit goes to QuickBooks within seconds, including an edit to an invoice, estimate or expense you’ve already sent. Bills are the exception: they go when you sync.
- Off - nothing is sent until you ask. What you create and edit waits. The card says how many changes are waiting, and they go when you press Sync All to QuickBooks or a sync button on the Sync tab, or when you turn automatic push back on.
Turning it back on sends what waited. If anything is waiting, LawnLedger tells you how many changes it’s about to send and asks first.
Importing from QuickBooks is separate. This switch doesn’t affect it. So is the scheduled sync: with automatic push on, edits go within seconds and the scheduled sync sends what’s left; with it off, everything waits, and the scheduled sync sends it.
A customer with a balance stays active in QuickBooks
QuickBooks, asked to make a customer inactive while it shows a balance, writes an adjusting entry and marks the open invoices paid - and making the customer active again doesn’t undo that. So LawnLedger doesn’t ask. Deactivating (or deleting) a customer or location here that QuickBooks shows a balance for leaves it active there, marks the record Held: QuickBooks shows a balance under Differences, and tries again on every later sync until the balance is gone. Settle or write off the balance in QuickBooks, and the next sync finishes the job.
What Sync All sends
Sync All sends what’s waiting, and nothing else:
- records QuickBooks has never received
- records whose last push failed
- records changed since they last synced
- changes that waited while automatic push was off
Preview shows the count by type before anything is sent.
A record that’s already in step isn’t sent again - and that includes everything you imported from QuickBooks. When LawnLedger can tell a record was deleted in QuickBooks, Sync All doesn’t create it there again, and the preview says how many it’s holding back.
Sync All works the same whether automatic push is on or off.
Scheduled syncs
Set it once and the two systems are reconciled on a clock, with a report of what happened and where they still disagree. Everything lives on the QuickBooks card, under four tabs - Sync, Differences, History and Settings - with a line above them that always says when the next sync is, or why it’s paused.
Setting the schedule
Under Settings on the QuickBooks card, an Owner or Admin sets:
- How often - every day, every week on a weekday, or every month on a day from the 1st to the 28th - and the time, on your business’s own clock.
- Direction - to QuickBooks only, from QuickBooks only, or both ways. Both ways pulls first, so an edit made in QuickBooks is noticed before anything could overwrite it.
- Bring in new QuickBooks records - off by default. On, each sync creates here the records QuickBooks has and LawnLedger doesn’t: customers, locations, services, vendors, invoices, estimates, payments, expenses, bills, bill payments and sales receipts. Only records that need no placement decision; a customer whose QuickBooks name is an address, or one that looks like a record you already have, is listed for you to place from the import wizard instead. Each sync’s import can be undone from the wizard like any other.
- Ask before sending more than / bringing in more than - the limits above which a sync waits for approval rather than going ahead. 250 sent and 100 brought in unless you change them.
- Email the report - after every sync, only when something needs attention, or never - and whether to attach the PDF, the Excel workbook, or both. With only when something needs attention, your first sync and every Run now are emailed too.
- Who gets the report - picked from your own team. Owners, admins and anyone whose role can view accounting can be picked; others are listed greyed out with the reason. Nobody outside the business, and no typed-in addresses.
Scheduled syncs send changes whether automatic push is on or off.
What a sync does
In order: it checks it still may (the plan, the connection, the company), refreshes the mirrored chart of accounts, brings in what changed in QuickBooks, sends what’s waiting here, compares both books, brings in new records if you asked, and reports.
Each of those has a failsafe:
- More than the limit - the sync stops and waits. The card says so, and Review shows the count; Approve goes ahead, Skip this step finishes the rest, Cancel the sync ends it. An approval nobody gives expires after a day, or an hour before the next sync, whichever is sooner, and the step is skipped.
- The first sync is a baseline. Everything that already differs is listed as open, not as new, no alert is raised, and nothing new is brought in. Records LawnLedger has never sent wait for the second sync, so a first sync can’t create duplicates of records the comparison hasn’t seen yet.
- A record that looks like a duplicate - one LawnLedger has never sent that matches a QuickBooks-only record - is held back and listed for review rather than sent.
- QuickBooks unavailable - the sync waits and tries again; it doesn’t count as a failure.
- Someone is working - a sync never runs over an import, an undo or an analysis in progress. It waits for them, up to two hours.
- Three failed syncs in a row pause the schedule and say so. A lost connection, a plan that no longer includes QuickBooks, or a different QuickBooks company connected pause it too, each with its reason on the card. Reconnecting the same company resumes it.
- A missed time - if the service was down past the scheduled hour, one skipped entry is recorded and the next occurrence runs. There is never a catch-up storm.
Run now on the Sync tab starts a sync from the schedule as it stands, once every ten minutes at most.
The report
Every sync leaves a report under History: what was sent, brought in and created, by type; the differences it found and resolved; and control totals - open invoices and open bills, LawnLedger against QuickBooks, with the gap split into records that disagree, records only QuickBooks has and records only LawnLedger has. View opens it; Download PDF and Download Excel save it. The emailed report carries the counts and a link; names and figures stay in the app.
A sync that needs a person - it failed, it paused the schedule, it’s waiting for approval, it found a new difference that needs action, or the report reached nobody - raises a notification in the bell.
Differences
The Differences tab is a running ledger of where the two books disagree, kept up to date by every sync: a difference opens when a sync first sees it, updates when it changes, resolves when a sync no longer sees it, and reopens if it comes back. Each row names the record, what kind of difference it is, both values, whether it needs attention, and how long it’s been open.
| Difference | Meaning |
|---|---|
| Only in QuickBooks | QuickBooks has it and LawnLedger doesn’t. Don’t bring in marks one you’d rather leave there - deleted here on purpose, say - so it stays out of imports and out of the attention count. Reversible. |
| Only in LawnLedger | Issued here, not yet in QuickBooks. |
| Details differ / Totals differ | Linked, and the two copies disagree. A difference that’s only the tax is noted, not flagged - QuickBooks computes it. |
| Didn’t reach QuickBooks | The last push failed, or a delivery gave up. |
| Changed in QuickBooks | A record QuickBooks owns was edited there; the pull-back is on its way. |
| Kept LawnLedger’s value | An import linked a customer, location, service or vendor that held different values here. LawnLedger kept its own, and the next sync sends them to QuickBooks. |
| Removed in QuickBooks | Deleted, merged or voided there. |
Search finds records by document number, QuickBooks id, or a customer’s number. Customer names are stored encrypted, so a name search doesn’t reach them.
Mapping services to items
By default, linking a service to an existing QuickBooks item is link-only: LawnLedger points at it and doesn’t overwrite it.
That default is deliberate. If your bookkeeper maintains item names, descriptions and prices in QuickBooks, having LawnLedger push its own values over them on every sync would quietly destroy their work. Turn on Manage in QuickBooks for an item only if you want LawnLedger to be the source of truth for it.
Troubleshooting
A customer synced twice. Usually two records that differ slightly (“Bob Smith” vs “Robert Smith”). Merge them in QuickBooks; the link follows.
An invoice won’t sync. Most often an unmapped service or a missing income account. The sync log names the specific record and reason.
A push failed for want of an account. Set the missing posting default under Chart of accounts on the QuickBooks card, or put an account on the record itself, then retry it from the sync log.
An account was deactivated in QuickBooks. The mirror follows within the next sync pass. Anything still pointing at it - a default, a service’s income account - is named in the sync preview, and a push that needs it fails until you pick another.
More changes are waiting than you expected. Every change made while automatic push is off waits, so the number grows until you sync. One more thing can be in it: before the September 2026 update, a Sync All pressed while automatic push was off queued its records and then held them instead of sending them. Those count as waiting now, and the next sync sends them. Preview shows what a sync would send, by type, before you commit to it.
A statement says QuickBooks didn’t answer. The Reports page shows the last copy it fetched, marked as such, for a day; after that it asks you to try again. Reconnecting from Settings → Connect → Integrations fixes an expired connection.
The connection expired. Intuit tokens expire and need periodic re-approval. Reconnect from Settings → Connect → Integrations. A scheduled sync pauses while the connection is down and resumes when the same company is reconnected.
The scheduled sync is waiting for approval. It found more to send or bring in than the limit you set. Open the QuickBooks card, press Review, and approve, skip the step or cancel. Left alone, the step is skipped after a day.
“Scheduled syncs aren’t switched on for this platform yet.” Scheduled syncs are rolled out platform-wide. Until they’re switched on, the card shows this line and no sync is created; your schedule is kept.