ml-connector
QuickBooks DesktopWooCommerce

QuickBooks Desktop and WooCommerce integration

QuickBooks Desktop is your local accounting system. WooCommerce is your online store. Connecting the two keeps your sales records in sync without manual data entry. New orders from WooCommerce create invoices in QuickBooks Desktop, and customers created in your store appear as customers in your accounting records. ml-connector handles the SOAP endpoint that your QBWC agent calls, translates WooCommerce REST data into QBXML, and manages the authentication handshake.

How QuickBooks Desktop works

QuickBooks Desktop is a Windows-installed accounting package that integrates via a locally-hosted QBWC agent (Web Connector). The agent polls a remote SOAP web service on a configurable interval, typically every 5 to 15 minutes. Authentication uses a session-token handshake: the QBWC agent calls your SOAP authenticate() method with its username and password, and your service returns a session ticket (GUID) for all subsequent calls. Requests and responses are XML-wrapped in QBXML format and transmitted over HTTPS. QuickBooks must be running and logged into the company file for QBWC to process requests. Large queries must be paginated due to the 60-second QBXML request timeout.

How WooCommerce works

WooCommerce is an open-source e-commerce plugin for WordPress deployed on each customer's own domain. It exposes orders, customers, refunds, products, and other commerce data through a REST API at https://<customer-domain>/wp-json/wc/v3/. Authentication uses API Key pairs (Consumer Key and Consumer Secret) sent via HTTP Basic Auth. WooCommerce also supports webhooks for push notifications on order.created, order.updated, order.deleted, customer.created, customer.updated, and customer.deleted events. Each WooCommerce store is self-hosted, so the base URL and API credentials are unique per customer. Webhooks are disabled if the endpoint returns 5 consecutive non-2xx responses and must be manually re-enabled.

What moves between them

Orders and customers flow from WooCommerce into QuickBooks Desktop. When a customer places an order in WooCommerce, ml-connector reads the order details via WooCommerce REST API (either by webhook notification or scheduled polling) and creates a corresponding invoice in QuickBooks Desktop, mapped to a matching customer record. If the customer does not yet exist in QuickBooks, ml-connector creates it first. Refunds in WooCommerce can similarly trigger credit memos in QuickBooks. The flow is one direction: WooCommerce to QuickBooks. QuickBooks data does not flow back to WooCommerce.

How ml-connector handles it

ml-connector runs a SOAP endpoint that your QBWC agent calls on its polling schedule. When QBWC connects, ml-connector completes the session-token handshake and returns a ticket. On each subsequent call, QBWC provides the ticket, and ml-connector uses it to validate the session. ml-connector fetches pending WooCommerce orders and customers from the WooCommerce REST API using the consumer key and secret, then translates them into QBXML AddInvoiceRq and AddCustomerRq requests. Each request includes the current EditSequence to prevent concurrent edit conflicts. Because QBWC operates sequentially and times out after 60 seconds, large queries are paginated. ml-connector stores WooCommerce API credentials encrypted and retries failed requests if QBWC is temporarily unavailable. Every transaction is logged with timestamps and outcomes so you can replay a failed sync manually.

A real-world example

A small online retailer runs WooCommerce on their own WordPress site to sell products directly to customers. They use QuickBooks Desktop for accounting and monthly bookkeeping. Before the integration, every time an order came in, the shop owner manually created an invoice in QuickBooks with the customer name, items, and totals from WooCommerce, a process that took 5 to 10 minutes per order and was error-prone. With QuickBooks Desktop and WooCommerce connected, orders are automatically synced to QuickBooks invoices on the store owner's QBWC polling schedule (typically every 15 minutes), and customer records are created automatically. Month-end reconciliation is faster because all sales are already recorded.

What you can do

  • Sync WooCommerce orders to QuickBooks Desktop invoices, with customer data automatically created if not found.
  • Map WooCommerce order line items to QuickBooks items, and apply sales tax amounts correctly.
  • Create and update QuickBooks customers from WooCommerce customer records, including billing address.
  • Handle the QBWC SOAP session-token handshake and respond to polling on your configured interval.
  • Log every transaction with timestamps and outcomes so failed syncs can be replayed without duplicates.

Questions

Does the integration work with all WooCommerce installations?
Yes. Because WooCommerce is self-hosted, each store has its own domain and API credentials. ml-connector accepts the base URL and API key pair per customer and can manage multiple independent WooCommerce stores, each syncing to its own QuickBooks Desktop instance via QBWC.
What happens if QBWC or QuickBooks goes offline?
ml-connector will miss polling calls while QBWC is down. When QBWC reconnects, ml-connector detects pending WooCommerce orders that arrived during the outage and syncs them on the next polling cycle. Because WooCommerce orders are read-only in QuickBooks, there is no risk of double-posting the same order twice if a sync is retried.
Are QuickBooks Desktop and WooCommerce data kept in sync after the initial sync?
WooCommerce data flows continuously into QuickBooks on your QBWC polling schedule. Changes to WooCommerce orders and customers are reflected in QuickBooks on the next sync cycle. Changes made directly in QuickBooks do not flow back to WooCommerce; the integration is one-directional from store to accounting.

Related integrations

Connect QuickBooks Desktop and WooCommerce

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

Get started