Skip to main content

Expenses

Reimbursement claims, under their own expenses:read scope — an expense integration should not have to be trusted with everyone’s salary. An approved claim becomes a payroll addition rather than a separate payment, which is what payroll_adjustment_id points at.

List expense categories

GET/v1/expense_categories

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 expense categories.
401The API key is missing, malformed, revoked or expired.
403The key does not carry the required scopes.
429Rate limit exceeded. See the RateLimit-* headers.

Retrieve an expense category

GET/v1/expense_categories/{id}

Path parameters

NameTypeRequiredDescription
idstringYesThe identifier returned as id on the object.

Responses

StatusMeaning
200The expense category.
401The API key is missing, malformed, revoked or expired.
403The key does not carry the required scopes.
404No such expense category in this workspace.
429Rate limit exceeded. See the RateLimit-* headers.

List expense claims

GET/v1/expense_claims

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.
statusstringNoOnly claims in this state.

Responses

StatusMeaning
200A page of expense claims.
401The API key is missing, malformed, revoked or expired.
403The key does not carry the required scopes.
429Rate limit exceeded. See the RateLimit-* headers.

Retrieve an expense claim

GET/v1/expense_claims/{id}

Path parameters

NameTypeRequiredDescription
idstringYesThe identifier returned as id on the object.

Responses

StatusMeaning
200The expense claim.
401The API key is missing, malformed, revoked or expired.
403The key does not carry the required scopes.
404No such expense claim in this workspace.
429Rate limit exceeded. See the RateLimit-* headers.

List expense claim items

GET/v1/expense_claim_items

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.
claim_idstringNoOnly items on this claim.
category_idstringNoOnly items in this category.
expense_date_fromdateNoInclusive lower bound on the expense date.
expense_date_todateNoInclusive upper bound — the named day is included.

Responses

StatusMeaning
200A page of expense claim items.
401The API key is missing, malformed, revoked or expired.
403The key does not carry the required scopes.
429Rate limit exceeded. See the RateLimit-* headers.

Retrieve an expense claim item

GET/v1/expense_claim_items/{id}

Path parameters

NameTypeRequiredDescription
idstringYesThe identifier returned as id on the object.

Responses

StatusMeaning
200The expense claim item.
401The API key is missing, malformed, revoked or expired.
403The key does not carry the required scopes.
404No such expense claim item in this workspace.
429Rate limit exceeded. See the RateLimit-* headers.