ml-connector
TallyPrimeSAP Concur

TallyPrime and SAP Concur integration

TallyPrime runs accounting and inventory in organizations across India and Southeast Asia. SAP Concur handles travel, expense, and invoice management in the cloud. Connecting them keeps your accounts payable in sync with your expense management: invoices and expense reports from SAP Concur flow into TallyPrime's general ledger automatically, mapped to the correct accounts and cost centers, eliminating manual re-entry and the reconciliation work it creates.

How TallyPrime works

TallyPrime is a desktop-first accounting application that exposes ledgers, groups, vouchers (purchase, sales, payment, receipt, and purchase orders), and stock items via XML or JSON over HTTP POST to http://<tally-host-ip>:9000. Authentication is optional at the transport layer (network security is expected via firewall or VPN) but requires the TallyPrime instance to be running with the target company loaded and the local HTTP server manually enabled in Advanced Configuration. The API uses an Import Data action for writes and an Export Data action for reads, both controlled through TALLYREQUEST envelopes. TallyPrime is a single-user desktop app with no native webhooks, so ml-connector polls by comparing returned record IDs against a last-seen state.

How SAP Concur works

SAP Concur exposes vendors, invoices, purchase orders, purchase requests, expense reports, and financial integration documents through REST APIs rooted at multi-datacenter base URLs determined by OAuth token response (us.api.concursolutions.com, emea.api.concursolutions.com, or cn.api.concursolutions.com). Authentication uses OAuth 2.0 with password grant and credentials: client_id, client_secret, company_id, and an auth_token bootstrapped from App Center (valid 24 hours for the first exchange, then refresh token valid 6 months). Access tokens last 1 hour. SAP Concur also offers webhook delivery through its Event Subscription Service (ESS) for topics like expense reports and invoices, though webhook integration is optional.

What moves between them

The main flow runs from SAP Concur into TallyPrime. Expense reports and invoices posted to SAP Concur flow into TallyPrime's general ledger as purchase vouchers, with line items mapped to the correct ledger accounts and cost centers. Vendor master data and account mappings are aligned so invoice line items land on valid ledger accounts in TallyPrime. The reverse direction is read-only: TallyPrime vendor and account master data is read by ml-connector to maintain the mapping layer.

How ml-connector handles it

ml-connector requires a local agent running on the same machine or LAN as TallyPrime to bridge the cloud connector to port 9000, since TallyPrime is desktop-only and not remotely accessible. It stores SAP Concur OAuth2 credentials and refreshes the access token when calls return 401, managing the geolocation base URL from the token response. On the TallyPrime side, ml-connector accepts the company name (case-sensitive in the SVCURRENTCOMPANY field) and sends sequential TALLYREQUEST envelopes to avoid inconsistent behavior on the single-user application. Because TallyPrime has no native webhooks or pagination and is pull-only, ml-connector polls SAP Concur expense reports and invoices on a schedule tied to your expense cycle (typically once per day or after each approval wave), exports the corresponding vendors and ledger accounts from TallyPrime to build the mapping, then posts purchase vouchers via Import Data. Dates are sent to TallyPrime in YYYYMMDD format. Invoice line amounts map to ledger accounts; SAP Concur does not support idempotency natively, so ml-connector uses the invoice reference number to avoid posting duplicate vouchers.

A real-world example

A regional mid-sized professional services firm based in India runs TallyPrime for accounting and GST compliance and uses SAP Concur for employee travel, entertainment, and vendor invoicing across multiple offices. Before the integration, the finance team received approved expense reports and vendor invoices from SAP Concur, manually extracted the amounts and accounts, and re-entered them into TallyPrime as purchase vouchers, a process that often took 2 to 3 days after approval and created reconciliation discrepancies. With TallyPrime and SAP Concur connected, expense reports and invoices flow into TallyPrime automatically each day, posted to the correct ledger accounts and cost centers, so the accounts payable is always in sync with the expense platform and month-end close starts with all AP already reconciled.

What you can do

  • Post approved expense reports and vendor invoices from SAP Concur into TallyPrime's general ledger as purchase vouchers, mapped to the correct ledger accounts.
  • Keep TallyPrime vendor master data aligned with SAP Concur vendors so invoice line items reference valid accounts.
  • Handle TallyPrime's local HTTP server transport and sequential request model to avoid inconsistent behavior on the single-user application.
  • Manage SAP Concur's OAuth2 token lifecycle, refresh on expiry, and geolocation routing.
  • Poll SAP Concur on a schedule tied to your expense approval cycle with a full audit trail on every record.

Questions

How does ml-connector access TallyPrime if it is a desktop application?
ml-connector requires a local agent running on the same machine or LAN as TallyPrime to bridge the cloud connector to TallyPrime's local HTTP server on port 9000. The application must be running with the target company open and the HTTP server manually enabled in Advanced Configuration. The agent forwards requests to http://<tally-host-ip>:9000 on behalf of the cloud connector.
In what direction does data flow between TallyPrime and SAP Concur?
The main flow is SAP Concur into TallyPrime. Expense reports and invoices approved in SAP Concur flow into TallyPrime as purchase vouchers, mapped to the correct ledger accounts and cost centers. Vendor master data and ledger accounts are read from TallyPrime to maintain the account mapping layer, but TallyPrime financial data is not written back to SAP Concur.
Does ml-connector use SAP Concur webhooks or polling?
ml-connector can use either webhooks via SAP Concur's Event Subscription Service or polling depending on your preference. Polling on a schedule tied to your expense approval cycle is the default, since TallyPrime has no native webhooks and the synchronization is typically daily or after each approval wave.

Related integrations

Connect TallyPrime and SAP Concur

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

Get started