Services
Custom software developmentUmbraco developmentWeb developmentCRM developmentERP developmentAI & LLM integration.NET development & modernizationE-commerce developmentIntegrations & automationCloud & DevOpsMaintenance, support & project rescueDedicated teams & white-label
Our Work
Case studiesProducts
About Blog Contact
QuickBooks integration

QuickBooks integration for custom ERP, CRM and order systems.

Your operations run in your own system. Your books live in QuickBooks. We build the two-way sync between them, with rules for who owns each record, so finance and operations see the same numbers without typing anything twice.

Step one

Online or Desktop decides the whole design.

The two products look alike to an accountant. To an integration they are different systems, with different APIs, hosting and ways to detect change.

Online

QuickBooks Online

Your case if: Your books are in QuickBooks Online, or a move to Online is planned.
  • REST Accounting API with JSON, connected per company through OAuth 2.0.
  • Your sync can run anywhere, because it calls Intuit’s cloud.
  • Webhooks and Change Data Capture tell you what changed in QuickBooks.
  • A request ID on each write makes retries safe.
Desktop

QuickBooks Desktop

Your case if: Finance runs QuickBooks Desktop on a Windows machine or local network.
  • No cloud REST API. Integrations use the Desktop SDK with qbXML messages.
  • A web-based system reaches it through the QuickBooks Web Connector, which pulls queued requests on a schedule.
  • There are no webhooks, so the sync queries for modified records itself.
  • Intuit stopped selling new US subscriptions to Desktop Pro Plus, Premier Plus and Mac Plus after September 30, 2024. Enterprise remains on sale.
What we have synced

Records that reach the books without retyping.

Each item is from a production ERP we built or support. The QuickBooks Online API also covers bills, payments and other entities, which we add when your ownership table calls for them.

Vendors and purchase orders

Purchase orders are created where the buying happens and reach QuickBooks with their vendor attached. Each purchase order links directly to its vendor in the ERP.

See it in ERP system · synced automatically through the QuickBooks API

Invoices, in both directions

Invoices sync two ways, with tax and tariff logic applied and invoice date mismatches handled by agreed rules instead of by hand.

See it in One Motion ERP · two-way invoice sync in production

Customers with their QuickBooks ID

Each customer profile in the ERP stores its QuickBooks ID next to accounting, order and shipping tabs, so records are matched by ID, never by name.

See it in ERP system · customer profile with QuickBooks ID

Items, remapped when IDs change

When an item ID changes on the QuickBooks side, new invoice lines use the new ID automatically. Vendor fields are mapped the same way.

See it in One Motion ERP · automatic item ID remapping
Ownership rules

Two-way does not mean both sides edit everything.

Most broken syncs fail on an unwritten rule, not on an API call. Before we write code, we agree with your finance team which system creates each record type and which one only reads it.

The split on the right is a typical starting point for a manufacturing or distribution ERP, not a fixed template. If a record owned by the ERP is edited in QuickBooks, the sync flags it for review instead of copying the change back or overwriting it.

  1. Chart of accounts, tax codes, terms · owned by QuickBooks

    ERP reads and caches them. Accountants manage them.

  2. Customers · owned by ERP

    Pushed to QuickBooks. The QuickBooks ID is stored on the ERP customer.

  3. Vendors · owned by One side, chosen once

    If purchasing lives in the ERP, the ERP owns vendors.

  4. Items and products · owned by ERP

    Each ERP item maps to a QuickBooks Item ID.

  5. Purchase orders and invoices · owned by ERP

    QuickBooks is the ledger. Edits after posting go through the ERP.

  6. Payments · owned by QuickBooks

    Payment status flows back for order and credit views.

How the sync is built

The parts that make finance trust it.

A QuickBooks sync is small in lines of code and large in edge cases. These are the pieces we build in, with the project or the guide section where each one is described. Our two-way sync guide has the full detail and Intuit sources.

IDs

A mapping that survives renames

