Xero and Fishbowl integration
Xero runs your accounting, and Fishbowl runs your inventory and orders. When you receive goods in Fishbowl and process invoices in Xero, the two need to stay in agreement so your inventory value and your accounts payable ledger match at close. Fishbowl ships purchase orders and inventory movements to Xero as invoice lines and bank transactions, keyed to the cost centers and GL accounts you have already set up. ml-connector handles the on-premise Fishbowl server URL, token refreshes, and the polling schedule tied to your receiving cycle.
What moves between them
The main flow is from Fishbowl into Xero. When goods are received or purchase orders are marked as received in Fishbowl, ml-connector reads those records on a polling schedule and posts them as manual journal entries into Xero's accounts payable ledger, mapped to the correct Xero GL account and cost center per purchase order. Payments in Fishbowl can also sync to Xero bank transactions if both systems are configured to track them. Part master data (descriptions, cost codes) flows from Fishbowl to Xero line-item mappings so that every invoice line references a valid Xero account.
How ml-connector handles it
ml-connector stores your Fishbowl server URL and login credentials encrypted and polls the on-premise REST API at intervals you control, typically aligned with your receiving schedule. On each poll, it fetches new purchase orders and received goods since the last run using date filters (or a data-query endpoint for more complex filtering). It refreshes the session token before expiry so connection drops do not interrupt the sync. For each received purchase order or goods receipt, ml-connector builds a Xero manual journal entry or bank transaction keyed to your Xero GL accounts and cost centers, then posts via OAuth2 bearer token. Part codes from Fishbowl are mapped to Xero line items or accounts during setup so re-keying is not needed. If a Xero write fails (e.g. invalid GL account, rate limit), ml-connector retries with exponential backoff and logs the failure in the audit trail so you can replay or correct it later.
A real-world example
A mid-sized manufacturer runs Fishbowl Advanced on-premise for purchase orders, receiving, and inventory, and uses Xero for accounting across two distribution centers. Before the integration, the logistics team emailed purchase receipts to the accounting team each day, and accounting re-entered the received amounts and GL account codes into Xero by hand. Inventory turnover and GL balances often fell out of sync because goods were received in Fishbowl hours before the journal entry appeared in Xero, and reconciling the AP ledger at month-end required a manual recount of outstanding POs. With Fishbowl and Xero connected, each received shipment appears in Xero automatically, allocated to the correct cost center, and AP reconciliation is complete before month-end begins.
What you can do
- Post Fishbowl purchase order receipts as manual journal entries into Xero's accounts payable ledger, mapped to the correct GL accounts.
- Sync Fishbowl part codes and costs to Xero invoice line items so purchase invoices reflect on-hand inventory movements.
- Authenticate Fishbowl with session token login to your on-premise server and Xero with OAuth2 bearer token.
- Poll Fishbowl on a schedule tied to your receiving cycle, with retries and a full audit trail on every record.
- Map Fishbowl vendor and cost codes to Xero accounts and cost centers so line items post to the right dimensions.
Questions
- Does Fishbowl's on-premise architecture require special network setup?
- Yes. ml-connector needs network access to your Fishbowl server URL and port, typically 2456 over HTTP on-premise. You supply the full server URL and login credentials, which ml-connector stores encrypted. Because Fishbowl is pull-only with no webhooks, ml-connector polls at regular intervals rather than waiting for a push.
- How does the integration handle Fishbowl's lack of GL accounts?
- Fishbowl does not expose general ledger accounts directly. ml-connector uses part codes and vendor categories from Fishbowl to look up the correct Xero GL account and cost center during setup. When a purchase order is received, those mappings are applied so the journal entry posts to the right account automatically.
- What happens if a Xero API call fails mid-sync?
- ml-connector tracks every attempted write in its audit log with the Fishbowl record ID, the Xero GL account, and the error. Failed records can be retried or corrected and replayed later. Rate limit errors (HTTP 429) trigger exponential backoff so transient issues do not block the next sync cycle.
Related integrations
More Xero integrations
Other systems that connect to Fishbowl
Connect Xero and Fishbowl
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started