TallyPrime and TaxJar integration
TallyPrime runs accounting across small and medium businesses in India and Southeast Asia. TaxJar calculates real-time sales tax and manages nexus and filing obligations in the jurisdictions where you sell. Connecting the two keeps your tax filings accurate without manual transaction entry. Sales vouchers from TallyPrime flow into TaxJar so tax rates are calculated against the right addresses and amounts, and refunds are tracked for credit reporting. TallyPrime remains the source of record for your books while TaxJar handles the tax compliance piece.
What moves between them
TallyPrime sales vouchers (invoices to customers) and refund vouchers flow into TaxJar as transaction records. After each poll of TallyPrime, ml-connector extracts the sales and refund amounts, delivery addresses, line items and taxes, maps them to TaxJar's transaction object schema, and POSTs them to the transactions endpoint for tax calculation and filing. Refunds are sent to the refunds endpoint. Address validation is performed against TaxJar's address database to ensure nexus is correctly identified. The flow is unidirectional from TallyPrime into TaxJar; TallyPrime remains the accounting source of record.
How ml-connector handles it
ml-connector runs a local agent on the TallyPrime network to reach port 9000, since TallyPrime is desktop-only and not cloud-accessible. It polls TallyPrime's Export Data endpoint with date range filters at a configurable interval (typically every 15 to 30 minutes), compares returned voucher IDs against the last-seen state, and extracts new and updated sales and refund records. Each voucher is mapped to a TaxJar transaction: order total, line item amounts, customer shipping address, and any taxes TallyPrime recorded. The transaction is POSTed to TaxJar; if the request returns a 422 Conflict indicating the transaction already exists, ml-connector falls back to a PUT request to update it. The TaxJar API token is stored encrypted in the cell database. Retries use exponential backoff for transient errors, and every record is tracked in the audit log so transactions can be replayed if a downstream call fails.
A real-world example
A mid-sized e-commerce business based in India uses TallyPrime for accounting and inventory, and sells across multiple states where sales tax is due. Before the integration, the finance team manually exported sales and refund records from TallyPrime each day, formatted them for TaxJar, and uploaded them in bulk. Tax rate calculations were delayed by a day, nexus tracking was inconsistent, and discrepancies between TallyPrime and TaxJar created audit friction at month-end. With TallyPrime and TaxJar connected, every sale that hits TallyPrime automatically flows to TaxJar within minutes for real-time tax calculation. Refunds are tracked immediately, nexus is validated on the address, and the tax liability reported to states matches what TallyPrime recorded.
What you can do
- Poll TallyPrime sales and refund vouchers on a configurable schedule and send them to TaxJar for tax calculation and filing.
- Map TallyPrime voucher line items, amounts, and customer addresses to TaxJar transaction and refund objects.
- Validate customer shipping addresses against TaxJar and correct nexus identification before tax is calculated.
- Store the TaxJar API key encrypted and handle the transition from POST to PUT when a transaction already exists.
- Track every voucher in the audit log with full request and response detail so transactions can be retried or replayed if needed.
Questions
- Does TallyPrime need to be cloud-hosted for the integration to work?
- No. TallyPrime runs on a local desktop machine and exposes its API only on port 9000 within the LAN. ml-connector includes a local agent that sits on the same network, reaches TallyPrime on port 9000, and bridges the connection to TaxJar's cloud API. The agent must be deployed near the TallyPrime installation and cannot reach across the internet; it is a local proxy.
- How does the integration handle vouchers that already exist in both TallyPrime and TaxJar?
- ml-connector tracks voucher IDs from its last poll of TallyPrime. When it encounters a new or updated voucher, it POSTs it to TaxJar as a transaction. If TaxJar returns a 422 Conflict, indicating the transaction already exists, ml-connector falls back to a PUT request to update the existing record with new amounts or line items. The audit log records both the POST attempt and the fallback PUT.
- Which TallyPrime vouchers are sent to TaxJar?
- Sales vouchers (invoices to customers) and refund vouchers are sent to TaxJar for tax calculation and state filing. Purchase vouchers, payment vouchers, and receipts are not sent since they do not represent customer sales subject to sales tax. Stock items and general ledger entries remain in TallyPrime.
Related integrations
More TallyPrime integrations
Other systems that connect to TaxJar
Connect TallyPrime and TaxJar
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started