ml-connector
QuickBooks DesktopAnaplan

QuickBooks Desktop and Anaplan integration

QuickBooks Desktop runs the accounting and the general ledger. Anaplan runs the budgeting, forecasting, and workforce planning that sets the numbers. Connecting the two lets approved plan figures from Anaplan post into QuickBooks Desktop as journal entries without re-keying, and lets the ledger actuals flow back into the planning model for variance analysis. ml-connector exports the agreed values from Anaplan, formats them for QuickBooks, and submits them through the QuickBooks Web Connector on a schedule you control. Because both systems are pull-only, the connector drives every step by polling rather than waiting for a push.

How QuickBooks Desktop works

QuickBooks Desktop is a locally installed product with no hosted REST endpoint. Integration uses the QuickBooks Web Connector, a free Windows agent that the customer installs and points at a SOAP service through an imported .qwc file. The connector exchanges QBXML request and response messages for vendors, bills, accounts, journal entries, customers, and invoices, using Add, Query, Mod, Del, and Void operations. Authentication is a SOAP handshake: the Web Connector calls authenticate with a username and password and receives a session ticket for the cycle. There are no webhooks, so changes are detected by polling with a ModifiedDateRangeFilter, and QuickBooks must be running with the company file open.

How Anaplan works

Anaplan exposes its data through the Integration API v2.0 over REST with JSON and CSV payloads. It is a planning platform, so it has no native invoice, vendor, or GL account objects; everything lives inside a workspace and model as lists, modules, and line items. Reads and writes run as asynchronous bulk export and import tasks: you start a named action, receive a task ID, poll until it reports COMPLETE, then download the file chunks for an export. Authentication is Basic auth or OAuth2 against the Anaplan auth service, with tokens that last 35 minutes. The tenant is capped at 600 requests per minute, and a model is locked while a task runs.

What moves between them

The main flow runs from Anaplan into QuickBooks Desktop. ml-connector runs an Anaplan export action to pull approved budget and forecast values, then posts them into QuickBooks as journal entries through JournalEntryAddRq, mapped to the correct chart of accounts and classes. Actuals move the other direction: account balances and posted transactions are read from QuickBooks by polling and imported into the Anaplan planning model so plan and actual sit side by side. Reference data such as accounts and cost centers is aligned so each posting and each imported figure lands on a valid dimension on both sides. The cadence follows your planning cycle, typically after each budget approval and at month-end close.

How ml-connector handles it

ml-connector stores both credential sets encrypted. For Anaplan it holds the Basic auth or OAuth2 token and refreshes it before the 35-minute expiry. For QuickBooks it runs the Web Connector SOAP service: it returns the session ticket from authenticate, hands QBXML request blobs to the agent through sendRequestXML, and processes the responses, all while QuickBooks is open on the Windows machine. It maps Anaplan list members to QuickBooks accounts and classes up front, because Anaplan has no native chart of accounts and a JournalEntryAddRq must reference accounts that already exist in the company file. QuickBooks has no idempotency key, so before posting a journal entry the connector queries by reference number to avoid duplicates and stores the returned TxnID; any Mod re-queries for the current EditSequence first. Because neither side pushes events, it polls the Anaplan export task to COMPLETE with backoff, and detects QuickBooks changes with a ModifiedDateRangeFilter on each Web Connector cycle, paging large reads with the QBXML iterator. It serializes work against a single Anaplan model since a model locks during a task, backs off on the Anaplan 600-per-minute rate limit, and keeps each QBXML request under the roughly 60-second QuickBooks timeout. Every record carries a full audit trail and can be replayed if a step fails.

A real-world example

A mid-sized professional services firm with around 250 staff keeps its books in QuickBooks Desktop Enterprise on a Windows server and builds its annual budget and rolling forecast in Anaplan. Before the integration, the FP&A team approved the budget in Anaplan, exported it to a spreadsheet, and a bookkeeper keyed the opening budget and monthly accruals into QuickBooks by hand, then exported a trial balance each month and re-typed the actuals back into Anaplan to compare against plan. With QuickBooks Desktop and Anaplan connected, each approved plan version posts into QuickBooks as journal entries allocated to the right accounts and classes, and the ledger actuals import back into the model automatically. The double re-keying disappears and budget versus actual stays current without manual work.

What you can do

  • Post approved budget and forecast figures from Anaplan into QuickBooks Desktop as journal entries against the correct accounts and classes.
  • Read QuickBooks account balances and posted transactions and import them into the Anaplan model as actuals for variance analysis.
  • Map Anaplan list members to QuickBooks accounts and cost centers, since Anaplan has no native chart of accounts.
  • Bridge the Anaplan token auth and the QuickBooks Web Connector SOAP handshake, driving each sync cycle while QuickBooks is open.
  • Query before posting to avoid duplicate journal entries and back off on Anaplan rate limits, with a full audit trail on every record.

Questions

Which direction does data move between QuickBooks Desktop and Anaplan?
Both directions. Approved budget and forecast values are exported from Anaplan and posted into QuickBooks Desktop as journal entries, while account balances and posted transactions are read from QuickBooks and imported back into the Anaplan model as actuals. This keeps the ledger aligned with the approved plan and keeps plan-versus-actual current in the planning model.
Does Anaplan hold invoices or GL accounts that can post to QuickBooks Desktop?
No. Anaplan is a planning platform and has no native invoice, vendor, or GL account objects. Its data lives in a workspace and model as lists, modules, and line items, so ml-connector exports the planned values and maps them to QuickBooks accounts and classes that already exist in the company file before it posts a journal entry.
How does the integration reach QuickBooks Desktop when it has no cloud API or webhooks?
QuickBooks Desktop has no hosted API, so ml-connector works through the QuickBooks Web Connector, a Windows agent the customer installs that polls a SOAP service and exchanges QBXML while QuickBooks is open. Because neither QuickBooks nor Anaplan pushes events, the connector polls the Anaplan export task to completion and detects QuickBooks changes with a modified-date filter on each Web Connector sync cycle.

Related integrations

Connect QuickBooks Desktop and Anaplan

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started