QuickBooks Online and Fishbowl integration
QuickBooks Online runs your accounting; Fishbowl runs your inventory and manufacturing. Connecting them keeps costs flowing accurately from the warehouse floor into your general ledger. When Fishbowl records a purchase order for raw materials, ml-connector posts the matching bill into QuickBooks Online with the cost assigned to the right accounts. Inventory movements and vendor payment terms stay synchronized without manual re-keying.
What moves between them
Data flows from Fishbowl into QuickBooks Online. ml-connector polls Fishbowl purchase orders, parts, and inventory on a configurable interval (typically 5-15 minutes per Fishbowl best practice), then creates or updates matching bills, line items, and vendors in QuickBooks Online. Vendor master records are synchronized so Fishbowl vendors match QuickBooks vendors. Inventory movements in Fishbowl trigger corresponding inventory accounts and cost-of-goods accounts in QuickBooks. The sync is unidirectional pull: QuickBooks does not push back to Fishbowl.
How ml-connector handles it
ml-connector stores the Fishbowl server URL, username, and password encrypted. At poll time it logs into Fishbowl via POST /api/login, receives a session token, and polls purchase orders with date filters to find new or modified records. For each Fishbowl PO it reads the vendor, line-item parts, and quantities, then fetches the full part records to get unit costs. It then creates a bill in QuickBooks Online, mapping Fishbowl vendor IDs to QuickBooks vendor IDs and part costs to the configured inventory asset and expense accounts. QuickBooks OAuth tokens expire in 1 hour, so ml-connector proactively refreshes the token before each sync window; if a refresh fails it surfaces the error immediately rather than waiting for a 401 mid-sync. Refresh tokens rotate every 24-26 hours and are cached encrypted, so token rotation is seamless. All bill creates and updates include the required SyncToken for concurrency control. Because Fishbowl has no webhook system, polling is required; ml-connector backs off if Fishbowl is slow and tracks each PO's last-sync time to avoid re-processing. Every record is audit-logged with source ID, timestamp, and direction.
A real-world example
A mid-sized manufacturing company runs Fishbowl on-premise for production planning, scheduling, and procurement, and QuickBooks Online for accounting and reporting. Before the integration, the procurement team entered purchase orders in Fishbowl but the accounting team had to manually re-enter vendor invoices and costs into QuickBooks at month-end, creating a two-day lag and frequent discrepancies between inventory in Fishbowl and cost accounts in QuickBooks. The finance team spent the first week of month-end close reconciling inventory and cost accounts instead of closing the books. With Fishbowl and QuickBooks Online connected, each new purchase order in Fishbowl automatically creates a bill in QuickBooks, inventory accounts stay current, and the manual invoice re-entry step is eliminated. Vendors and costs reconcile automatically.
What you can do
- Poll Fishbowl purchase orders on a schedule and create or update matching bills in QuickBooks Online with cost allocated to the correct accounts.
- Synchronize Fishbowl vendors to QuickBooks vendor master so invoices and payments reference the same vendor.
- Map Fishbowl inventory parts to QuickBooks items and track cost-of-goods movements in the right GL accounts.
- Handle Fishbowl on-premise authentication with encrypted credentials and manage QuickBooks OAuth token rotation and refresh-token lifecycle.
- Audit every record synced with source ID, timestamp, and direction so billing discrepancies can be traced and replayed if needed.
Questions
- Does ml-connector require Fishbowl to be exposed on the internet?
- Fishbowl is on-premise, so the customer must ensure their Fishbowl server is accessible from ml-connector's polling agents. This typically means opening a port or setting up a VPN tunnel; it does not require Fishbowl to be public. The customer provides the server URL and port at setup time.
- How does ml-connector handle token expiry and refresh?
- QuickBooks OAuth access tokens expire in 1 hour and refresh tokens rotate every 24-26 hours. ml-connector proactively refreshes the access token before each sync window and stores the rotating refresh token encrypted. If a refresh fails, the error is surfaced immediately so re-authentication can be triggered; ml-connector does not wait for a 401 mid-sync.
- Can ml-connector write back to Fishbowl if something changes in QuickBooks?
- No. The sync is unidirectional: Fishbowl into QuickBooks only. Changes in QuickBooks do not propagate back to Fishbowl. If a bill is manually modified in QuickBooks, the next Fishbowl poll will not overwrite it.
Related integrations
More QuickBooks Online integrations
Other systems that connect to Fishbowl
Connect QuickBooks Online and Fishbowl
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started