Skip to main content

Payroll

Everything about pay, and nothing writable. The figure on an entry is the product of attendance, leave, loans, bonuses, adjustments, statutory contributions and tax slabs — a write path that set it directly would produce a number the workspace itself disagrees with.

Money is a decimal string at two places; days are at one, because half days are real and hundredths of a day are not.

Plan feature

These endpoints need a plan that includes Payroll (payroll). On a plan without it, requests return 402 with code: plan_upgrade_required and feature naming what an upgrade would add.

List salary components​

GET/v1/salary_components

Query parameters​

NameTypeRequiredDescription
limitintegerNoPage size. Values above 100 are clamped.
starting_afterstringNoOpaque cursor from a previous response’s next_cursor.
updated_sincetimestampNoReturn records changed at or after this instant. Tracks the record itself, not its child collections.
is_activebooleanNoFilter by whether the record is in use.
typestringNoearning, deduction, or employer_contribution.
codestringNoLook up one component by its code.

Responses​

StatusMeaning
200A page of salary components.
401The API key is missing, malformed, revoked or expired.
402The workspace's plan does not include Payroll (plan_upgrade_required).
403The key does not carry the required scopes.
429Rate limit exceeded. See the RateLimit-* headers.

Retrieve a salary component​

GET/v1/salary_components/{id}

Path parameters​

NameTypeRequiredDescription
idstringYesThe identifier returned as id on the object.

Responses​

StatusMeaning
200The salary component.
401The API key is missing, malformed, revoked or expired.
402The workspace's plan does not include Payroll (plan_upgrade_required).
403The key does not carry the required scopes.
404No such salary component in this workspace.
429Rate limit exceeded. See the RateLimit-* headers.

List salary structures​

GET/v1/salary_structures

Query parameters​

NameTypeRequiredDescription
limitintegerNoPage size. Values above 100 are clamped.
starting_afterstringNoOpaque cursor from a previous response’s next_cursor.
updated_sincetimestampNoReturn records changed at or after this instant. Tracks the record itself, not its child collections.
is_activebooleanNoFilter by whether the record is in use.

Responses​

StatusMeaning
200A page of salary structures.
401The API key is missing, malformed, revoked or expired.
402The workspace's plan does not include Payroll (plan_upgrade_required).
403The key does not carry the required scopes.
429Rate limit exceeded. See the RateLimit-* headers.

Retrieve a salary structure​

GET/v1/salary_structures/{id}

Path parameters​

NameTypeRequiredDescription
idstringYesThe identifier returned as id on the object.

Responses​

StatusMeaning
200The salary structure.
401The API key is missing, malformed, revoked or expired.
402The workspace's plan does not include Payroll (plan_upgrade_required).
403The key does not carry the required scopes.
404No such salary structure in this workspace.
429Rate limit exceeded. See the RateLimit-* headers.

List salary structure components​

GET/v1/salary_structure_components

Query parameters​

NameTypeRequiredDescription
limitintegerNoPage size. Values above 100 are clamped.
starting_afterstringNoOpaque cursor from a previous response’s next_cursor.
salary_structure_idstringNoOnly components of this structure.
salary_component_idstringNoOnly rows for this component.

Responses​

StatusMeaning
200A page of salary structure components.
401The API key is missing, malformed, revoked or expired.
402The workspace's plan does not include Payroll (plan_upgrade_required).
403The key does not carry the required scopes.
429Rate limit exceeded. See the RateLimit-* headers.

Retrieve a salary structure component​

GET/v1/salary_structure_components/{id}

Path parameters​

NameTypeRequiredDescription
idstringYesThe identifier returned as id on the object.

Responses​

StatusMeaning
200The salary structure component.
401The API key is missing, malformed, revoked or expired.
402The workspace's plan does not include Payroll (plan_upgrade_required).
403The key does not carry the required scopes.
404No such salary structure component in this workspace.
429Rate limit exceeded. See the RateLimit-* headers.

List salary assignments​

GET/v1/salary_assignments

Query parameters​

NameTypeRequiredDescription
limitintegerNoPage size. Values above 100 are clamped.
starting_afterstringNoOpaque cursor from a previous response’s next_cursor.
updated_sincetimestampNoReturn records changed at or after this instant. Tracks the record itself, not its child collections.
employee_idstringNoOnly records for this employee.
salary_structure_idstringNoOnly assignments on this structure.

Responses​

StatusMeaning
200A page of salary assignments.
401The API key is missing, malformed, revoked or expired.
402The workspace's plan does not include Payroll (plan_upgrade_required).
403The key does not carry the required scopes.
429Rate limit exceeded. See the RateLimit-* headers.

Retrieve a salary assignment​

GET/v1/salary_assignments/{id}

Path parameters​

NameTypeRequiredDescription
idstringYesThe identifier returned as id on the object.

Responses​

