ml-connector
TallyPrimePlaid

TallyPrime and Plaid integration

TallyPrime manages your accounting and inventory; Plaid connects your bank accounts. When you approve a payment in TallyPrime, ml-connector moves it to Plaid for settlement, and when the bank processes it, the confirmation flows back to TallyPrime's ledger. This keeps your accounting records and your bank transactions in sync without re-keying, and eliminates the manual step of matching payments in two systems.

How TallyPrime works

TallyPrime exposes ledger accounts, groups, vouchers (purchase, sales, payment, receipt, purchase orders), and stock items through a local HTTP server on port 9000 via XML or JSON requests. It requires a local agent to bridge from the cloud since the TallyPrime instance runs only on a local machine or LAN, and the target company must be open in the application for API calls to work. The system is single-user at the desktop level, so concurrent requests must be kept sequential. Since TallyPrime has no native webhooks, ml-connector polls for new vouchers and transactions on a regular interval using date range filters, comparing returned records against last-seen state to detect changes.

How Plaid works

Plaid provides REST API access to bank accounts, transactions, investment holdings, and transfer capabilities through https://production.plaid.com. Every call requires OAuth2 credentials passed as PLAID-CLIENT-ID and PLAID-SECRET headers, and users are linked through a three-step flow (link token creation, user Link flow, public token exchange for an access token). Plaid also supports webhooks for transaction updates and transfer status changes, delivering notifications as HTTP POST to a configured endpoint and expecting a 200 response within 10 seconds. Signature verification is required using JWT with ES256 and JWK public key lookup.

What moves between them

Payment approval flows from TallyPrime to Plaid. When a payment voucher is recorded in TallyPrime, ml-connector polls for the new record, extracts the payee bank details and amount, and initiates an ACH transfer in Plaid. As the bank processes the transfer, Plaid webhooks notify ml-connector of status changes, which are then recorded in TallyPrime's ledger as receipt or cancellation vouchers. Transaction and settlement data flow from Plaid back into TallyPrime for bank reconciliation, mapped to ledger accounts and groups so the accounting records reflect actual bank movements.

How ml-connector handles it

ml-connector polls TallyPrime on a regular interval (5-15 minute window) by sending Export requests with date range filters to the local port 9000 HTTP server, maintaining a local agent on the same machine or LAN to bridge cloud access. It stores Plaid API credentials (client_id and secret) encrypted and presents them on every request, managing per-user access tokens obtained through the three-step Plaid Link flow. Payment vouchers from TallyPrime are matched to Plaid recipients by bank account details, and transfer requests include an idempotency key (max 50 chars) to prevent duplicate settlements if ml-connector retries. When Plaid webhooks arrive, ml-connector verifies the JWT signature (ES256 algorithm, JWK public key, max 5 minute iat skew) before acting on the notification. ACH transfer descriptions are limited to 10 characters due to ACH format constraints, so ml-connector truncates longer payment references. Every transaction is logged with a full audit trail, and failed settlements are queued for replay when the upstream system recovers.

A real-world example

A mid-sized trading and distribution business in India runs TallyPrime for accounting and inventory management, and maintains bank accounts for supplier payments and customer collections. Before the integration, the finance team approved payment vouchers in TallyPrime each morning, then manually logged into their bank portal and initiated ACH transfers, then waited for bank confirmation and manually logged the settlement back into TallyPrime's ledger. With TallyPrime and Plaid connected, each approved payment is automatically moved to the bank, settlement confirmations flow back automatically, and month-end bank reconciliation is complete as soon as the last payment clears, eliminating three manual steps and reducing reconciliation time from days to minutes.

What you can do

  • Initiate ACH transfers from approved TallyPrime payment vouchers directly to Plaid for bank processing.
  • Receive Plaid transaction and transfer webhooks and automatically record settlement status in TallyPrime ledger accounts.
  • Map bank payees and recipients between TallyPrime groups and Plaid connected accounts using bank account details.
  • Manage per-user Plaid access tokens through the three-step Link flow and handle token refresh on authentication failures.
  • Maintain a full audit trail of all payment initiations and settlements with automatic replay on failure.

Questions

How does ml-connector access TallyPrime running on a local machine?
ml-connector deploys a local agent on the same machine or LAN as TallyPrime that bridges HTTP requests from the cloud to port 9000. TallyPrime must be running and the target company must be open in the application for API calls to succeed. The agent polls at regular intervals (5-15 minutes) using date range filters to detect new payment vouchers.
Does Plaid webhook signature verification add security over basic HTTPS?
Yes. Plaid requires JWT verification using ES256 algorithm with JWK public key lookup, SHA-256 hashing of the raw request body, and a maximum 5 minute window on the iat claim. ml-connector performs this verification before processing any settlement notification, preventing replay attacks and ensuring the webhook originated from Plaid's infrastructure.
What happens if a payment voucher is approved in TallyPrime but the ACH transfer fails at the bank?
ml-connector stores the transfer request encrypted and retries with the same idempotency key (which expires after 48 hours) until the bank either accepts or rejects it. The status is logged with a full audit trail. If the rejection is permanent, ml-connector marks the transfer as failed in TallyPrime and alerts the finance team to investigate.

Related integrations

Connect TallyPrime and Plaid

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

Get started