ServiceTitan + QuickBooks

ServiceTitan to QuickBooks: Sync Not Working

The batch will not export, the Web Connector says offline, or QuickBooks throws an error code nobody in the office can read. Every one of these has a specific cause. This page maps the error you are looking at to what is actually happening and what to change so it stops happening.

Start Here

"The sync is not working" is three different problems

Before you touch a setting, work out which of these three you actually have, because they get fixed in completely different places and treating one like another wastes days.

One: nothing is moving at all

No invoices, no payments, nothing has reached QuickBooks since a specific date. This is almost always the connection itself, not the data. On QuickBooks Desktop that means the Web Connector: it has gone offline, its password has expired, QuickBooks is not open on the machine that holds the company file, or the file has been moved. Nobody has to have done anything wrong for this to happen. It happens on its own.

Two: the export runs and errors out

You hit export, ServiceTitan tries, and QuickBooks refuses the transaction with a code. Error 3140 and error 3100 are the two you will see most, and both are rejections on principle: QuickBooks is being asked to do something structurally invalid, so it declines. The batch either stops dead or posts everything up to the failure and abandons the rest, which is the version that quietly wrecks your month. A partially exported batch looks like a successful one from across the office.

Three: the export succeeds and the data is wrong

This is the dangerous one, because nothing alerts you. Sales tax lands in an income account. Payments pile into Undeposited Funds and never clear. Revenue posts under the wrong business unit. The sync is technically working exactly as configured, and the configuration is wrong. If your batches export cleanly but your numbers still do not agree, you are in this third category and the error log will never help you. Start with why ServiceTitan revenue does not match QuickBooks instead.

Error to Cause to Fix

The errors that stop a ServiceTitan export, and what each one means

QuickBooks error codes are not descriptive by design. Here is what each one is actually telling you and what you change to clear it.

Error or symptomWhat is actually happeningThe fix
QuickBooks error 3140
Invalid reference to a QuickBooks account
QuickBooks reserves certain accounts for a specific job and will not let an invoice line item post to them directly. Error 3140 typically means Sales Tax Payable, Undeposited Funds, Accounts Receivable, or Accounts Payable has been mapped to a GL account that is also assigned to an invoice item. QuickBooks sees an item trying to post into a reserved account and rejects the whole transaction rather than corrupting the subledger.Go through the ServiceTitan account mapping and find every invoice item pointing at a reserved account. Items post to income accounts. Sales tax posts through the QuickBooks sales tax rate, not through an item. Payments post through Undeposited Funds or a clearing account as a payment, not as an item. Repoint the items, then re-export the batch.
QuickBooks error 3100
The name is already in use
A list name the export is trying to create already exists in QuickBooks. The trap is that QuickBooks shares one namespace across Customers, Vendors, Employees, and Other Names, so a customer named "Miller, John" cannot be created if a vendor or employee already holds that exact name. Inactive records still occupy the name. So does a record that differs only in trailing whitespace or punctuation.Search the QuickBooks lists for the exact name, including inactive records, and across all four name lists, not just Customers. Then either merge or rename so there is one record, and make sure ServiceTitan is mapped to that one. The same applies to duplicate item and class names.
Web Connector shows offline
or stops running on schedule
The Web Connector authenticates against a timestamp. If the clock on the server hosting the QuickBooks company file drifts away from the time the Web Connector expects, the connection is refused and the application drops offline. Nobody changed a setting. The server clock simply moved. The other common version is that QuickBooks itself is not open on that machine, or was opened under a different company file or a different Windows user.Sync the server clock to a time source and confirm the time zone matches. Then reopen QuickBooks on the host machine under the correct company file, re-enter the Web Connector password, and run the application manually once to confirm it authenticates. Set the auto-run interval afterward.
Large batch times out
or posts only part of itself
The Web Connector processes an export as a sequence of requests with a timeout. A batch of several hundred invoices, or a first-time catch-up batch covering weeks, can exceed it. The batch does not fail cleanly. It posts everything up to the point it died and abandons the rest, so QuickBooks holds a partial month and ServiceTitan believes the batch went out.Break the export into smaller batches and export daily rather than weekly or monthly. If you are catching up history, go period by period, and after each batch confirm the count of invoices in QuickBooks equals the count in the batch. Never assume a batch that "finished" posted in full.
Batch will not close
technician not assigned to a line item
ServiceTitan will not release a batch when a line item carrying materials has no technician assigned to it. Without a tech on that line, the system cannot attribute who consumed the material, so it cannot cost the job or the inventory, and it blocks rather than exporting a cost it cannot allocate. It is a validation, not a bug, and it usually traces back to a tech adding parts to an invoice they were not assigned to.Open the flagged invoice, assign a technician to every line item that carries materials, and re-run the batch. To stop it recurring, make technician assignment part of the invoice review before the job is closed out, rather than something the office discovers at export time.
Bills and invoices export out of order
no error, but costs land wrong
This one never throws a code. Bills should reach QuickBooks before the invoices that consume the inventory those bills brought in. Export in the wrong order and the material is consumed at a cost QuickBooks does not have yet, so the job is costed against a stale or zero weighted average cost and the margin on that job is wrong permanently.Fix the export sequence: bills first, then invoices, then payments. This is a process rule, not a setting, which is why it survives every software update and why it is one of the first things we standardize in a cleanup.
Trusted by 25+ Contracting Businesses
The Big One

