📚 Tutorial 8 of 8

Tutorial 8: Connect Tally ERP to CrmLeaf HRMS

🎯 Outcome: Tally ERP sync live: payroll journals posting automatically to correct Tally ledger heads after every payroll approval

7 steps28–40 minCrmLeaf HRMS Admin
✓ Your progress0/7 steps complete
1

Verify Tally server accessibility

▶ Action

Confirm that CrmLeaf can reach your Tally server on the network.

Why this matters: CrmLeaf connects to Tally via Tally’s XML-based API on the local network or through a static IP if Tally is hosted remotely. The Tally server must be running and accessible on the configured port (default: 9000) for the sync to work.
  1. Open Tally ERP on the server machine
  2. Check that Tally is running and a company is open
  3. Enable ODBC server in Tally: F12 › Advanced Configuration › Enable ODBC Server: Yes
  4. Note the Tally server IP address (LAN IP or static external IP)
  5. Default port: 9000 (unless changed in Tally configuration)
  6. Ensure firewall allows traffic on port 9000 between CrmLeaf server and Tally machine
Tally › F12 › ODBC Server: Enabled ✓ | Server IP: 192.168.1.10 | Port: 9000
Done when: Tally is running with ODBC server enabled. Server IP and port are noted. Firewall allows port 9000.
2

Configure Tally integration in CrmLeaf

▶ Action

Enter Tally connection details in CrmLeaf settings.

Why this matters: The integration configuration tells CrmLeaf where to find your Tally server, which Tally company to post to, and how to authenticate. Each CrmLeaf organisation can be connected to its own Tally company — India entity to India Tally, UAE entity to UAE Tally.
  1. Go to Settings › Integrations › Tally ERP
  2. Server IP: enter the Tally server IP address
  3. Port: 9000 (or custom port)
  4. Company name: type the exact Tally company name (case-sensitive)
  5. Click Test Connection
  6. CrmLeaf attempts to connect — should show “Connected successfully”
  7. Save integration settings
Settings › Tally › Connection: Connected ✓ | Company: Acme India Pvt Ltd | Port: 9000
Done when: Integration settings saved. Test connection shows “Connected successfully.” Tally company name is confirmed.
3

Map payroll components to Tally ledger heads

▶ Action

Create the mapping between CrmLeaf payroll components and Tally ledger heads.

Why this matters: Ledger mapping tells CrmLeaf which Tally ledger head each payroll component should be posted to. This is configured once and applied to every subsequent sync. Getting the mapping right ensures Tally P&L and Balance Sheet show correct payroll costs.
  1. Go to Settings › Integrations › Tally › Ledger Mapping
  2. For each CrmLeaf component, select the matching Tally ledger:
  3. Salary Expense (gross) → [Your Tally salary expense ledger, e.g. “Salaries & Wages”]
  4. PF Employer → [“Provident Fund Expense” or “PF Contribution”]
  5. PF Employee deduction → [“PF Payable” under Current Liabilities]
  6. ESIC Employer → [“ESIC Expense”]
  7. ESIC Employee deduction → [“ESIC Payable”]
  8. TDS deduction → [“TDS Payable”]
  9. Net salary (Bank credit) → [“Bank Account” or “Salary Payable”]
  10. Save mapping
Ledger Mapping › [Salary Expense → Salaries & Wages ✓ | PF → correct ledgers ✓ | ESIC → correct ledgers ✓ | TDS → TDS Payable ✓]
Done when: All payroll components are mapped to Tally ledger heads. Mapping table shows no unmapped components.
4

Run a test sync with sample data

▶ Action

Verify that the integration posts correctly to Tally before the first live payroll sync.

Why this matters: A test sync uses a small sample payroll transaction to verify that all ledger mappings are correct and that the entries appear in Tally as expected. This prevents a live payroll sync from posting to wrong ledgers.
  1. Go to Settings › Integrations › Tally › Test Sync
  2. Click Run Test Sync — CrmLeaf posts a small test transaction
  3. Open Tally › Ledger Reports › check the ledgers that were mapped
  4. Verify test entry appears in correct ledgers
  5. Delete the test entry from Tally (it is clearly marked as a test)
  6. Return to CrmLeaf and confirm test sync passed
Tally Integration › Test Sync: Passed ✓ | All ledger mappings verified ✓
Done when: Test sync shows “Passed” in CrmLeaf. Test entry appeared in correct Tally ledgers and has been deleted. Integration is ready for live use.
5

Configure cost centre mapping (optional)

▶ Action

Map CrmLeaf departments to Tally cost centres for department-level P&L.

Why this matters: If you use Tally cost centres to track department-level P&L, you can map CrmLeaf departments to Tally cost centres. When payroll syncs, each department’s payroll cost is attributed to its Tally cost centre automatically.
  1. Go to Settings › Integrations › Tally › Cost Centres
  2. For each CrmLeaf department, type the matching Tally cost centre name
  3. E.g. Engineering → “Engineering CC”, Sales → “Sales CC”
  4. Save cost centre mapping
  5. On next sync, each employee’s salary cost will be allocated to their department’s cost centre in Tally
Cost Centres › [Engineering → Engineering CC ✓ | Sales → Sales CC ✓ | Operations → Operations CC ✓]
Done when: Cost centre mapping saved. After next payroll sync, Tally cost centre reports will show salary cost per department.
6

Approve payroll and verify live sync

▶ Action

Run a live payroll and verify the sync posts correctly to Tally.

Why this matters: The first live payroll sync is the definitive test. After payroll approval, CrmLeaf automatically triggers the Tally sync. Verifying the Tally entries confirms the integration is working correctly for ongoing use.
  1. Complete a payroll run in CrmLeaf as normal (attendance lock → calculate → review → approve)
  2. After approval, go to Settings › Integrations › Tally › Sync Log
  3. Sync log should show “Sync completed successfully” with timestamp
  4. Open Tally › Ledger reports for the payroll month
  5. Verify: Salary Expense matches gross payroll total
  6. Verify: PF Payable, ESIC Payable, TDS Payable, PT Payable match CrmLeaf statutory liabilities
  7. Verify: Bank / Salary Payable credit matches net salary disbursement
Tally Sync Log › May 2025: Completed ✓ | Synced: 12 journal entries | Time: 1m 47s | All ledgers match ✓
Done when: Tally sync log shows Completed. All Tally ledger balances match CrmLeaf payroll summary exactly. First live sync confirmed.
7

Set up automatic sync for future payrolls

▶ Action

Confirm that Tally sync is set to run automatically after every payroll approval.

Why this matters: The default CrmLeaf setting is to sync Tally automatically after every payroll approval. Confirming this setting means you never need to manually trigger the sync again — it runs in the background every time payroll is approved.
  1. Go to Settings › Integrations › Tally › Sync Settings
  2. Confirm: “Auto-sync after payroll approval: Enabled”
  3. Sync notification: set email address to receive sync completion confirmation
  4. Save settings
Tally › Auto-sync: Enabled ✓ | Notification email: finance@company.com | No manual action needed from now
Done when: Auto-sync is enabled. From this point, every payroll approval automatically triggers Tally sync within 2–3 minutes. No manual action required.

✓ Tutorial 8 complete!

You have completed the full tutorial series. Start from Tutorial 1 to revisit any step.

Back to Tutorial 1 →

Related tutorials
CrmLeaf HRMS

India + GCC payroll compliance, automated.

Flat ₹8,250/month for unlimited employees. 15-day free trial, no credit card.