ml-connector
TallyPrimeProcurify

TallyPrime and Procurify integration

TallyPrime is the accounting hub for businesses in India and Southeast Asia. Procurify is the cloud procurement platform managing purchase orders and vendor bills. Connecting them keeps your purchasing and accounting in sync without manual re-entry. Approved purchase orders from Procurify flow into TallyPrime as purchase vouchers, and vendor bills from Procurify post into TallyPrime's accounts payable ledger. ml-connector handles the entirely different connection models: Procurify's cloud OAuth2 API and TallyPrime's local-only HTTP server on port 9000.

How TallyPrime works

Procurify exposes vendors, purchase orders, requisitions, bills, payments, account codes, currencies, departments, and catalog items through a REST API secured with OAuth2 client credentials. Every request requires a Bearer token with a 24-hour lifetime and an X-Procurify-Client header. Procurify does not support webhooks, so integration relies on time-based polling with date-range filters on purchase order creation or modification dates. The platform intentionally keeps some API properties undocumented, and excessive requests may trigger access suspension without a published rate-limit number. Payments and order items are read-only.

How Procurify works

TallyPrime exposes ledgers, groups, vouchers, stock items, and purchase orders through a local HTTP server on port 9000, accepting XML or JSON in POST requests to a single endpoint. The server is accessed only over LAN and has no transport-layer authentication by default, though company access can be password-protected. TallyPrime has no webhooks or event subscription; integration must poll via Export requests with date-range filters and track IDs against last-seen state. The application is single-user and must be running with the target company open for API calls to succeed. Port 9000 must be manually enabled in TallyPrime Settings, and a local agent is required to bridge the cloud connector to the local server.

What moves between them

Purchase orders and bills flow from Procurify into TallyPrime. ml-connector polls Procurify on a configurable schedule for new and updated purchase orders and bills created or modified since the last sync. It transforms each Procurify purchase order into a TallyPrime purchase voucher and maps each bill line to the corresponding ledger account. Vendors in Procurify are matched to TallyPrime ledger accounts by name or custom mapping. The sync runs on a schedule under your control, with no event push from either side.

How ml-connector handles it

ml-connector runs a local agent on the same machine or LAN as TallyPrime to reach port 9000, since TallyPrime's server is not internet-accessible. It polls Procurify using OAuth2 client credentials, refreshing the token every 23 hours to avoid expiry mid-sync. For each new purchase order in Procurify, it creates a purchase voucher in TallyPrime by posting an Import Data request with the order details, account codes, and line amounts mapped to TallyPrime ledger accounts. To prevent duplicate vouchers if a sync is re-run, it tracks Procurify purchase order IDs and uses TallyPrime's Alter action to update existing vouchers if the order is modified. Bills flow the same way: new bills are imported as purchase vouchers with line items mapped to accounts payable ledgers. ml-connector handles the constraint that TallyPrime has no native pagination by accepting all records in a single response and filtering by date range server-side in Procurify before import. It respects TallyPrime's requirement that the company remain open and available, and if calls fail, it surfaces the error and retries on the next scheduled run.

A real-world example

A mid-market distributor in India uses TallyPrime for accounting and inventory and Procurify for centralized procurement across three offices. Before the integration, the procurement team approved purchase orders in Procurify and the finance team manually re-entered each order into TallyPrime as a purchase voucher, and again re-entered vendor bills when they arrived. Matching PO numbers to voucher numbers was error-prone and month-end reconciliation required chasing down missing invoices across both systems. With TallyPrime and Procurify connected, every approved purchase order flows directly into TallyPrime as a voucher, and each vendor bill posts into accounts payable automatically. The finance team now spends their time on exceptions rather than data entry, and reconciliation matches PO numbers in both systems by design.

What you can do

  • Import Procurify purchase orders into TallyPrime as purchase vouchers with line items mapped to the correct ledger accounts.
  • Post Procurify vendor bills into TallyPrime accounts payable ledgers, applying the correct line amounts and GST treatments.
  • Map Procurify vendors to TallyPrime ledger accounts by name or custom mapping so bills land on the right accounts.
  • Poll Procurify on a schedule using OAuth2, refresh tokens before expiry, and bridge to TallyPrime's local port 9000 via a local agent.
  • Deduplicate imports so re-running a sync never creates duplicate vouchers, and update existing vouchers if a purchase order is modified.

Questions

How does ml-connector connect to TallyPrime if it runs only on a local network?
ml-connector deploys a local agent on the same machine or LAN as TallyPrime to reach port 9000, since TallyPrime's HTTP server is not internet-accessible. The cloud service communicates with the agent, which forwards requests to TallyPrime's local API. The local agent must be running on a machine where TallyPrime is installed and the target company is open.
What happens if TallyPrime is stopped or the company is closed when ml-connector tries to sync?
API calls will fail and the sync will be retried on the next scheduled run. To minimize disruption, schedule syncs during hours when TallyPrime is guaranteed to be running with the company open. ml-connector logs the error so you can see exactly which purchases were not imported and when the sync succeeded.
Can ml-connector update or delete purchase orders that are already in TallyPrime?
Yes, ml-connector can update existing purchase vouchers using TallyPrime's Alter action if a Procurify purchase order is modified, by matching the Procurify PO ID. TallyPrime has no delete operation for masters; if a purchase order is cancelled in Procurify, ml-connector can reverse the corresponding TallyPrime voucher or you can cancel it manually.

Related integrations

Connect TallyPrime and Procurify

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

Get started