Clearing error 3140 for good, step by step

Most people clear 3140 by repointing the one item that triggered it, then hit it again three weeks later on a different item. This is how you kill the cause instead of the symptom.

1 Understand what QuickBooks is protecting

QuickBooks treats Accounts Receivable, Accounts Payable, Undeposited Funds, and Sales Tax Payable as special accounts with their own subledgers. Their balances are built by transaction type, not by items posting into them. An invoice item that points at one of those accounts would let you write directly into a subledger that QuickBooks maintains itself, which is why it refuses. Once you see it that way, 3140 stops being a mystery error and becomes an obvious rule.

2 Pull the full ServiceTitan account mapping, not just the failing item

Export or screenshot every mapping ServiceTitan holds: invoice items to income accounts, materials to cost accounts, payment types to their accounts, sales tax, adjustments, and any default fallback account. You are auditing the whole map, because if one item was mapped to a reserved account, the person who set it up almost certainly did the same thing more than once.

3 Flag every item pointing at a reserved account

Read down the map and mark anything pointing at Accounts Receivable, Accounts Payable, Undeposited Funds, or Sales Tax Payable from an item mapping. Those are your 3140 generators, present and future. It is common to find sales tax mapped as an item to Sales Tax Payable, which feels logical and is exactly the thing QuickBooks will not allow.

4 Repoint each one to where it actually belongs

Revenue items go to income accounts. Material items go to cost of goods sold. Sales tax comes out of the item list entirely and is handled by a QuickBooks sales tax rate posting to Sales Tax Payable, which is the only thing allowed to write there. Payments route through Undeposited Funds or, better, a merchant clearing account, as payments rather than as items. If you are unsure where something belongs, that is a chart of accounts question, and it is worth answering properly before you export another batch.

5 Re-export the failed batch and verify the counts

Run the batch again. Then check that the number of invoices that landed in QuickBooks matches the number in the batch, and that the batch total equals the sum of what posted. A batch that errored once may have posted part of itself before it stopped, and re-exporting a batch that already partially posted is how you end up with duplicate invoices and revenue that reads double.

6 Check what the previous failures already did to your books

This is the step everyone skips. If 3140 has been failing for weeks, some batches never posted and some posted partially, so your QuickBooks revenue is short by an amount nobody has quantified. Go back through the export log, list every batch that errored, and reconcile each one against what is actually in QuickBooks. Clearing the error today does not retrieve the invoices it blocked last month.

Desktop Only

The Web Connector, and why it drops offline on its own

If you are on QuickBooks Desktop, the Web Connector is the piece of software that actually moves your data, and it is the most fragile link in the chain. It is not a cloud service. It is an application running on the machine or the hosted server that holds your company file, and it only works while that machine is on, QuickBooks is open, and the right company file is loaded.

