Retrieve the current version of the object (e.g., Invoice) via a GET request; record the Id and SyncToken values from the response.
Construct a POST request to https://quickbooks.api.intuit.com/v3/company/{realmId}/{entity} with the query parameter operation=update.
In the request body, include only the Id, SyncToken, and the fields you want to change; omit unchanged fields to perform a sparse (partial) update.
Set the sparse field to true at the top level of the request body to signal a sparse update; without it, omitted fields may be cleared.
On success, the response returns the full updated object with a new incremented SyncToken; store this new token for subsequent operations.
If you receive a 400 with a stale object error, re-fetch the resource to obtain the latest SyncToken before retrying.
Known gotchas
Omitting sparse:true when doing a partial update can cause the API to treat missing fields as intentional deletions, corrupting the record.
SyncTokens are per-object and per-company; a token from one company or one object type cannot be used for another.
Concurrent updates from multiple integrations can cause SyncToken conflicts; implement exponential back-off and re-fetch logic for high-throughput scenarios.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp