ml-connector
QuickBooks OnlineMicrosoft Dynamics 365 Sales

QuickBooks Online and Microsoft Dynamics 365 Sales integration

QuickBooks Online holds your customer list, invoices, and payment history. Dynamics 365 Sales runs your sales pipeline with opportunities and quotes. Connecting them keeps the same customer data in both places without manual re-entry. New customers in QuickBooks Online appear in Dynamics 365 Sales, and invoice details flow from QuickBooks into the sales record so the sales and finance teams work from the same facts.

How QuickBooks Online works

QuickBooks Online exposes customers, vendors, employees, accounts, classes, bills, invoices, journal entries, and purchase orders through the QuickBooks Online Accounting API over REST HTTPS. All requests must include the realm ID and minor version. Authentication uses OAuth 2.0 Authorization Code flow with server-side handling, where access tokens last one hour and refresh tokens rotate every 24 to 26 hours with a five-year maximum lifetime. QuickBooks Online offers both webhooks for real-time changes and a CDC polling endpoint with thirty-day history. Webhook payloads contain only the entity ID and operation type, so a full record fetch is required after every webhook. No hard delete is supported for customers or accounts; marked inactive instead.

How Microsoft Dynamics 365 Sales works

Microsoft Dynamics 365 Sales provides accounts, contacts, leads, opportunities, quotes, and sales orders through the Dataverse OData v4.0 API. Authentication uses OAuth 2.0 Client Credentials flow via Microsoft Entra ID. The API supports both synchronous and asynchronous webhooks through the Dataverse Event Framework for Create, Update, Delete, and custom actions, with sixty-second timeout and one automatic retry for server errors. Webhook payloads are limited to 256 KB. Dynamics 365 Sales does not include general ledger accounts, vendor records, or accounts payable entries; it is sales-focused and pairs with Dynamics 365 Finance for accounting.

What moves between them

Customer records flow from QuickBooks Online into Dynamics 365 Sales. Each QB customer maps to a Dynamics 365 account record with contact details populated from the QB customer address and name. Invoices issued in QuickBooks Online are read and mapped to sales orders or invoice records in Dynamics 365 Sales so sales staff see the payment history and outstanding balances tied to each customer. The flow runs on a daily schedule but responds immediately to webhook notifications from either system. The integration is read-mostly; ml-connector does not write customer changes back to QuickBooks.

How ml-connector handles it

ml-connector stores OAuth 2.0 credentials encrypted for both systems and refreshes QuickBooks tokens before they expire, monitoring the twenty-four-hour refresh token rotation window so a stale token does not cause an outage. On the QuickBooks side, it polls via the CDC endpoint and subscribes to customer and invoice webhooks, but since QB webhook payloads contain only the entity ID, ml-connector fetches the full record after every webhook fires. For Dynamics 365 Sales, it uses the Client Credentials grant to obtain tokens directly without user interaction and registers webhooks for account and contact changes. Customer names, billing addresses, and contact information are mapped between QB and D365, and QB customer classes can tag accounts for filtering in Dynamics. Invoice dates, amounts, and payment status are read from QB and stored as associated records in D365. ml-connector retries on transient failures with exponential backoff and maintains a full audit trail of every record synced, including timestamps and change summaries.

A real-world example

A mid-sized SaaS company runs QuickBooks Online for invoicing and accounting. Their sales team uses Dynamics 365 Sales to track prospects and manage the pipeline. Before integration, the sales team manually checked QB customer records to verify payment history before closing deals, and finance sent customer master data updates via email to sync contact information. With QuickBooks Online and Dynamics 365 Sales connected, new customers appear in the sales pipeline automatically, and the sales team sees payment status and invoice history directly in the customer record. Finance updates roll through without manual hand-off, and the two teams work from one source of truth on who owes what.

What you can do

  • Sync customers from QuickBooks Online to Dynamics 365 Sales accounts, with name, billing address, and contact details automatically mapped.
  • Display invoice dates, amounts, and payment status in Dynamics 365 Sales tied to each customer account for visibility across sales and finance.
  • Monitor both QuickBooks webhooks and Dynamics 365 webhooks for real-time updates, with polling as a fallback to catch any missed events.
  • Handle QuickBooks OAuth 2.0 token refresh before expiry and client credentials authentication for Dynamics 365 Sales.
  • Audit every customer and invoice sync with timestamps and change tracking, with replay capability if a downstream write fails.

Questions

What customer data moves from QuickBooks Online to Dynamics 365 Sales?
Customer name, billing address, phone, email, and customer class flow from QuickBooks Online into Dynamics 365 Sales as account records. Contact details populate from the QB customer data. Associated invoices are pulled and stored as linked records in D365 so the sales team can see payment history and outstanding amounts without switching systems.
Does ml-connector write changes back to QuickBooks Online?
No. The integration is read-mostly from QuickBooks Online to Dynamics 365 Sales. Customer and invoice data flows from QB into D365, but ml-connector does not write updates back to QB. Changes in Dynamics 365 Sales remain in that system only.
How does ml-connector handle QuickBooks OAuth token expiry and Dynamics 365 authentication?
ml-connector monitors the QuickBooks twenty-four-hour refresh token rotation and obtains new access tokens before they expire, preventing outages from stale credentials. For Dynamics 365 Sales, it uses the OAuth 2.0 Client Credentials flow with Microsoft Entra ID, eliminating the need for user consent. Both credentials are stored encrypted and managed automatically.

Related integrations

Connect QuickBooks Online and Microsoft Dynamics 365 Sales

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

Get started