Clock skew is the cause nobody guesses

The Web Connector authenticates using a timestamp. When the clock on the server drifts away from the time the Web Connector expects, authentication fails and the application shows as offline. From the office it looks like the integration broke. Nothing broke. The server clock moved, often after a restart, a hosted environment migration, or a daylight saving transition. Sync the server clock to a reliable time source, confirm the time zone, then re-authenticate and run the application manually once.

The other reliable offenders

  • QuickBooks is closed. The company file has to be open on the host machine for the connector to talk to it. A server that reboots overnight and does not reopen QuickBooks stops your sync silently.
  • The password expired or was reset. The Web Connector holds a stored password. A QuickBooks update, a Windows user change, or a password policy can invalidate it, and it fails quietly until someone re-enters it.
  • The company file moved or was renamed. The connector is bound to a specific file path. Move the file, restore a backup to a new location, or migrate to a hosting provider, and the binding breaks.
  • Someone is in single-user mode. Certain operations need the file available, and a user sitting in single-user mode can block the connector from doing its job.
  • The batch is simply too big. Timeouts are not a failure of the connector so much as a limit of it. Smaller, more frequent batches are the answer, not a bigger timeout.

None of this applies if you are on QuickBooks Online, where the connection is a cloud integration and these failure modes disappear. It is one of the honest arguments for moving, and it is worth weighing seriously if the Web Connector has become a weekly chore. We cover the tradeoffs on our ServiceTitan and QuickBooks Desktop integration page, including when staying on Desktop is still the right call.

No Error, Still Broken

When the export succeeds and the data is still wrong

These four never throw a code. The batch turns green, everyone moves on, and the damage accumulates quietly until someone tries to close the year.

Sales tax posting into income

If tax exports as an invoice line item mapped to an income account rather than as a QuickBooks tax rate, the export is perfectly valid and your P&L is overstated by every dollar of tax you collect. Meanwhile the QuickBooks Sales Tax Liability report shows nothing owed, so it cannot be used to file. It is the most common configuration error we find, and it never errors out.

Payments landing in Undeposited Funds forever

ServiceTitan sends payments to Undeposited Funds by default. That is correct behavior. What breaks is when nobody ever makes the matching deposit in QuickBooks, so the balance only grows, and the real bank deposit gets categorized separately. Now the same money is in the books twice. See Undeposited Funds that never clear.

Payments arriving before their invoices

When the card processor auto-batches and the payment exports before its invoice reaches QuickBooks, the payment has nothing to apply against and sits as an unapplied credit. Accounts receivable goes negative. Nothing errors, because a payment on account is a legitimate transaction. See negative accounts receivable.

Business units falling back to a default

When an invoice item has no business unit mapping, the export does not stop. It uses whatever default is configured, or none. Your company total stays right and every departmental P&L becomes fiction. The only way to see it is to run a P&L by class and look at what is sitting in Unclassified.

Trusted by 25+ Contracting Businesses
Before You Export

The pre-export discipline that prevents most of these

Errors are cheap to prevent and expensive to unwind after the fact. This is the routine that keeps batches clean.

Export in the right order every time: bills first, then invoices, then payments, so inventory is costed against a bill QuickBooks has already seen.
Export daily rather than weekly. Small batches do not time out, and a failure costs you one day of cleanup instead of one month.
Confirm every material line item has a technician assigned before the invoice is closed out, not when the batch refuses to release.
After every export, check that the invoice count and dollar total in QuickBooks equal the batch. A batch that says it finished can still have posted only part of itself.
Never re-export a batch that failed partway without first checking what already posted, or you will create duplicate invoices and double your revenue.
Keep the QuickBooks name lists clean, including inactive records, since Customers, Vendors, Employees and Other Names share a single namespace and a collision throws error 3100.
On Desktop, confirm the Web Connector ran, rather than assuming it did. A connector that has been offline for nine days looks exactly like one that had nothing to send.
Treat a failed export as an incident with a follow-up, not a nuisance to be dismissed. Every unretried failure is revenue that is not in your books.
Honest Scope

