Independence Day offer · ₹52/employee/moClaim offer
INDPayroll
API reference

Reports

Payroll, attendance and compliance reports as JSON or file exports.

Base URLhttps://api.indpayroll.com/v113 endpoints
GET /reports/payroll-register/summary

Payroll register - summary

One row per employee for the period: gross, total deductions, net payable and employer cost. The report finance signs off before disbursement.

Query parameters

organization_id
integer
Organization to act on. Required when the API key can reach more than one organization; optional - and defaulted - when it can reach exactly one.
from required
string (date)
Start of the window, inclusive.
to required
string (date)
End of the window, inclusive.
department_id
integer
employee_id
string
format
enum: json, xlsx, csv, txt, pdf
File format to return instead of JSON. Omit it - or send Accept: application/json - to get JSON rows you can render yourself.
page
integer
1-based page number.
per_page
integer
Items per page. The engine caps this at 200.

Responses

  • 200 The report as JSON, or as a file when format asks for one. ReportResponse
  • 400 The request was malformed or failed validation. ErrorResponse
  • 401 The key is missing, unknown, or the HMAC signature did not verify. ErrorResponse
  • 403 The key is valid but lacks the scope, or cannot reach this organization. ErrorResponse
Request
curl -X GET https://api.indpayroll.com/v1/reports/payroll-register/summary \
  -H "Authorization: Bearer $INDP_API_KEY"
Response · 200
{
  "report": "payroll_register_summary",
  "organization_id": 42,
  "period": {
    "from": "2026-09-01",
    "to": "2026-09-30"
  },
  "generated_at": "2026-10-01T06:02:11Z",
  "columns": [
    {
      "key": "employee_code",
      "label": "Employee code",
      "type": "string"
    },
    {
      "key": "name",
      "label": "Name",
      "type": "string"
    },
    {
      "key": "payable_days",
      "label": "Payable days",
      "type": "number"
    },
    {
      "key": "gross",
      "label": "Gross",
      "type": "money"
    },
    {
      "key": "total_deductions",
      "label": "Deductions",
      "type": "money"
    },
    {
      "key": "net_payable",
      "label": "Net payable",
      "type": "money"
    }
  ],
  "rows": [
    {
      "employee_code": "ACM-0142",
      "name": "Aditi Sharma",
      "payable_days": 28,
      "gross": 93786.67,
      "total_deductions": 11420,
      "net_payable": 82654.67
    },
    {
      "employee_code": "ACM-0143",
      "name": "Rahul Mohanty",
      "payable_days": 30,
      "gross": 50946.66,
      "total_deductions": 6096,
      "net_payable": 44850.66
    }
  ],
  "totals": {
    "gross": 144733.33,
    "total_deductions": 17516,
    "net_payable": 127505.33
  },
  "meta": {
    "page": 1,
    "per_page": 50,
    "total": 2,
    "total_pages": 1
  }
}
GET /reports/payroll-register/detail

Payroll register - detail

One row per employee per component. Wide, and the right shape to load into a warehouse.

Query parameters

organization_id
integer
Organization to act on. Required when the API key can reach more than one organization; optional - and defaulted - when it can reach exactly one.
from required
string (date)
Start of the window, inclusive.
to required
string (date)
End of the window, inclusive.
department_id
integer
employee_id
string
format
enum: json, xlsx, csv, txt, pdf
File format to return instead of JSON. Omit it - or send Accept: application/json - to get JSON rows you can render yourself.
page
integer
1-based page number.
per_page
integer
Items per page. The engine caps this at 200.

Responses

  • 200 The report as JSON, or as a file when format asks for one. ReportResponse
  • 400 The request was malformed or failed validation. ErrorResponse
  • 401 The key is missing, unknown, or the HMAC signature did not verify. ErrorResponse
  • 403 The key is valid but lacks the scope, or cannot reach this organization. ErrorResponse
GET /reports/salary-register

Salary register

The standing structure of every employee - CTC, components, effective date - independent of any run.

Query parameters

organization_id
integer
Organization to act on. Required when the API key can reach more than one organization; optional - and defaulted - when it can reach exactly one.
from required
string (date)
Start of the window, inclusive.
to required
string (date)
End of the window, inclusive.
department_id
integer
employee_id
string
format
enum: json, xlsx, csv, txt, pdf
File format to return instead of JSON. Omit it - or send Accept: application/json - to get JSON rows you can render yourself.
page
integer
1-based page number.
per_page
integer
Items per page. The engine caps this at 200.

Responses

  • 200 The report as JSON, or as a file when format asks for one. ReportResponse
  • 400 The request was malformed or failed validation. ErrorResponse
  • 401 The key is missing, unknown, or the HMAC signature did not verify. ErrorResponse
  • 403 The key is valid but lacks the scope, or cannot reach this organization. ErrorResponse
GET /reports/attendance-summary

