ml-connector
TallyPrimeStripe

TallyPrime and Stripe integration

TallyPrime runs your accounting on Windows. Stripe handles your online payments. Connecting them moves completed payments from Stripe into TallyPrime's receipt vouchers, posted to the correct bank or customer ledger. When a payment lands in Stripe, ml-connector uses a local agent to post the matching receipt into TallyPrime without re-entry. The integration handles Stripe's webhook delivery model and TallyPrime's local-only API.

How TallyPrime works

Stripe is a cloud payments platform that exposes customers, invoices, charges, payment intents, subscriptions, and payouts through a REST API and event webhooks. Every Stripe account has a Secret API Key for server-to-server integration sent via HTTP Basic Auth, and webhooks are pushed to a registered HTTPS endpoint with HMAC-SHA256 signatures and automatic retries. Stripe rate limits per documented thresholds and includes at-least-once event delivery with a 5-minute replay window. Prices and payment methods are immutable after creation, and charges are now created via payment intents rather than direct charge endpoints.

How Stripe works

TallyPrime is a Windows-based accounting and ERP application used in India and Southeast Asia that exposes ledgers, groups, vouchers, and stock items through a local HTTP server on port 9000. All operations use XML or JSON POST envelopes to a single endpoint, controlled by request type (Import Data for write, Export Data for read). TallyPrime requires a company name in the request envelope and optional password authentication per company. The server is LAN-accessible only and requires a local agent to be reachable from a cloud connector; it has no webhooks, no pagination, and no native idempotency, so duplicate requests create duplicate records.

What moves between them

Payment events from Stripe flow into TallyPrime. When a customer payment is completed or refunded in Stripe, ml-connector receives the webhook event, retrieves the full payment details from Stripe's API, and posts a matching receipt or payment reversal voucher into TallyPrime's specified bank or payment ledger. The ledger name and company name are configured per customer. TallyPrime is read-only for this integration; data does not flow back to Stripe.

How ml-connector handles it

ml-connector stores the Stripe Secret API Key encrypted and validates incoming webhook signatures using the Stripe-Signature header and shared endpoint secret. It receives Stripe webhook events (charge.succeeded, charge.refunded, payout.paid, etc.) and enriches them by calling Stripe's API to fetch full payment details. A local agent running on the same machine or LAN as TallyPrime receives the payment record and posts an Import Data envelope to http://<tally-host-ip>:9000 containing a receipt or payment voucher with the customer reference, amount, date, and bank ledger. Since TallyPrime has no idempotency, ml-connector deduplicates on Stripe's charge ID before posting and stores last-seen state to avoid re-processing. TallyPrime's company name field is case-sensitive and the target company must be open for the API call to succeed, so ml-connector includes error handling for company-not-open and retries on transient failures. Because TallyPrime has no pagination, all matching vouchers return in one response. Dates are formatted as YYYYMMDD per TallyPrime's requirement.

A real-world example

A mid-sized online business in India uses TallyPrime for accounting and GST compliance and Stripe for online customer payments. Before the integration, payments arrived in Stripe and the finance team manually reviewed the bank reconciliation statement, matched each Stripe deposit to a customer invoice, and entered receipt vouchers into TallyPrime by hand, which was error-prone and delayed reconciliation by a week. With TallyPrime and Stripe connected, each completed customer payment automatically creates a receipt voucher in the correct ledger, and reconciliation against the bank statement now matches within hours. The Stripe charge ID is stored in the voucher reference for full audit trail.

What you can do

  • Post Stripe customer payments as receipt vouchers into TallyPrime ledgers, with full customer and invoice reference.
  • Handle Stripe payment events including refunds, chargebacks, and payouts, translating each to the appropriate voucher type.
  • Validate Stripe webhook signatures and filter events to avoid duplicate voucher creation.
  • Authenticate to Stripe via API Key and to TallyPrime via local agent with optional company password.
  • Maintain a full audit trail of every payment-to-voucher mapping with Stripe charge IDs for bank reconciliation.

Questions

What happens if the local TallyPrime machine is offline when a payment arrives in Stripe?
ml-connector receives the Stripe webhook event and stores it in its audit trail. When the local machine comes back online, the local agent reconnects to the cloud connector and re-processes the stored events. Stripe's webhook also has a 5-minute replay window, so events are not lost.
Does the integration create new customers or ledger accounts in TallyPrime?
No. ml-connector posts vouchers to an existing, configured bank or payment ledger and references customers by their TallyPrime ledger name or a configured customer code. Ledger accounts and customer records must exist in TallyPrime before payment events are processed.
Can the integration handle refunds or chargebacks from Stripe?
Yes. ml-connector receives Stripe refund and chargeback events and posts matching payment reversal or debit vouchers into TallyPrime. The reversal is posted to the same ledger as the original receipt and referenced back to the original Stripe charge ID.

Related integrations

Connect TallyPrime and Stripe

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

Get started