ml-connector
QuickBooks DesktopMicrosoft Power BI

QuickBooks Desktop and Microsoft Power BI integration

QuickBooks Desktop stores your company's vendors, bills, invoices, and general ledger entries on a Windows machine. Microsoft Power BI is where your finance team analyzes that data and shares insights across the business. Connecting the two means your Microsoft Power BI reports always show the latest QuickBooks Desktop transactions without manual export-and-load cycles. New invoices, bills paid, and journal entries in QuickBooks Desktop appear in Microsoft Power BI within minutes of the QBWC poll cycle.

How QuickBooks Desktop works

QuickBooks Desktop is a Windows-installed accounting system that exposes vendors, bills, invoices, purchase orders, journal entries, accounts, and customers through QBXML queries. Integration requires a customer-hosted QBWC polling agent that calls your remote SOAP web service at an interval you specify (minimum 1 minute, typical 5 to 15 minutes). Each QBWC poll authenticates via a session-token handshake where the agent provides username and password and your service returns a session ticket, then executes QBXML queries within that session. QuickBooks Desktop has no webhooks, so all change detection uses ModifiedDateRangeFilter queries to find new or changed transactions since the last poll. QuickBooks Desktop must remain open and logged into the company file for QBWC to process requests.

How Microsoft Power BI works

Microsoft Power BI is a cloud business analytics service that accepts data via REST API. The service uses OAuth2 client credentials (service principal) for authentication. Your service obtains a bearer token from the Microsoft Azure endpoint, includes it on every API call, and posts rows into Power BI push datasets. The push dataset must have a defined table schema with column names and data types before rows can be inserted. Tokens expire after one hour and must be refreshed by re-requesting new credentials. Microsoft Power BI does not send webhooks or notifications outbound; it is a read-mostly analytics sink, not a bidirectional source.

What moves between them

Financial records flow one direction: from QuickBooks Desktop into Microsoft Power BI. On each QBWC poll cycle, ml-connector executes QBXML queries (Vendor, Bill, Invoice, BillPaymentCheck, JournalEntry, Account) and receives XML results. These records are transformed into rows matching the Microsoft Power BI push dataset schema and posted via REST API. The poll interval is configured in QBWC and is typically 5 to 15 minutes; ml-connector does not poll QuickBooks Desktop directly, but instead receives and processes the queries initiated by QBWC from your configured service URL.

How ml-connector handles it

ml-connector runs a SOAP web service that receives QBWC poll requests from the customer's Windows QuickBooks Desktop machine. When QBWC calls ml-connector, it provides a username and password; ml-connector authenticates and returns a session ticket, then QBWC executes QBXML queries within that session. ml-connector translates QBXML responses into structured data, maps QuickBooks Desktop account codes and transaction types to Microsoft Power BI column names, and POSTs the rows to the Microsoft Power BI push dataset endpoint using a service principal bearer token. Because Microsoft Power BI bearer tokens expire after one hour, ml-connector refreshes the token before it expires and includes it on every POST. If a Microsoft Power BI push fails (network error, rate limit, dataset offline), ml-connector retries with exponential backoff and logs the failure in the audit trail so it can be replayed once Microsoft Power BI is responsive. QBWC operates sequentially and polls your configured SOAP endpoint on a minimum interval of 1 minute; ml-connector queues requests and responds within the 60-second QBXML timeout. Because QuickBooks Desktop pro and premier editions cap list entries at 14,500, ml-connector paginates large vendor or customer queries to avoid timeouts.

A real-world example

A mid-sized accounting and bookkeeping firm manages QuickBooks Desktop for 30 small and mid-market client businesses. Each client file runs on a separate Windows machine with QBWC polling every 15 minutes. Before the integration, the firm's finance analyst exported monthly trial balances and transaction reports from each client's QuickBooks Desktop file by hand, loaded them into Excel, consolidated them, and uploaded consolidated summaries to Microsoft Power BI once a month. With QuickBooks Desktop and Microsoft Power BI connected, each QBWC poll automatically pushes that client's vendors, bills, invoices, and journal entries into a dedicated Microsoft Power BI dataset. The analyst now opens Microsoft Power BI and sees consolidated transaction activity across all clients updated every 15 minutes, eliminating the manual export cycle and enabling real-time variance analysis and cash flow visibility.

What you can do

  • Push QuickBooks Desktop vendors, bills, invoices, and journal entries into Microsoft Power BI datasets on every QBWC poll cycle.
  • Authenticate QBWC with a session-token handshake and Microsoft Power BI with service principal OAuth2 credentials.
  • Translate QuickBooks Desktop chart-of-accounts codes and QBXML entity fields into Microsoft Power BI dataset column schemas.
  • Handle QBWC 60-second request timeouts and Microsoft Power BI one-hour token expiry with automatic refresh and retry logic.
  • Maintain a full audit trail of every poll, transformation, and push so failed records can be replayed without duplication.

Questions

How does QuickBooks Desktop data get to Microsoft Power BI if there are no webhooks?
ml-connector runs a SOAP web service that receives poll requests from QBWC (the customer-hosted agent on the Windows machine running QuickBooks Desktop). When QBWC calls ml-connector on its configured schedule, ml-connector returns the QBXML query results, transforms them, and immediately pushes the rows to Microsoft Power BI via REST API. The poll interval is set in QBWC (typically 5 to 15 minutes) and is customer-controlled.
What happens if Microsoft Power BI is unavailable during a poll cycle?
ml-connector logs the failure in the audit trail and retries with exponential backoff. If a push fails (network error, rate limit, or dataset offline), the record is queued for replay and retried the next time the endpoint is responsive. The full audit trail means no records are lost, and you can manually replay specific transactions if needed.
Does ml-connector support multi-company QuickBooks Desktop setups?
QuickBooks Desktop and QBWC operate one company file per session. To integrate multiple QuickBooks Desktop company files with Microsoft Power BI, each file requires its own QBWC registration and ml-connector service registration. ml-connector can push results from all registrations into the same or separate Microsoft Power BI datasets depending on your reporting structure.

Related integrations

Connect QuickBooks Desktop and Microsoft Power BI

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

Get started