StatusMeaning
200The salary assignment.
401The API key is missing, malformed, revoked or expired.
402The workspace's plan does not include Payroll (plan_upgrade_required).
403The key does not carry the required scopes.
404No such salary assignment in this workspace.
429Rate limit exceeded. See the RateLimit-* headers.

List payroll runs​

GET/v1/payroll_runs

Query parameters​

NameTypeRequiredDescription
limitintegerNoPage size. Values above 100 are clamped.
starting_afterstringNoOpaque cursor from a previous response’s next_cursor.
updated_sincetimestampNoReturn records changed at or after this instant. Tracks the record itself, not its child collections.
statusstringNoOnly runs in this state.
sourcestringNoprocessed or imported.
monthintegerNoCalendar month, 1–12.
yearintegerNoCalendar year.

Responses​

StatusMeaning
200A page of payroll runs.
401The API key is missing, malformed, revoked or expired.
402The workspace's plan does not include Payroll (plan_upgrade_required).
403The key does not carry the required scopes.
429Rate limit exceeded. See the RateLimit-* headers.

Retrieve a payroll run​

GET/v1/payroll_runs/{id}

Path parameters​

NameTypeRequiredDescription
idstringYesThe identifier returned as id on the object.

Responses​

StatusMeaning
200The payroll run.
401The API key is missing, malformed, revoked or expired.
402The workspace's plan does not include Payroll (plan_upgrade_required).
403The key does not carry the required scopes.
404No such payroll run in this workspace.
429Rate limit exceeded. See the RateLimit-* headers.

List payroll entries​

GET/v1/payroll_entries

Query parameters​

NameTypeRequiredDescription
limitintegerNoPage size. Values above 100 are clamped.
starting_afterstringNoOpaque cursor from a previous response’s next_cursor.
updated_sincetimestampNoReturn records changed at or after this instant. Tracks the record itself, not its child collections.
employee_idstringNoOnly records for this employee.
payroll_run_idstringNoOnly entries in this run.
statusstringNoOnly entries in this state.

Responses​

StatusMeaning
200A page of payroll entries.
401The API key is missing, malformed, revoked or expired.
402The workspace's plan does not include Payroll (plan_upgrade_required).
403The key does not carry the required scopes.
429Rate limit exceeded. See the RateLimit-* headers.

Retrieve a payroll entry​

GET/v1/payroll_entries/{id}

Path parameters​

NameTypeRequiredDescription
idstringYesThe identifier returned as id on the object.

Responses​

StatusMeaning
200The payroll entry.
401The API key is missing, malformed, revoked or expired.
402The workspace's plan does not include Payroll (plan_upgrade_required).
403The key does not carry the required scopes.
404No such payroll entry in this workspace.
429Rate limit exceeded. See the RateLimit-* headers.

List payroll entry components​

GET/v1/payroll_entry_components

Query parameters​

NameTypeRequiredDescription
limitintegerNoPage size. Values above 100 are clamped.
starting_afterstringNoOpaque cursor from a previous response’s next_cursor.
payroll_entry_idstringNoOnly lines on this entry.
salary_component_idstringNoOnly lines for this component.
typestringNoearning, deduction, or employer_contribution.

Responses​

StatusMeaning
200A page of payroll entry components.
401The API key is missing, malformed, revoked or expired.
402The workspace's plan does not include Payroll (plan_upgrade_required).
403The key does not carry the required scopes.
429Rate limit exceeded. See the RateLimit-* headers.

Retrieve a payroll entry component​

GET/v1/payroll_entry_components/{id}

Path parameters​

NameTypeRequiredDescription
idstringYesThe identifier returned as id on the object.

Responses​

StatusMeaning
200The payroll entry component.
401The API key is missing, malformed, revoked or expired.
402The workspace's plan does not include Payroll (plan_upgrade_required).
403The key does not carry the required scopes.
404No such payroll entry component in this workspace.
429Rate limit exceeded. See the RateLimit-* headers.

List salary slips​

GET/v1/salary_slips

Query parameters​

NameTypeRequiredDescription
limitintegerNoPage size. Values above 100 are clamped.
starting_afterstringNoOpaque cursor from a previous response’s next_cursor.
payroll_entry_idstringNoOnly slips for this entry.

Responses​

StatusMeaning
200A page of salary slips.
401The API key is missing, malformed, revoked or expired.
402The workspace's plan does not include Payroll (plan_upgrade_required).
403The key does not carry the required scopes.
429Rate limit exceeded. See the RateLimit-* headers.

Retrieve a salary slip​

GET/v1/salary_slips/{id}

Path parameters​

NameTypeRequiredDescription
idstringYesThe identifier returned as id on the object.

Responses​

StatusMeaning
200The salary slip.
401The API key is missing, malformed, revoked or expired.
402The workspace's plan does not include Payroll (plan_upgrade_required).
403The key does not carry the required scopes.
404No such salary slip in this workspace.
429Rate limit exceeded. See the RateLimit-* headers.