Every synced record keeps both IDs: a QuickBooks ID column on the ERP entity, or a mapping table when there are many entity types or companies. Merges repoint the mapping. Deletes are marked, not erased.

ExampleERP system
QuickBooks ID on each customer
Retries

Writes that are safe to repeat

Intuit’s API accepts a requestid on each write and returns the original response if the same ID arrives again. We generate it once per outbound job and reuse it on every retry, so a network error never creates a second invoice.

idempotency section
Conflicts

Stale edits routed by owner

Each QuickBooks entity carries a SyncToken. If it changed since we read it, the update fails with error 5010. ERP-owned fields are re-read and reapplied. Anything else goes to a review queue with both values and the rule that failed.

invoice dates, tax and tariff rules
Jobs

Sync in Hangfire background jobs

The user saves to the ERP and moves on. Background jobs talk to QuickBooks, one queue per company, with a shared rate limiter and backoff on HTTP 429. Validation errors are not retried; they go to the error queue.

sync runs as Hangfire jobs
Changes

Webhooks plus a daily sweep

Webhooks report changes quickly but can be missed or arrive out of order. Intuit recommends a Change Data Capture call back to the last processed event and a daily CDC sweep. CDC covers the last 30 days.

webhooks and CDC
Proof

Reconciliation finance can read

A report compares counts and totals per day in both systems, lists records with no QuickBooks ID and shows open errors by age. Rounding happens once, at a defined step, and is tested to the cent.

reports validated against accounting
Client story · manufacturing and shipping

One Motion ERP: invoices where a rounding error is a real problem.

The business buys raw materials, runs production orders and ships goods. Before One Motion ERP, inventory, purchasing, shipping, accounting and reporting lived in separate tools. OSKI develops the platform and supports it in production, including the QuickBooks link.

  • Weights move between LB, KG, STON and MTON, and invoices, reports and material certificates all depend on the conversion.
  • The sync handles invoice date mismatches, tax and tariff rules, vendor field mapping, duplicates and automatic item ID remapping.
  • Sync runs as Hangfire jobs, kept reliable while concurrency errors, API failures and wrong quantities were found and fixed.
  • Excel and PDF reports have rounding, ordering and filters validated against accounting figures.
  • The stated outcome: the ERP and QuickBooks hold the same financial figures.
.NET 7ASP.NET Core Web APIHangfireReactMySQLQuickBooks SDKEPPlusiText7
Read the One Motion ERP case
Purchase order summary grid with date filters and totals
Customer list next to a customer profile with QuickBooks ID and accounting tabs
Client story · inventory and orders

One ERP for stock, orders and purchasing, with QuickBooks as the ledger.

Inventory, orders and accounting each lived in a different place, and every retyped record was a chance for an error. Managers could not see order status or stock without checking several systems.

OSKI built one platform on .NET 8, React and MySQL. Through the QuickBooks API, purchase orders and vendor data sync automatically. Each purchase order links to its vendor, and customer profiles keep their QuickBooks ID.

20%faster order fulfillment
40%faster report generation
30%automation efficiency, with far less manual entry
Read the ERP system case
QuickBooks Online facts that shape the design

Limits that shape every sync.

Intuit throttles the REST API per company and app and returns HTTP 429 when you exceed it, with advice to wait 60 seconds before retrying.

Cost is part of the design too. Under the Intuit App Partner Program, Core calls, mostly data-in such as creating invoices or vendors, are unmetered. CorePlus calls, mostly data-out such as reads, queries and reports, are metered. So we read only what changed and cache reference data.

Sources: Intuit Developer, API call limits and throttles, OAuth 2.0 and App Partner Program FAQ, as summarized in our October 2026 guide.

500requests per minute per company (realm ID)
10requests per second per company and app
60 minlifetime of an OAuth access token
100 daysrolling refresh token expiry, within a five-year maximum
30

days of history covered by Change Data Capture. That is why a daily sweep runs next to the webhooks: a missed event is caught the same day, not at month end.

