ml-connector
QuickBooks DesktopFishbowl

QuickBooks Desktop and Fishbowl integration

QuickBooks Desktop runs accounting on Windows machines in your office. Fishbowl Advanced runs inventory and procurement on your local server. Connecting them keeps your parts, vendors, and purchase orders in sync without manual re-entry. Bills and purchase orders flow from Fishbowl into QuickBooks so your GL stays current, and vendor changes propagate in both directions so invoices land on the right accounts and cost centers.

How QuickBooks Desktop works

QuickBooks Desktop is a Windows-installed accounting platform controlled by a customer-hosted QBWC (Web Connector) agent that periodically polls a remote SOAP web service. Authentication uses a session-token handshake: QBWC sends username and password to your service, receives a GUID session ticket, and includes that ticket in all subsequent QBXML requests. Queries use ModifiedDateRangeFilter to detect changes, and deleted records are found via TxnDeletedQueryRq. QBWC operates on a minimum 1-minute interval (typical 5-15 minutes) and processes requests sequentially. QuickBooks must be open and logged into the company file for requests to succeed. Key entities include vendors, bills, purchase orders, invoices, accounts, items, and employees.

How Fishbowl works

Fishbowl Advanced is an on-premise inventory and light-ERP platform hosted on a customer-supplied server (HTTP or HTTPS on a configurable port, typically 2456). Authentication uses a REST session-token flow: POST to /api/login with username, password, appName, appDescription, appId, and optional mfaCode returns a UUID bearer token. All calls require Authorization: Bearer <token>. Fishbowl exposes purchase orders, sales orders, parts, inventory, vendors, and customers via REST endpoints with date filters, and complex queries via GET /api/data-query with inline SQL. Fishbowl is poll-only with no outbound webhooks. GL accounts are not exposed in Fishbowl itself; they are mapped to QuickBooks for accounting.

What moves between them

The primary flow is from Fishbowl into QuickBooks Desktop. Purchase orders and manufacturing orders created in Fishbowl sync to QuickBooks as purchase orders and bills. Parts and vendors in Fishbowl sync to QuickBooks items and vendors, so invoices in QuickBooks land on the correct parts and suppliers. Bill payments flow back from QuickBooks to Fishbowl so inventory costs reflect paid amounts. Vendor and account master records are aligned in both directions to ensure GL coding consistency and avoid duplicate vendor entries.

How ml-connector handles it

ml-connector runs a polling loop on your schedule (5-15 minute intervals are common) that queries both systems using their native pagination. On the QuickBooks side, ml-connector acts as a SOAP endpoint: it accepts the QBWC session-token handshake, returns session tickets, and responds to QBXML queries with result sets filtered by ModifiedDateRangeFilter to find only new and changed records. On the Fishbowl side, ml-connector uses the session-token REST API with bearer tokens, opening a new session per sync cycle or reusing a long-lived token if supported. Vendors and parts are matched by name or external ID to prevent duplicates. Purchase orders in Fishbowl become bills in QuickBooks linked to the correct vendor and GL accounts. If a QBWC poll returns an error (e.g., QuickBooks not open), ml-connector backs off and retries on the next cycle. If a Fishbowl API call times out, ml-connector replays the record on the next run. Every sync is tracked with timestamps so drift is detected and corrected.

A real-world example

A mid-sized discrete manufacturer runs QuickBooks Desktop for accounting on three regional offices (each with its own QB file and Web Connector) and Fishbowl on a central server for global inventory, purchasing, and manufacturing orders. Before the integration, the procurement team created purchase orders in Fishbowl, hand-entered them into each QB office, then waited for invoices to arrive and matched them manually. Inventory counts differed between Fishbowl and QB because parts added to one system were forgotten in the other. With QuickBooks Desktop and Fishbowl connected, each office gets QB files that receive purchase orders automatically from the central Fishbowl server, vendors stay in sync across all three QB files, and inventory changes flow in one direction so counts never drift. Procurement now creates orders once in Fishbowl and invoices are pre-matched when they arrive in QB.

What you can do

  • Sync purchase orders and manufacturing orders from Fishbowl into QuickBooks Desktop as bills linked to the correct vendors and GL accounts.
  • Keep vendor master records in sync across QuickBooks and Fishbowl so invoice entry and PO creation use the same supplier list.
  • Detect changes in QuickBooks on a schedule you control (5-15 minute intervals typical) using the Web Connector native ModifiedDateRangeFilter.
  • Handle the SOAP session-token handshake between QBWC and your polling service, and bearer-token REST authentication on the Fishbowl side.
  • Replay failed records on retry without creating duplicates, and track every sync with timestamps so drift is detected and corrected.

Questions

How does ml-connector handle the QBWC Web Connector on each QuickBooks installation?
ml-connector acts as the remote SOAP endpoint that QBWC calls. It accepts the session-token handshake (username/password in, session GUID out), responds to QBXML queries, and filters results by ModifiedDateRangeFilter to find only new and changed records. The QBWC agent on the customer Windows machine polls ml-connector on your configured interval (minimum 1 minute, typical 5-15 minutes).
Can ml-connector sync to multiple QuickBooks Desktop files across different offices?
Yes. Each office runs its own QBWC Web Connector agent, and each one registers with ml-connector using a different session token or app ID. ml-connector can handle multiple concurrent QBWC sessions and sync purchase orders and vendors to each QB file independently, so each office GL reflects its regional vendor and purchasing activity.
What happens if QuickBooks is not running or the network is down when QBWC tries to connect?
QBWC will report an error, and ml-connector will see the failed session-token handshake. ml-connector waits until the next poll cycle and retries. Because Fishbowl records are stamped with sync timestamps, ml-connector will not lose track of orders that were ready to sync and will replay them once QuickBooks is available again.

Related integrations

Connect QuickBooks Desktop and Fishbowl

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

Get started