When the sync is not the problem

There is a point where fixing errors one at a time stops being worth it. If you are clearing the same 3140 every month, hitting 3100 on names your team keeps recreating, and re-exporting batches you are not sure already posted, the sync is not broken. The setup underneath it is, and the sync is just where the damage becomes visible.

What that looks like in practice: an account mapping that was configured once by whoever happened to be available, a chart of accounts that was never built for a home services company, no merchant clearing account, sales tax handled as an item, no business unit mapping, and a QuickBooks file carrying months of partially posted batches nobody reconciled. Clearing today's error does nothing about any of it, and the numbers stay wrong regardless of how green the export log looks.

That is the work our ServiceTitan and QuickBooks cleanup does: rebuild the mapping, fix the chart of accounts, reconcile every batch that failed or posted partially, and get the two systems agreeing on a number you can trust. If the connection itself was never set up correctly in the first place, start with the ServiceTitan and QuickBooks integration, and browse the ServiceTitan resource hub for the rest.

One honest limit worth stating plainly. We can fix the configuration in days. We cannot conjure back invoices a failed export never posted without going back through the export log batch by batch and reconciling each one, and on a file that has been erroring for a year that is real work with a real cost. It is still cheaper than a year of decisions made on wrong numbers.

Still stuck? Send us the error.

Tell us what the export log says and what your setup looks like. We will tell you exactly what is being rejected and why, and whether it is a five-minute mapping change or a symptom of something structural.

FinTruction works with HVAC, plumbing, electrical, and roofing companies running ServiceTitan across the United States, from Coppell, Texas. The Audit is free and you keep the findings either way.

Get a Free Sync Audit
Answers

Frequently Asked Questions

What causes QuickBooks error 3140 on a ServiceTitan export?

Error 3140 typically means Sales Tax Payable, Undeposited Funds, Accounts Receivable, or Accounts Payable has been mapped to a GL account that is also assigned to an invoice item. QuickBooks reserves those accounts for its own subledgers and will not let an item post directly into them, so it rejects the transaction. The fix is to audit the ServiceTitan account mapping and repoint every item at a normal income or cost account, with sales tax handled by a QuickBooks tax rate rather than an item.

What does QuickBooks error 3100 mean?

It means the list name the export is trying to create already exists in QuickBooks. The catch is that QuickBooks shares one namespace across Customers, Vendors, Employees, and Other Names, so a customer cannot be created if a vendor or employee already holds that exact name. Inactive records still hold their names. Search all four name lists, including inactive records, merge or rename the duplicate, and make sure ServiceTitan is mapped to the surviving record.

Why does the QuickBooks Web Connector keep going offline?

The most common cause nobody guesses is clock skew. The Web Connector authenticates against a timestamp, so if the clock on the server holding your company file drifts from what the connector expects, authentication fails and it drops offline. Other reliable causes are QuickBooks not being open on the host machine, an expired stored password, and the company file being moved or renamed. Sync the server clock, reopen the correct company file, re-enter the password, and run it manually once.

Why does a large ServiceTitan batch fail to export?

The Web Connector processes the export as a sequence of requests with a timeout, and a batch of several hundred invoices or a catch-up batch spanning weeks can exceed it. The dangerous part is that it does not fail cleanly: it posts what it managed before it died and abandons the rest, so QuickBooks holds a partial month while ServiceTitan believes the batch went out. Export daily in small batches and verify the invoice count in QuickBooks after each one.

Why will ServiceTitan not let me close a batch with materials on it?

ServiceTitan blocks the batch when a line item carrying materials has no technician assigned. Without a tech on the line it cannot attribute who consumed the material, so it cannot cost the job or relieve inventory, and it refuses rather than exporting a cost it cannot allocate. Assign a technician to every material line item on the flagged invoice. To stop it recurring, make technician assignment part of the invoice review before the job is closed out.

Does the order of the export actually matter?

Yes, and this one never throws an error. Bills should export before the invoices that consume the inventory those bills brought in. Export out of order and the material is relieved at a cost QuickBooks has not seen yet, so the job is costed against a stale or zero weighted average cost and the margin on that job is permanently wrong. The correct sequence is bills, then invoices, then payments.

