Guide · QuickBooks Online API

QuickBooks Online SyncToken conflicts and Duplicate Name Exists errors: the entity model, not the accounting, is what actually breaks integrations

QuickBooks Online's API punishes two very different mistakes the same way: a rejected write. Every entity carries a SyncToken, a version number QBO increments on every change; send an outdated one and the update fails outright with a Stale Object Error, no way to force it through. Separately, QBO enforces one shared name across Customers, Vendors, and Employees, even inactive ones; try to create a customer with a name already used anywhere in that list and you get a Duplicate Name Exists error. Neither is a QBO bug. Both are the entity model working exactly as designed, and both need to be handled in code, not around it.

  • Optimistic Locking, Not a BugSyncToken versions every entity; an outdated one is rejected outright as a Stale Object Error
  • One Name, Three ListsCustomer, Vendor, and Employee share a single namespace, inactive records included
  • InfiPlex Avoids BothSyncTokens are cached and retried on conflict; names are matched by Id, never blindly created into a collision

Why these keep happening

Two mechanics, one outcome: a rejected write

QuickBooks Online's API is built around its accounting data model, and two of that model's core rules cause most of the write failures integrations run into that have nothing to do with accounting logic. One is version control: every entity is locked against being overwritten by a stale copy. The other is a naming rule: three entirely different entity types share one naming space. Both are enforced the same way, a flat rejection of the write, and both are avoidable once an integration is built to expect them.

SyncToken

QuickBooks' optimistic concurrency lock

Every writable QuickBooks Online entity carries a SyncToken, a version number that increments each time the entity is modified. Any update or delete call must include the entity's current SyncToken. If the token sent is older than the one QuickBooks currently has on file, meaning something else, the client's own QBO session, another integration, a second process, modified the record since it was last read, the write is rejected outright as a Stale Object Error. There is no override; the only path forward is to re-fetch the entity, take its current SyncToken, and retry.

This is optimistic locking, not a defect: QuickBooks is explicit that only the latest version of an entity is maintained, and an attempt to modify it with an older SyncToken will fail by design. For any integration syncing on a schedule while the client can also edit records directly in QuickBooks, a stale SyncToken is a routine, expected event, not an edge case, and needs retry logic built in from the start rather than treated as an occasional bug.

Duplicate Name Exists

One namespace for Customer, Vendor, and Employee

QuickBooks Online requires the DisplayName on every Customer, Vendor, and Employee to be unique, not within each list separately, but across all three combined, and that check includes inactive records still sitting in the account. Creating a new Customer named the same as an existing Vendor, even one nobody has touched in years, fails outright with a Duplicate Name Exists error. For a multichannel seller, this shows up in an easy-to-miss way: the same brand name, a marketplace or a channel, ending up needed as both a customer (the source of a sales deposit) and a vendor (the destination of a refund or reimbursement) is enough to trigger it.

Intuit's own developer relations guidance on this error recommends caching the Id and name of every Customer, Vendor, and Employee record, keeping that cache current via Change Data Capture or webhooks, and checking it before ever attempting to create a new one. That is a data-matching problem to solve before the write, not a retry to attempt after it fails.

Errors

What each one actually looks like

Error HTTP / code What it means
Stale Object Error 400 · 5010 The SyncToken sent with an update or delete is older than the one QuickBooks currently has; something else modified the entity first
Duplicate Name Exists Error 400 · 6240 The DisplayName being created or set already belongs to a Customer, Vendor, or Employee, active or inactive

Automation

How InfiPlex handles both

For SyncToken conflicts, InfiPlex reads and stores the SyncToken every time it pulls a QuickBooks Online entity, and if an update collides with a newer version, it automatically retries the request rather than surfacing a failure that needs manual attention.

For name collisions, InfiPlex checks its own synced list of QuickBooks customers for an exact DisplayName match before referencing one on a transaction. When a match exists, InfiPlex references that customer by its QuickBooks Id rather than by name, which carries no collision risk at all. When no match exists, InfiPlex does not attempt to create a new customer on the fly, since a blind create is exactly what risks a Duplicate Name Exists error against an existing Vendor or Employee; the transaction still posts in QuickBooks, simply without a customer reference attached, rather than risk breaking the sync over one unmatched name. In practice that trade-off is what keeps sync running instead of stopping on an error a human then has to go clear by hand.

Program page: QuickBooks Online integration. For rate limits, token expiry, and pagination, see the API limits guide.

Frequently asked

Questions, answered

The questions that come up once you're actually writing to QuickBooks Online, not reading from it.

What causes a QuickBooks Online Stale Object Error (error 5010)?

Sending an update or delete with a SyncToken that's older than the one QuickBooks currently has on file. That happens whenever something else, the client's own QBO session, another integration, a second sync process, modified the entity since it was last read.

Resources

Related pages and references

SyncTokens cached, names matched by Id, sync that keeps running

QuickBooks Online write failures handled before they happen, not cleared by hand after they do. Live in 1–3 business days.

Clearing Stale Object or Duplicate Name errors by hand?

We connect QuickBooks Online for multichannel sellers every week, SyncToken handling and name matching included. Tell us what's breaking and we'll help you find the actual cause. Contact us, email info@infiplex.com, or call 888‑770‑0857.

InfiPlex™ is a trademark of InfiPlex. QuickBooks and QuickBooks Online are trademarks of Intuit Inc. InfiPlex is an independent integration provider and is not endorsed by or affiliated with Intuit. API behavior, error codes, and platform rules are set by Intuit and change; verify current specifics in the QuickBooks Online developer documentation before relying on them. ©2026 InfiPlex. All rights reserved.