TallyPrime and ShipBob integration
TallyPrime holds your accounting records and inventory on premise, while ShipBob manages fulfillment and shipping in the cloud. Connecting them keeps your stock levels accurate as orders flow through the warehouse, and every shipment posts automatically into TallyPrime's sales ledger. No more manual re-entry of shipped orders or mismatched inventory counts between your accounting system and your fulfillment center.
What moves between them
Inventory flows from TallyPrime to ShipBob: stock items and quantities from TallyPrime are synced to ShipBob's inventory system so fulfillment centers know what is available to pick. Orders and shipments flow the opposite direction: as ShipBob fulfills and ships orders, ml-connector reads the shipment records via webhooks and creates corresponding sales vouchers in TallyPrime's day book, posting revenue and cost of goods sold to the correct ledger accounts. The sync runs on a schedule controlled by your company and responds to ShipBob webhook events as they occur.
How ml-connector handles it
ml-connector bridges TallyPrime's local HTTP server to ShipBob's cloud REST API. On the TallyPrime side, it sends Export Data requests to retrieve stock items and vouchers, and Import Data requests to create or update sales vouchers for fulfilled orders. On the ShipBob side, it uses OAuth2 or a personal access token to read orders, inventory, and shipments, and includes the required shipbob_channel_id header on every call. It registers a webhook endpoint with ShipBob to receive shipment and order status events as they happen, reducing latency versus polling. When a shipment event arrives, ml-connector queries the full shipment and order details, maps the items and costs to TallyPrime ledger accounts, and posts a sales voucher with the correct date and amounts. TallyPrime's lack of native idempotency means ml-connector tracks each voucher by external reference (ShipBob order ID) to avoid duplicate postings. Inventory pushes run on a scheduled interval since TallyPrime is pull-only.
A real-world example
A small e-commerce business in India uses TallyPrime for accounting and maintains a stock ledger of finished goods. They ship through ShipBob's fulfillment centers in regional warehouses. Before the integration, the team exported order and shipment lists from ShipBob each morning, looked up inventory quantities in TallyPrime, then manually entered sales vouchers into the day book. Stock levels drifted because updates from ShipBob arrived hours late. With TallyPrime and ShipBob connected, every shipment posts immediately as a sales voucher, inventory syncs in both directions, and month-end closing starts with balanced accounts instead of reconciliation work.
What you can do
- Push stock items and quantities from TallyPrime to ShipBob inventory so fulfillment centers always know what is available.
- Create sales vouchers in TallyPrime automatically when ShipBob fulfills and ships an order, posting revenue and cost of goods sold to the correct ledger accounts.
- Map ShipBob order and shipment details to TallyPrime ledger accounts and groups so sales are recorded with the right cost center and GST treatment.
- Handle TallyPrime's local-only port 9000 and desktop-app constraints by running a local agent and managing sequential requests.
- Receive ShipBob shipment events via webhook and immediately post them to TallyPrime, with fallback polling for missed or delayed events.
Questions
- Why does TallyPrime need a local agent but ShipBob does not?
- TallyPrime's HTTP server runs on localhost:9000 and is only accessible on the local network. ml-connector needs a local agent on the same machine or LAN as TallyPrime to bridge that port to the cloud. ShipBob is a public cloud API, so ml-connector connects directly from the cloud to ShipBob's REST endpoints.
- What happens if TallyPrime is closed or the company is not loaded?
- TallyPrime API calls will fail if the application is closed or the target company is not open. ml-connector retries such requests with exponential backoff and alerts you if the application is offline, so you can reopen it. Pending orders queue until TallyPrime is available.
- How does ml-connector handle TallyPrime's lack of native idempotency?
- TallyPrime creates duplicate vouchers if the same Import Data request is sent twice. ml-connector tracks each posted voucher by ShipBob order ID and checks that reference before posting again, so a retry of a failed shipment does not create a duplicate in the ledger.
Related integrations
More TallyPrime integrations
Other systems that connect to ShipBob
Connect TallyPrime and ShipBob
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started