Is it safe to just re-export a batch that failed?

Not without checking first. A batch that errors partway often posts everything up to the failure point before it stops. Re-export it blindly and you duplicate every invoice that already landed, which doubles that revenue in QuickBooks. Always compare what is actually in QuickBooks against the batch contents before you re-run it, and reconcile the count and the dollar total.

My exports run clean but my numbers still do not match. Why?

Because a successful export only means the transaction was structurally valid, not that it was configured correctly. Sales tax posting into an income account, payments piling into Undeposited Funds, payments arriving ahead of their invoices, and business units falling back to a default all export without a single error. If your batches are green and your books are still wrong, the error log will never help you. The problem is in the mapping.

Would moving to QuickBooks Online get rid of these errors?

It removes the entire class of Web Connector problems, since clock skew, stored passwords, the company file path, and QuickBooks needing to be open on a host machine all stop being your concern. It does not fix mapping errors, sales tax configuration, or Undeposited Funds discipline, because those are setup decisions rather than platform limits. Moving is a real option worth weighing, but only after you have decided what your chart of accounts and mapping should actually look like.

Proof

What Contracting Owners Say

Real results from contractors we have helped untangle their books and systems.

Rated 5.0 on Google

Trusted by 25+ construction businesses nationwide

Procore Listed on theProcore Network

They didn’t just record transactions and call it a day. They built a custom chart of accounts around how a remodeling company actually runs, did a full catch-up on years of bookkeeping inside QuickBooks Online, and now stay on top of my monthly bookkeeping and payroll. Every step, they broke it down in simple terms instead of burying me in accountant talk.

Oniel Campbell, Founder of Moonz Contracting
Oniel Campbell
Moonz Contracting Founder

FinTruction rebuilt the whole thing from the ground up, with real job costing, work in progress, and retainage. They didn’t just hand me reports and disappear; they walked me through my numbers until I understood them.

Carl Moore, Owner of Hearth & Haus
Carl Moore
Hearth & Haus Owner
Dalton Mayberry, Owner of ProperCoat Painting
Sahil and his team handle the bookkeeping and job costing for my painting business. They cleaned up my books and set up integrations that give me accurate, timely job costing with solid weekly data. Reliable, detailed, and genuinely invested in getting the numbers right.
Dalton Mayberry
ProperCoat Painting
Owner

FinTruction is the only bookkeeping team we’ve found that truly understands construction accounting and WIP reporting. They aligned our income and costs across 21 jobs and gave us full, monthly transparency. Fast, accurate, and an indispensable partner.

John Wesley Sebastian, President of B&B Concrete
John Wesley Sebastian
B&B Concrete President

When I came to FinTruction I had no financial structure. No job costing, no WIP tracking, books behind. They did a full cleanup and rebuilt job costing and WIP tracking in QuickBooks. Now I know what’s billed, what’s owed, and where every job stands.

Clay Pearson, Owner of C. Pearson Contracting Corp
Clay Pearson
C. Pearson Contracting Corp Owner
Client testimonial

Hear it straight from a contractor we work with

A couple of minutes from a contractor we support, sharing what working with FinTruction has been like and what changed once their numbers finally made sense.

  • An owner sharing their honest experience
  • From guessing to numbers they actually trust
  • Why they recommend us to other contractors
Read more reviews

Stop clearing the same error every month

Send us your export log and your account mapping. We will tell you what is being rejected, why it keeps coming back, and what the failed batches have already done to your books. No obligation.

Trusted by 25+ contracting companies Response within 24 hours Free Audit, no obligation
Start here

Get your ServiceTitan books audited, free

Tell us what is broken between ServiceTitan and your books. We will look at your actual data and show you exactly where the numbers diverge, at no cost.

Add your name so we know who we are talking to.
Add your company name.
Add a valid email so we can send your report.
Add a number we can reach you on.
Pick the option that fits your business.
Tell us what is going wrong so we know where to look.

We read every submission and reach out if your books are a good fit for the Audit.