ml-connector
QuickBooks DesktopProcurify

QuickBooks Desktop and Procurify integration

QuickBooks Desktop runs your books on a Windows machine. Procurify handles procurement, requisitions, and vendor management in the cloud. Connecting the two keeps your vendor master aligned and moves approved purchase orders and bills from Procurify into QuickBooks without re-entry. When an order is approved in Procurify, it becomes a bill in QuickBooks, matched to the correct vendor and account, ready for payment.

How QuickBooks Desktop works

QuickBooks Desktop exposes vendors, bills, purchase orders, invoices, customers, accounts, items, and employees through SOAP QBXML, an XML-based query and update format sent over HTTPS. A customer-hosted QBWC agent polls your remote SOAP endpoint on a configurable interval. Authentication uses a simple session-token handshake: QBWC provides a username and password, your service returns a session GUID, and all queries in that session use the token. QuickBooks must be running and logged into the company file for QBWC to process requests. Queries use ModifiedDateRangeFilter to detect changes, and there is no native webhook or push mechanism; polling is the only option.

How Procurify works

Procurify is a cloud procurement platform exposing vendors, purchase orders, requisitions, bills, departments, account codes, and catalog items through REST API over HTTPS. Authentication uses OAuth 2.0 client credentials: the client ID and secret are exchanged for a 24-hour bearer token, which is passed on every request along with a required X-Procurify-Client header. Procurify does not offer webhooks or push notifications, so integration requires polling with time-based filters on endpoints like purchase-orders and vendors. Some endpoints, such as order items and payments, are read-only; purchase orders are generated from approved requisitions and order items rather than created directly.

What moves between them

The main flow is Procurify into QuickBooks Desktop. Vendor records from Procurify are read and matched against QuickBooks vendors by name and ID. Approved purchase orders from Procurify are converted into bill transactions in QuickBooks, with line items allocated to the correct account codes and cost centers. Once a bill is created in QuickBooks, ml-connector tracks its EditSequence version so that if Procurify sends an update, ml-connector re-queries the current EditSequence before modifying the bill, preventing conflicts if multiple systems try to edit the same record simultaneously. Polling happens on a schedule you set, typically every 5 to 15 minutes.

How ml-connector handles it

ml-connector stores Procurify OAuth credentials and QuickBooks SOAP endpoint details encrypted, and it handles the SOAP session lifecycle: it calls the authenticate() method with the customer's QBWC username and password to obtain a session token, then uses that token for all queries during the session. On the Procurify side, it exchanges the OAuth client ID and secret for a fresh bearer token if the existing token nears expiry or returns 401. Vendors from Procurify are matched to QuickBooks vendors by comparing names, IDs, and addresses; unmatched vendors either create new QuickBooks vendor records or raise an exception for manual review. When a purchase order is ready to post, ml-connector builds a bill QBXML request, assigns it to the matched vendor, and adds line items with accounts and amounts. Before updating an existing bill, it re-queries the current EditSequence from QuickBooks to ensure no other system has modified it since the last read, then includes the fresh EditSequence in the update request. QBXML requests have a 60-second timeout, so large queries are paginated. Because there is no idempotency key in QuickBooks, ml-connector uses the external purchase order ID as a dedup key to avoid creating duplicate bills if a request is retried. Every record is logged with a full audit trail.

A real-world example

A mid-market manufacturing company runs QuickBooks Desktop at their main office and uses Procurify to manage purchase requests and vendor spend across multiple departments. Before the integration, the procurement team approved purchase orders in Procurify, printed them, and handed them to the accounting department, which then manually created bills in QuickBooks, typing in vendor names, amounts, and account codes from the printout. Month-end reconciliation meant comparing Procurify orders against QuickBooks bills to find missing or misallocated entries. With QuickBooks Desktop and Procurify connected, approved orders flow into QuickBooks as bills automatically, matched to the correct vendors and accounts. The procurement team sees orders move from approval to accounting in real time, and the accounting team no longer re-keys purchase data or hunts for missing bills at month-end close.

What you can do

  • Sync vendors from Procurify to QuickBooks Desktop, matching by name and ID to avoid duplicates.
  • Convert approved purchase orders from Procurify into bills in QuickBooks, allocated to the correct accounts and vendors.
  • Handle QuickBooks SOAP session authentication and manage EditSequence versioning to prevent concurrent edit conflicts.
  • Poll Procurify and QuickBooks on a schedule you define, with change detection via modified date filters.
  • Track every vendor and bill sync with a complete audit trail and dedup key to prevent duplicate bills if a request is retried.

Questions

Do we need to install anything on our QuickBooks machine for this integration to work?
Yes. Your customer must have the QuickBooks Web Connector (QBWC) installed on the Windows machine running QuickBooks Desktop, and it must be configured to call ml-connector's SOAP endpoint. QuickBooks also must be running and logged into the company file whenever QBWC attempts to sync. ml-connector does not require any installation at your site; the QBWC calls your remote service.
How does ml-connector handle vendor matching between Procurify and QuickBooks?
ml-connector compares vendor names, IDs, and addresses from Procurify against existing QuickBooks vendors. If a match is found, the purchase order is assigned to that vendor. If no match is found, ml-connector either creates a new QuickBooks vendor record automatically or flags the order for manual vendor review, depending on your policy. This prevents duplicate vendors and ensures orders land on the correct payee.
What happens if both Procurify and QuickBooks try to modify the same bill at the same time?
ml-connector queries the current EditSequence (version counter) from QuickBooks immediately before updating a bill. It includes this fresh EditSequence in the update request, which will fail if another system has modified the bill since the last read. ml-connector logs the conflict and retries on the next poll cycle, giving you visibility into concurrent edit issues rather than silently overwriting changes.

Related integrations

Connect QuickBooks Desktop and Procurify

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

Get started