ml-connector
TallyPrimeFishbowl

TallyPrime and Fishbowl integration

TallyPrime runs accounting and inventory in many small to mid-sized distributors and wholesalers in India and Southeast Asia. Fishbowl Advanced handles procurement, purchase orders, and inventory on-premise. Connecting the two keeps your purchase records, vendor data, and cost allocations synchronized without manual re-entry. When a purchase voucher is created in TallyPrime, the matching purchase order flows into Fishbowl, and payment records keep accounts payable reconciled across both systems.

How TallyPrime works

TallyPrime exposes ledgers, groups, vouchers (purchase, sales, payment, receipt, and purchase orders), and stock items through XML or JSON over HTTP POST to a local port 9000 endpoint. The port is not enabled by default and must be manually configured in TallyPrime Settings. A local agent is required to bridge between the cloud connector and the LAN-only TallyPrime server. Authentication is optional at the transport layer but the target company name is required in all requests, and the company must be open in the TallyPrime application for API calls to succeed. TallyPrime has no native webhooks, so export data is retrieved by polling.

How Fishbowl works

Fishbowl Advanced exposes vendors, purchase orders, sales orders, parts, inventory, customers, and manufactured items through a REST API running on a customer-supplied on-premise server. Clients authenticate with POST /api/login using username, password, and application metadata, receiving a UUID session token for use in all subsequent requests with Bearer authentication. The REST API has no outbound webhooks, only read and write endpoints for poll-based consumption. The base URL and port are customer-configured, with the API typically running on port 2456. Fishbowl does not expose general ledger accounts; accounting integration is handled through separate QuickBooks or Xero connections.

What moves between them

Purchase and payment vouchers move from TallyPrime into Fishbowl. ml-connector polls TallyPrime's Export Data endpoint at a scheduled interval to retrieve vouchers created or modified since the last sync, extracts purchase and payment records by voucher type, and posts matching purchase orders and payment records into Fishbowl via its REST API. Vendor records and parts are mapped between systems so purchase order line items reference parts that exist in Fishbowl. The flow is one-directional, from TallyPrime to Fishbowl, so TallyPrime remains the source of truth for purchase transactions.

How ml-connector handles it

ml-connector maintains a local agent or accepts a direct TallyPrime host IP and port, then issues sequential HTTP POST requests to TallyPrime's port 9000 endpoint with Export Data envelopes containing date range filters (SVFROMDATE, SVTODATE in YYYYMMDD format) and voucher type selectors. It stores the TallyPrime company name and optional credentials encrypted. For each purchase or payment voucher returned, ml-connector extracts vendor, line item, amount, and date data, maps the vendor to a Fishbowl vendor by name or code, and posts a purchase order or payment record into Fishbowl after authenticating with a session token obtained from the /api/login endpoint. Because TallyPrime is not concurrent-safe and has no idempotency markers, ml-connector tracks the last-seen voucher ID and date to avoid duplicate posting, and retries failed Fishbowl writes with exponential backoff. If a TallyPrime company becomes password-protected, the stored company credentials are used. Fishbowl session tokens expire, so ml-connector refreshes them on 401 responses.

A real-world example

A mid-sized wholesale distributor in India uses TallyPrime for accounting and purchase orders, and has deployed Fishbowl Advanced on-premise for real-time inventory tracking and order fulfillment. Before integration, purchase vouchers entered in TallyPrime were manually transcribed into Fishbowl purchase orders by a procurement clerk, causing delays and data entry errors. With TallyPrime and Fishbowl connected, each purchase voucher posted in TallyPrime automatically creates a matching purchase order in Fishbowl, including vendor, part numbers, quantities, and cost. Inventory cost rolls up from Fishbowl back to TallyPrime for accurate stock valuation, and month-end reconciliation between TallyPrime's purchase register and Fishbowl's inventory receiving is instant.

What you can do

  • Poll TallyPrime's Export Data endpoint for new and changed purchase and payment vouchers on a regular schedule, matching against the last-seen state to avoid duplicates.
  • Post purchase orders and payment records from TallyPrime vouchers into Fishbowl's REST API with mapped vendors and line items.
  • Authenticate TallyPrime by company name and optional credentials over the LAN-local port 9000 endpoint, and Fishbowl with session token authentication via /api/login.
  • Handle TallyPrime's lack of webhooks and idempotency by tracking voucher IDs and date ranges, and refresh Fishbowl session tokens on expiry.
  • Sync vendor master data and stock item references between TallyPrime and Fishbowl so purchase orders land on valid parts and vendors.

Questions

How does ml-connector connect to TallyPrime if it is running on a local machine?
ml-connector requires a local agent running on the same LAN segment as the TallyPrime server, or you supply the TallyPrime host IP and port directly. The agent issues HTTP POST requests to the local port 9000 endpoint, which must be manually enabled in TallyPrime Advanced Configuration Settings. The target company name is provided per customer, and if the company is password-protected, the stored credentials are included in each request.
Which direction does data move, and what records are synced?
The flow is from TallyPrime to Fishbowl only. Purchase and payment vouchers from TallyPrime become purchase orders and payment records in Fishbowl. Vendor master records and part numbers are mapped in both directions so the purchase order lines reference vendors and parts that exist in Fishbowl, but TallyPrime remains the source of truth for all purchase transactions.
What happens if a TallyPrime voucher is updated or a Fishbowl API call fails?
ml-connector tracks voucher IDs and sync dates to detect updates and avoid duplicate postings when TallyPrime has no native idempotency. If a Fishbowl write fails, ml-connector retries with exponential backoff, and every record carries an audit trail so failed posts can be replayed once the error is resolved. Fishbowl session tokens are refreshed automatically when a 401 response is received.

Related integrations

Connect TallyPrime and Fishbowl

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

Get started