How a QuickBooks project runs

Rules on paper before the first sync.

Accounting sync bugs are expensive because they surface late, often at month end. We settle ownership, mapping and rounding with your finance team first, then build.

Related: ERP development when the operations system itself needs building, integrations and automation for other tools, e-commerce development for order-driven businesses, and Amazon SP-API integration when sales start on Amazon.

C# / .NETASP.NET CoreHangfireEntity Framework CoreMySQLReactQuickBooks APIQuickBooks SDKEPPlusiText7
  1. Confirm the QuickBooks product

    Online or Desktop, which edition, how many companies, and whether a move is planned. This decides the API, the hosting and the change detection.

  2. Write the ownership table

    Record by record, which system creates it and which one only reads it. Finance signs it off, and the code enforces it.

  3. Map fields, taxes and IDs

    Vendor fields, tax codes, item IDs, units and rounding. We test real invoice samples from your business in a sandbox company.

  4. Build the jobs and the error queue

    Background sync, retries, conflict routing and a screen where finance can fix a missing tax code and press retry.

  5. Go live with reconciliation on

    The daily comparison report runs from day one. We support the sync in production and extend it as rules change.

QuickBooks FAQ

QuickBooks integration questions we hear most.

Anything missing? Send us your question and an engineer will answer, usually within one business day.

Contact us
Can a custom ERP or CRM have a two-way sync with QuickBooks?+

Yes. On One Motion ERP we maintain a two-way QuickBooks invoice sync that runs in production, with vendor mapping, tax logic and automatic item ID remapping. Two-way works when each record type has one owner and data flows in a defined direction per field, instead of both systems editing everything.

Do you integrate with QuickBooks Online or QuickBooks Desktop?+

Both are possible, but they are built differently. Online has a REST API with OAuth 2.0, webhooks and Change Data Capture. Desktop has no cloud REST API: integrations use the Desktop SDK with qbXML, and a web-based system connects through the QuickBooks Web Connector. If you are on Desktop now, we ask whether a move to Online is planned before building.

Which records can you sync?+

In our projects: vendors and purchase orders, invoices in both directions, customers matched by QuickBooks ID, and items with automatic ID remapping. The QuickBooks Online API also supports bills, payments and other entities, so the list is set per project in the ownership table you approve.

What happens when someone edits the same record in both systems?+

The sync does not silently overwrite. QuickBooks returns a stale object error when a record changed after we read it. If the field is owned by the ERP, the job re-reads and reapplies only that field. Otherwise the item goes to a review queue that shows the ERP value, the QuickBooks value and the rule that failed.

Will the QuickBooks API limits slow us down?+

Intuit documents 500 requests per minute per company and 10 per second per company and app. That is enough for most ERPs if sync is queued and rate-limited, reads only what changed and caches reference data such as accounts and tax codes. Under the Intuit App Partner Program, data-out calls are metered, so efficient reads also keep costs down.

We already have a QuickBooks integration that keeps breaking. Can you fix it?+

Yes. On One Motion ERP we maintain and extend an existing integration and fix live issues as they surface, from concurrency errors and API failures to wrong quantities and invoice calculations, while new change requests keep shipping.

How long does a QuickBooks integration take?+

It depends on the QuickBooks product, how many record types sync and in which direction, how complex your tax and unit rules are, and whether the ERP side exists yet. After we agree the ownership table and review your data, you get a fixed estimate for the work.

Start a project

Tell us which system runs your operations and which QuickBooks you use. We will map what should sync and who owns it.

A spec, a Figma file or three paragraphs is enough to start.

  1. First reply · from an engineer, not a sales rep
  2. 30-min call · with Roman, our CTO, to clarify scope
  3. After the call · a written proposal with plan, team and price
Roman Oleksuk
Roman Oleksuk, CTOPrefer to talk? Pick a slot in Roman's calendar
We reply from a human mailbox. No newsletters. Your brief stays under NDA on request. We use your details only to reply; see our privacy policy.