Attendance summary

Present, absent, leave, holiday and loss-of-pay days per employee for the window, exactly as the run counted them.

Query parameters

organization_id
integer
Organization to act on. Required when the API key can reach more than one organization; optional - and defaulted - when it can reach exactly one.
from required
string (date)
Start of the window, inclusive.
to required
string (date)
End of the window, inclusive.
department_id
integer
employee_id
string
format
enum: json, xlsx, csv, txt, pdf
File format to return instead of JSON. Omit it - or send Accept: application/json - to get JSON rows you can render yourself.
page
integer
1-based page number.
per_page
integer
Items per page. The engine caps this at 200.

Responses

  • 200 The report as JSON, or as a file when format asks for one. ReportResponse
  • 400 The request was malformed or failed validation. ErrorResponse
  • 401 The key is missing, unknown, or the HMAC signature did not verify. ErrorResponse
  • 403 The key is valid but lacks the scope, or cannot reach this organization. ErrorResponse
GET /reports/overtime

Overtime report

Approved overtime hours and what they were paid, by employee and pay code.

Query parameters

organization_id
integer
Organization to act on. Required when the API key can reach more than one organization; optional - and defaulted - when it can reach exactly one.
from required
string (date)
Start of the window, inclusive.
to required
string (date)
End of the window, inclusive.
department_id
integer
employee_id
string
format
enum: json, xlsx, csv, txt, pdf
File format to return instead of JSON. Omit it - or send Accept: application/json - to get JSON rows you can render yourself.
page
integer
1-based page number.
per_page
integer
Items per page. The engine caps this at 200.

Responses

  • 200 The report as JSON, or as a file when format asks for one. ReportResponse
  • 400 The request was malformed or failed validation. ErrorResponse
  • 401 The key is missing, unknown, or the HMAC signature did not verify. ErrorResponse
  • 403 The key is valid but lacks the scope, or cannot reach this organization. ErrorResponse
GET /reports/ctc-annual

Annual CTC report

Each employee’s annual cost to company for the financial year, component by component, including employer PF, EPS, EDLI and ESI.

Query parameters

organization_id
integer
Organization to act on. Required when the API key can reach more than one organization; optional - and defaulted - when it can reach exactly one.
from required
string (date)
Start of the window, inclusive.
to required
string (date)
End of the window, inclusive.
department_id
integer
employee_id
string
format
enum: json, xlsx, csv, txt, pdf
File format to return instead of JSON. Omit it - or send Accept: application/json - to get JSON rows you can render yourself.
page
integer
1-based page number.
per_page
integer
Items per page. The engine caps this at 200.

Responses

  • 200 The report as JSON, or as a file when format asks for one. ReportResponse
  • 400 The request was malformed or failed validation. ErrorResponse
  • 401 The key is missing, unknown, or the HMAC signature did not verify. ErrorResponse
  • 403 The key is valid but lacks the scope, or cannot reach this organization. ErrorResponse
GET /reports/pay-difference

Pay difference report

What changed between two periods and why - increments, loss of pay, variable components, new joiners and exits.

Query parameters

organization_id
integer
Organization to act on. Required when the API key can reach more than one organization; optional - and defaulted - when it can reach exactly one.
from required
string (date)
Start of the window, inclusive.
to required
string (date)
End of the window, inclusive.
department_id
integer
employee_id
string
format
enum: json, xlsx, csv, txt, pdf
File format to return instead of JSON. Omit it - or send Accept: application/json - to get JSON rows you can render yourself.
page
integer
1-based page number.
per_page
integer
Items per page. The engine caps this at 200.

Responses

  • 200 The report as JSON, or as a file when format asks for one. ReportResponse
  • 400 The request was malformed or failed validation. ErrorResponse
  • 401 The key is missing, unknown, or the HMAC signature did not verify. ErrorResponse
  • 403 The key is valid but lacks the scope, or cannot reach this organization. ErrorResponse
GET /reports/monthly-tds

Monthly TDS report

TDS deducted per employee for the month, with the regime and the projected annual liability it was derived from.

Query parameters

organization_id
integer
Organization to act on. Required when the API key can reach more than one organization; optional - and defaulted - when it can reach exactly one.
from required
string (date)
Start of the window, inclusive.
to required
string (date)
End of the window, inclusive.
department_id
integer
employee_id
string
format
enum: json, xlsx, csv, txt, pdf
File format to return instead of JSON. Omit it - or send Accept: application/json - to get JSON rows you can render yourself.
page
integer
1-based page number.
per_page
integer
Items per page. The engine caps this at 200.

Responses

  • 200 The report as JSON, or as a file when format asks for one. ReportResponse
  • 400 The request was malformed or failed validation. ErrorResponse
  • 401 The key is missing, unknown, or the HMAC signature did not verify. ErrorResponse
  • 403 The key is valid but lacks the scope, or cannot reach this organization. ErrorResponse
