Integration Overview
Connection health, last sync times and data freshness across all source and destination systems
Active Connections
9
7 inbound · 5 outbound (overlap)
Records synced today
412
Employee master · Attendance · IT decl.
Sync Warnings
2
Attendance + Variable Pay feed
Outbound Pushes
3
Bank file · Journal · Payslips
👤
● Live
Last sync14 min ago
Records412 employees
Direction← Inbound
ScheduleOn payroll run + webhook
📆
⚠ Warning
Last sync2 hrs ago
Records389 / 412 complete
Issue23 employees not finalized
Direction← Inbound
🌿
● Live
Last sync14 min ago
Records412 employees
Direction← Inbound
ScheduleDaily at 11:00 PM
📐
● Live
Last sync3 days ago
Structures24 active
Direction← Inbound
ScheduleOn revision event
📊
● Live
Last sync6 hrs ago
Declarations387 submitted
Direction← Inbound
ScheduleDaily + on submit event
💰
⚠ Partial
Last syncYesterday
Records18 / 24 plans received
Issue6 plans missing payout amounts
Direction← Inbound (on-demand)
🏦
● Ready
Last push28 May 2025
FormatHDFC Bulk Payment (CSV)
Direction→ Outbound
TriggerManual after approval
📒
● Live
Last push28 May 2025
Entries pushed14 journal lines
Direction→ Outbound
TriggerAuto after payroll approval
📄
● Live
Last push28 May 2025
Payslips pushed412
Direction→ Outbound
TriggerAuto after payroll approval
Data Flow ArchitectureHow external data enters, is processed, and leaves the payroll engine
Source Systems
👤 HRMS Employee Master
📆 Attendance Module
🌿 Leave Module
📐 Compensation Module
📊 IT Declaration Module
💰 Performance / Incentives
🏦 Loan Management
REST / Webhook
→ Validate
→ Snapshot
→ Validate
→ Snapshot
🚀 Payroll Engine
1. Pre-run validation
2. Gross computation
3. Statutory deductions (PF/ESIC/PT/LWF)
4. TDS computation (old/new regime)
5. Loans, perquisites, variable pay
6. Net pay derivation
7. Approval & lock
Approved
→ Push
→ Archive
→ Push
→ Archive
Destination Systems
📄 HRMS ESS (Payslips)
🏦 Bank (NEFT/RTGS file)
📒 ERP (Journal entries)
🏛 EPFO (PF ECR)
🏥 ESIC portal
🧾 TRACES (TDS / 24Q)
📊 MIS / Analytics
🔒
Immutable snapshots
All inbound data is snapshotted at payroll run — post-run HRMS changes don't affect the locked period
🔁
Retry with idempotency
Every API call carries an idempotency key — safe to retry without double-processing
🧱
Payroll is source of truth
Only payroll writes payslips, TDS, bank files — HRMS never overwrites payroll output
🏢
Multi-entity isolation
All API calls filtered by company_id + legal_entity_id — no cross-entity data bleed
Inbound Data Feeds
Configure each API feed that brings data INTO the payroll engine
Employee Master
Core employee data — identity, PAN, bank, grade, statutory flags, salary structure assignment
Connected
Last: 14 min ago · 412 records
▾
Connection
Sync Schedule
Mandatory fields check
✓ employee_id
✓ full_name
✓ date_of_joining
✓ PAN
✓ bank_account + IFSC
✓ UAN
✓ grade / band
✓ work_location (state)
✓ salary_structure_id
✓ regime_preference
⚠ aadhaar (optional)
⚠ ESIC_ip_number
On missing mandatory field
Attendance & LOP
Working days, present/absent, LOP days, overtime hours, late marks — per employee per period
⚠ 23 pending
Last: 2 hrs ago · 389/412
▾
Leave Balances & LTA
Leave balances (earned, sick, PL), LTA journey count, encashable leave for FnF
ConnectedLast: 14 min ago · 412 records
▾
Salary Structures & Revisions
CTC components, grade-wise structures, revision history with effective dates
ConnectedLast: 3 days ago · 24 structures
▾
IT Declarations
80C/80D/HRA/Loans, regime preference, proof status — monthly for TDS projection
ConnectedLast: 6 hrs ago · 387 declarations
▾
Loans & Advances
Outstanding loan balances, EMI, interest rate — for deduction and concessional perk computation
ConnectedLast: Daily · 31 loans
▾
Outbound Data Feeds
Configure where payroll pushes results — payslips, bank files, journal entries, statutory returns
📄 Payslip → HRMS ESS Portal
Active
Push payslip data to employee self-service
Push endpointPOST /hrms/payslips
Payload formatJSON (structured payslip object)
TriggerAuto after payroll approval
Also generatePDF (password = DOB DDMMYYYY)
Email notificationTo employee email on push
Sample payload snippet
{
"employee_id": "EMP001",
"pay_period": "2025-06",
"gross_pay": 125000,
"net_pay": 98420,
"deductions": { "pf": 1800, "pt": 200, "tds": 24580 },
"earnings": { "basic": 50000, "hra": 25000, ... },
"employer_pf": 1800,
"ytd_tds": 98320
}
🏦 Bank Disbursement File
Active
NEFT/RTGS bulk payment file → SFTP or bank portal
BankHDFC Bank Corporate
FormatHDFC Bulk Payment CSV
DeliverySFTP push to hdfc-corp.banksftp.net
TriggerManual after dual approval
EncryptionPGP encrypted (bank public key)
⚠ Bank file is generated ONLY after Finance + HR dual approval — cannot be auto-triggered.
📒 Payroll Journal → ERP
Active
Accounting entries — salary expense, TDS payable, PF payable
ERP systemSAP S/4HANA
API endpointPOST /sap/opu/odata/journal
Cost centre mappingAuto by department code
TriggerAuto after payroll approval
Journal entry structure
DR Salary Expense A/C ₹62,50,000 DR Employer PF Expense ₹ 7,42,500 CR Net Salary Payable ₹53,68,450 CR TDS Payable (ITNS 281) ₹11,24,050 CR PF Payable (EPFO) ₹ 4,50,000
🏛 PF ECR → EPFO Portal
Active
Monthly ECR text file for EPFO upload
FormatEPFO ECR (pipe-delimited text)
DeliveryDownload for manual EPFO portal upload
TriggerGenerated after payroll lock
Due date check15th of following month
🧾 TDS Data → TRACES / Form 24Q
Active
Quarterly TDS return data for NSDL/TRACES upload
FormatForm 24Q FVU file (NSDL format)
DeliveryDownload → upload to TRACES
ChallanITNS 281 (auto-generated data)
QuartersQ1: Apr–Jun · Q2: Jul–Sep · Q3: Oct–Dec · Q4: Jan–Mar
📊 MIS / Analytics Push
Optional
Aggregated payroll data → BI tools (Power BI, Tableau, custom)
DestinationPower BI dataset / data warehouse
FormatREST API (JSON) or CSV export
DataCost by dept, headcount, TDS summary, variance
PII handlingEmployee names/PAN masked in MIS push
Webhook Event Listeners
Real-time event notifications from the HRMS that trigger automated payroll actions
ℹ The HRMS sends webhook POSTs to this payroll module's listener URL when key HR events occur. Each webhook is HMAC-SHA256 signed — payroll verifies the signature before processing. Failed deliveries are retried up to 5 times with exponential backoff.
Webhook Listener EndpointConfigure this URL in your HRMS / source system
POST
https://payroll.acmeindia.com/api/webhooks/hrms
Registered Event Handlers
| Event | Triggered when | Payroll action | Last received | Status | Enable |
|---|---|---|---|---|---|
employee.joined |
HR activates new employee in HRMS | Create payroll record, prorate salary, PF/ESIC enroll, start TDS projection | 10 Jun 2025 · 09:14 | Active | |
employee.exit |
HR records last working day | Trigger FnF workflow, prorate final month, compute gratuity + leave encashment, queue Form 16 | 30 Apr 2025 · 16:02 | Active | |
salary.revised |
Compensation change with effective date | Queue salary revision, compute arrears if backdated, update TDS projection, re-run affected payroll periods | 01 Jun 2025 · 11:30 | Active | |
attendance.finalized |
HR/TL marks attendance final for a period | Pull attendance summary for that employee, remove from pre-run blockers list | 28 May 2025 · 22:10 | Active | |
it_declaration.submitted |
Employee submits investment declaration | Pull latest declaration, re-compute TDS projection for balance months, update Form 16 estimate | 05 Jun 2025 · 14:22 | Active | |
loan.created |
Loan approved for employee | Add to loan register, schedule EMI deduction from next payroll, compute concessional perk if applicable | 15 May 2025 · 10:05 | Active | |
esop.exercised |
Employee exercises ESOP options | Record exercise event, trigger perquisite computation (FMV − exercise price), compute TDS, alert payroll admin | 12 Apr 2025 · 09:00 | Active | |
employee.location_change |
Employee work location / state changes | Update PT slab (state-wise), LWF applicability, HRA city class, update TDS projection | Never received | Waiting | |
bank_details.updated |
Employee updates bank account in HRMS | Update disbursement record for next payroll — flag for re-verification before bank file generation | Never received | Waiting |
Recent Webhook DeliveriesLast 10 events received
| Timestamp | Event | Employee | HTTP Status | Duration | Payload |
|---|---|---|---|---|---|
| 10 Jun 2025 09:14:22 | employee.joined | Ritu Desai (EMP201) | 200 OK | 142ms | |
| 05 Jun 2025 14:22:11 | it_declaration.submitted | Parth Vora (EMP074) | 200 OK | 89ms | |
| 01 Jun 2025 11:30:05 | salary.revised | Anika Kapoor (EMP066) | 200 OK | 204ms | |
| 28 May 2025 22:10:44 | attendance.finalized | All (batch) | 200 OK | 1.2s | |
| 15 May 2025 10:05:33 | loan.created | Madhuri Singh (EMP057) | 202 Queued | 67ms |
Field Mapping
Map your HRMS field names to payroll module's internal fields — handles naming differences across any HRMS
ℹ Your HRMS may use different field names (e.g.,
emp_code instead of employee_id). Map them here. Transformations (date format, string to boolean, etc.) can be added per field.Employee Master — Field Mapping24 fields · 22 mapped · 2 unmapped
| Payroll Internal Field | Type | Mandatory | Source HRMS Field | Transform | Default | Status |
|---|---|---|---|---|---|---|
employee_id | string | ✅ | — | Mapped | ||
full_name | string | ✅ | — | Mapped | ||
date_of_joining | date | ✅ | — | Mapped | ||
PAN | string | ✅ | — | Mapped | ||
UAN | string | ✅ | — | Mapped | ||
pf_applicable | boolean | ✅ | true | Mapped | ||
work_location_state | string | ✅ | — | Mapped | ||
regime_preference | enum | ✅ | new_regime | Using default | ||
bank_account_number | string | ✅ | — | Mapped | ||
salary_structure_id | string | ✅ | — | Unmapped ⚠ |
Sync Logs
Complete audit trail of all API calls, webhook events and data pushes
| Timestamp | Direction | Feed / Event | Records | Duration | Status | Message | Action |
|---|---|---|---|---|---|---|---|
| 11 Jun 2025 11:18:04 | ← IN | Employee Master | 412 | 1.4s | ✓ Success | Full sync · 3 new, 2 revised, 407 unchanged | |
| 11 Jun 2025 11:18:06 | ← IN | Leave Balances | 412 | 0.8s | ✓ Success | All employees synced | |
| 11 Jun 2025 09:14:22 | ← WEBHOOK | employee.joined | 1 | 142ms | ✓ Success | EMP201 Ritu Desai · salary prorated · PF enrolled | |
| 10 Jun 2025 22:00:01 | ← IN | Attendance & LOP | 389/412 | 2.1s | ⚠ Partial | 23 employees attendance not finalized — pending HR action | |
| 10 Jun 2025 22:00:04 | ← IN | IT Declarations | 387/412 | 1.1s | ⚠ Partial | 25 employees have not submitted FY26 declaration · using New Regime default | |
| 28 May 2025 23:15:00 | → OUT | Payslip → HRMS ESS | 412 | 8.2s | ✓ Success | May 2025 payslips pushed · 412 notified by email | |
| 28 May 2025 23:15:08 | → OUT | Payroll Journal → SAP | 14 entries | 0.6s | ✓ Success | SAP document 1400026284 created · GL balanced | |
| 28 May 2025 14:02:00 | → SFTP | Bank Disbursement | 412 records | 3.4s | ✓ Success | File: payroll_may2025_HDFC.csv · ₹4,82,34,220 total | |
| 07 May 2025 06:59:00 | → OUT | TDS Challan (ITNS 281) | 1 challan | 0.3s | ✗ Error | TRACES API timeout · Retried 5x · Manual deposit required |
API Credentials & Auth
OAuth tokens, API keys, SFTP credentials and certificate management
⚠ Credentials are stored encrypted (AES-256). Only the last 4 characters of keys are displayed. Access to this page is restricted to System Admin role.
| System | Auth Type | Credential / Token | Expires | Last Used | Status | Actions |
|---|---|---|---|---|---|---|
| HRMS Core API | OAuth 2.0 | Client ID: acme_payroll_••••3a8f Client Secret: ••••••••••••••••••••e4b2 |
Never (refresh token) | 11 Jun 2025 11:18 | Active | |
| Attendance Module | API Key (Bearer) | Bearer ••••••••••••••••••••••••••••9d4c | 31 Dec 2025 | 11 Jun 2025 10:00 | Active | |
| HDFC Bank SFTP | SSH Key Pair | Key fingerprint: SHA256:••••••••••••••••••••••••••••p7KQ | 28 Feb 2026 | 28 May 2025 | Active | |
| SAP S/4HANA ERP | Basic Auth over HTTPS | User: SVC_PAYROLL_•••• | 90 days (auto-rotate) | 28 May 2025 | Active | |
| TRACES (TDS) | User/Password + OTP | TAN: MUMX12345A · User: •••••••• | Manual login (no API) | 07 May 2025 | Manual Upload | |
| Webhook HMAC Secret | HMAC-SHA256 | wh_live_••••••••••••••••••••••••7f91 | Never (manual rotate) | 10 Jun 2025 | Active |
Test Console
Test API connections, validate payloads, simulate webhook events and debug integration issues
API Request Builder
Request Body (JSON)
Quick test — Simulate Webhook Event
Payload ValidatorValidate any JSON against a payroll feed schema
Response
{
"status": "ready",
"message": "Click Send or simulate a webhook to see response here",
"timestamp": "2025-06-11T11:18:04Z"
}
Validation Results
Validation results will appear here after clicking Validate.
Common Integration Errors & Fixes
EMP_PAN_MISSING
PAN not present — TDS will be deducted at 20% (Sec 206AA). Push PAN via employee master API or enter manually.
ATT_NOT_FINALIZED
Attendance status is "draft" — payroll cannot process. Ask HR/TL to finalize attendance and re-sync.
SALARY_STRUCT_MISSING
No salary structure assigned to employee. Either map salary_structure_id in field mapping or assign manually.
BANK_DETAILS_MISSING
Bank account or IFSC missing — employee excluded from bank file. Update via HRMS or directly in payroll.
WEBHOOK_SIG_INVALID
HMAC signature mismatch — webhook rejected. Verify the secret key matches on both HRMS and payroll sides.
DUPLICATE_IDEMPOTENCY
Same idempotency key seen twice — second request ignored (safe replay protection). Not an error.