ml-connector
TallyPrimeAdyen

TallyPrime and Adyen integration

TallyPrime manages your accounting books; Adyen processes your payments. Connecting them keeps your cash receipts and refunds in sync with your general ledger automatically. Every payment capture flows into TallyPrime as a receipt voucher against the correct bank account, and every refund or dispute posts as a corresponding debit. ml-connector handles Adyen's webhooks, validates transaction signatures, polls your day book for reconciliation, and ensures every payment event becomes a balanced entry in your books.

How TallyPrime works

TallyPrime is a desktop accounting application widely used for GST, payroll, and multi-company bookkeeping in India and Southeast Asia. It exposes ledgers, groups, vouchers, and stock items through an HTTP POST API on a local network port (default 9000), using XML request envelopes to control import (write) and export (read) operations. Authentication is optional at the transport layer but includes company name, username, and password fields in the request envelope. TallyPrime has no webhooks; polling over the HTTP endpoint is the only way to detect changes. A local agent must run on the same machine or LAN to bridge cloud requests to port 9000, and the company must be open in the TallyPrime application for calls to succeed.

How Adyen works

Adyen is a global payment processor that handles online, mobile, and in-person transactions, captures, refunds, disputes, and payouts. It exposes payment data through REST JSON APIs (Checkout, Management, Transfers, Balance Platform) and pushes events via HMAC-SHA256 signed webhooks. Authentication uses API keys via X-API-Key headers or Basic Auth, both scoped to a merchant account in Adyen's Customer Area. Adyen sends webhook events for authorizations, captures, refunds, chargebacks, and disputes. Test and live environments use separate keys. Adyen is payment-only, so vendor lists, invoices, purchase orders, GL accounts, and cost centers must be mapped from your own master data.

What moves between them

Payment and dispute events flow from Adyen into TallyPrime. After a customer payment is captured in Adyen, ml-connector receives the webhook, validates the signature, and posts a receipt voucher into TallyPrime's bank ledger matched to the transaction amount and currency. Refunds, cancellations, and chargebacks post as debit entries. TallyPrime day book exports are polled periodically to align receipt vouchers between systems and detect any manual entries that need reconciliation. The flow is event-driven on the Adyen side (webhook) and pull-based on the TallyPrime side (polling day book exports).

How ml-connector handles it

ml-connector registers a webhook endpoint with Adyen that receives signed payment and dispute event notifications. Each incoming webhook is verified using HMAC-SHA256 and the Adyen API key before processing. The payment or refund amount is mapped to a pre-configured TallyPrime bank ledger account, and a voucher is posted via the local HTTP endpoint to port 9000. Because TallyPrime requires a local agent on the same network and the company must be open, ml-connector monitors the connection state and logs failed posting attempts for manual review. The webhook payload includes transaction reference, amount, currency, and event type; these are used to detect duplicates and prevent double-posting. On a schedule you control, ml-connector polls the TallyPrime day book export endpoint to reconcile posted vouchers and verify no entries were created outside the integration. Refund and dispute webhooks trigger debit entries using the same ledger mapping. All events carry audit trails with timestamps, signatures, and posting status.

A real-world example

A mid-sized e-commerce business in India runs TallyPrime for GST accounting and monthly compliance filing. Revenue flows in through Adyen's payment gateway, processing credit cards, UPI, and bank transfers. Before the integration, the finance team exported Adyen settlement reports daily, cross-referenced them with TallyPrime's bank book by hand, and manually entered receipt vouchers for each day's transactions. Reconciliation took hours and often revealed unmatched entries from timing delays or duplicate entries. With TallyPrime and Adyen connected, each payment captured in Adyen posts directly to the bank ledger within minutes, complete with transaction reference, and month-end reconciliation is automated. Disputes and chargebacks post as debits immediately. The team now focuses on exceptions and compliance rather than data entry.

What you can do

  • Post Adyen payment captures as receipt vouchers in TallyPrime's bank ledger, mapped to the correct ledger account.
  • Record refunds, cancellations, and chargebacks as debit entries in TallyPrime's journal.
  • Validate HMAC-SHA256 signatures on all Adyen webhooks and reject unsigned or tampered events.
  • Poll TallyPrime's day book periodically to reconcile posted vouchers and detect manual entries.
  • Log all payment events with full audit trails, transaction references, and posting status for month-end close.

Questions

How does ml-connector handle the fact that TallyPrime requires a local agent?
ml-connector connects to your local TallyPrime agent via HTTP on port 9000 over your LAN. The agent runs on the same machine or network where TallyPrime is installed. Connection status is monitored, and failed postings are logged and held for retry. You must manually enable the HTTP server in TallyPrime Advanced Configuration, and the target company must be open in the application for the integration to work.
Which direction do payments move between TallyPrime and Adyen?
Payments and disputes flow from Adyen into TallyPrime. Receipt vouchers and debit entries for refunds and chargebacks are posted into TallyPrime's journal based on webhook events. TallyPrime day book is polled for reconciliation and to detect any out-of-band entries. TallyPrime does not send data back to Adyen.
What happens if a payment webhook arrives twice or posting fails the first time?
ml-connector tracks transaction references and webhook event IDs to detect and skip duplicate webhooks, preventing duplicate vouchers. Failed postings are logged with the transaction reference, timestamp, and error reason. The audit trail lets you manually post or retry via the active plan, and periodic day book polls catch any entries that were posted outside the integration.

Related integrations

Connect TallyPrime and Adyen

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

Get started