GET /reports/esi-deduction

ESI deduction report

Employee and employer ESI per insured person, and who moved in or out of coverage this period.

Query parameters

organization_id
integer
Organization to act on. Required when the API key can reach more than one organization; optional - and defaulted - when it can reach exactly one.
from required
string (date)
Start of the window, inclusive.
to required
string (date)
End of the window, inclusive.
department_id
integer
employee_id
string
format
enum: json, xlsx, csv, txt, pdf
File format to return instead of JSON. Omit it - or send Accept: application/json - to get JSON rows you can render yourself.
page
integer
1-based page number.
per_page
integer
Items per page. The engine caps this at 200.

Responses

  • 200 The report as JSON, or as a file when format asks for one. ReportResponse
  • 400 The request was malformed or failed validation. ErrorResponse
  • 401 The key is missing, unknown, or the HMAC signature did not verify. ErrorResponse
  • 403 The key is valid but lacks the scope, or cannot reach this organization. ErrorResponse
GET /reports/salary-summary

Salary summary

Organization totals by department and by cost centre - the roll-up for a board pack.

Query parameters

organization_id
integer
Organization to act on. Required when the API key can reach more than one organization; optional - and defaulted - when it can reach exactly one.
from required
string (date)
Start of the window, inclusive.
to required
string (date)
End of the window, inclusive.
department_id
integer
employee_id
string
format
enum: json, xlsx, csv, txt, pdf
File format to return instead of JSON. Omit it - or send Accept: application/json - to get JSON rows you can render yourself.
page
integer
1-based page number.
per_page
integer
Items per page. The engine caps this at 200.

Responses

  • 200 The report as JSON, or as a file when format asks for one. ReportResponse
  • 400 The request was malformed or failed validation. ErrorResponse
  • 401 The key is missing, unknown, or the HMAC signature did not verify. ErrorResponse
  • 403 The key is valid but lacks the scope, or cannot reach this organization. ErrorResponse
GET /reports/gratuity

Gratuity report

Accrued gratuity liability across the organization, with years of service and eligibility per employee.

Query parameters

organization_id
integer
Organization to act on. Required when the API key can reach more than one organization; optional - and defaulted - when it can reach exactly one.
from required
string (date)
Start of the window, inclusive.
to required
string (date)
End of the window, inclusive.
department_id
integer
employee_id
string
format
enum: json, xlsx, csv, txt, pdf
File format to return instead of JSON. Omit it - or send Accept: application/json - to get JSON rows you can render yourself.
page
integer
1-based page number.
per_page
integer
Items per page. The engine caps this at 200.

Responses

  • 200 The report as JSON, or as a file when format asks for one. ReportResponse
  • 400 The request was malformed or failed validation. ErrorResponse
  • 401 The key is missing, unknown, or the HMAC signature did not verify. ErrorResponse
  • 403 The key is valid but lacks the scope, or cannot reach this organization. ErrorResponse
GET /reports/leave

Leave report

Leave taken, approved and outstanding per employee, from the HRMS side of the product.

Query parameters

organization_id
integer
Organization to act on. Required when the API key can reach more than one organization; optional - and defaulted - when it can reach exactly one.
from required
string (date)
Start of the window, inclusive.
to required
string (date)
End of the window, inclusive.
department_id
integer
employee_id
string
format
enum: json, xlsx, csv, txt, pdf
File format to return instead of JSON. Omit it - or send Accept: application/json - to get JSON rows you can render yourself.
page
integer
1-based page number.
per_page
integer
Items per page. The engine caps this at 200.

Responses

  • 200 The report as JSON, or as a file when format asks for one. ReportResponse
  • 400 The request was malformed or failed validation. ErrorResponse
  • 401 The key is missing, unknown, or the HMAC signature did not verify. ErrorResponse
  • 403 The key is valid but lacks the scope, or cannot reach this organization. ErrorResponse
GET /reports/expense

Expense report

Claims by employee, category and status, and which run each was reimbursed in.

Query parameters

organization_id
integer
Organization to act on. Required when the API key can reach more than one organization; optional - and defaulted - when it can reach exactly one.
from required
string (date)
Start of the window, inclusive.
to required
string (date)
End of the window, inclusive.
department_id
integer
employee_id
string
format
enum: json, xlsx, csv, txt, pdf
File format to return instead of JSON. Omit it - or send Accept: application/json - to get JSON rows you can render yourself.
page
integer
1-based page number.
per_page
integer
Items per page. The engine caps this at 200.

Responses

  • 200 The report as JSON, or as a file when format asks for one. ReportResponse
  • 400 The request was malformed or failed validation. ErrorResponse
  • 401 The key is missing, unknown, or the HMAC signature did not verify. ErrorResponse
  • 403 The key is valid but lacks the scope, or cannot reach this organization. ErrorResponse