---
title: "Generate an expense report"
method: POST
path: "/v1/workspaces/{workspaceId}/reports/expenses/detailed"
tags: ["Expense Report"]
---

# Generate an expense report

`POST /v1/workspaces/{workspaceId}/reports/expenses/detailed`

Expense report data on FREE subscription plan is limited to a maximum interval length of one month (31 days).

## Path parameters

- `workspaceId` string, required — Represents a workspace identifier across the system.

## Request body

- ExpenseReportFilterV1
  - `approvalState` 'APPROVED' | 'UNAPPROVED' | 'ALL' — Represents an approval state
  - `billable` boolean — Indicates whether report is billable
  - `categories` ContainsArchivedFilterV1
    - `contains` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'CONTAINS_ONLY' — Represents a contains type.
    - `ids` string[] — Filter includes provided list of ids.
    - `status` 'ACTIVE' | 'ARCHIVED' | 'ALL' — Filter entities in 'contains' by their status.
  - `clients` ContainsArchivedFilterV1
    - `contains` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'CONTAINS_ONLY' — Represents a contains type.
    - `ids` string[] — Filter includes provided list of ids.
    - `status` 'ACTIVE' | 'ARCHIVED' | 'ALL' — Filter entities in 'contains' by their status.
  - `currency` ContainsArchivedFilterV1
    - `contains` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'CONTAINS_ONLY' — Represents a contains type.
    - `ids` string[] — Filter includes provided list of ids.
    - `status` 'ACTIVE' | 'ARCHIVED' | 'ALL' — Filter entities in 'contains' by their status.
  - `dateRangeEnd` string, required — Provide date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)
  - `dateRangeStart` string, required — Provide date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)
  - `dateRangeType` 'ABSOLUTE' | 'TODAY' | 'YESTERDAY' | 'THIS_WEEK' | 'LAST_WEEK' | 'PAST_TWO_WEEKS' | 'THIS_MONTH' | 'LAST_MONTH' | 'THIS_YEAR' | 'LAST_YEAR' — Represents date range type of expense report
  - `exportType` 'JSON' | 'JSON_V1' | 'PDF' | 'CSV' | 'XLSX' | 'ZIP' — Represents an export type
  - `invoicingState` 'INVOICED' | 'UNINVOICED' | 'ALL' — Represents an invoicing state
  - `note` string — Represents a search term for filtering report entries by note
  - `page` integer — Page number.
  - `pageSize` integer — Page size.
  - `projects` ContainsArchivedFilterV1
    - `contains` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'CONTAINS_ONLY' — Represents a contains type.
    - `ids` string[] — Filter includes provided list of ids.
    - `status` 'ACTIVE' | 'ARCHIVED' | 'ALL' — Filter entities in 'contains' by their status.
  - `sortColumn` 'ID' | 'PROJECT' | 'USER' | 'CATEGORY' | 'DATE' | 'AMOUNT' — Represents expenses sort column
  - `sortOrder` 'ASCENDING' | 'DESCENDING' — Represents a sort order
  - `tasks` ContainsTaskFilterV1 — Represents filter criteria for expenses associated with tasks.
    - `contains` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'CONTAINS_ONLY' — Represents a contains type.
    - `ids` string[] — Filter includes provided list of ids.
    - `status` 'ACTIVE' | 'ARCHIVED' | 'ALL' — Filter entities in 'contains' by their status.
  - `timeZone` string — Represents a time zone
  - `userGroups` ContainsUsersFilterV1
    - `contains` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'CONTAINS_ONLY' — Represents a contains type.
    - `ids` string[] — Filter includes provided list of ids.
    - `status` 'ALL' | 'ACTIVE_WITH_PENDING' | 'ACTIVE' | 'PENDING' | 'INACTIVE' — Filter entities in 'contains' by their status.
  - `userLocale` string — Represents a user locale
  - `users` ContainsUsersFilterV1
    - `contains` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'CONTAINS_ONLY' — Represents a contains type.
    - `ids` string[] — Filter includes provided list of ids.
    - `status` 'ALL' | 'ACTIVE_WITH_PENDING' | 'ACTIVE' | 'PENDING' | 'INACTIVE' — Filter entities in 'contains' by their status.
  - `weekStart` 'MONDAY' | 'TUESDAY' | 'WEDNESDAY' | 'THURSDAY' | 'FRIDAY' | 'SATURDAY' | 'SUNDAY' — Represents week start
  - `withoutNote` boolean — If set to 'true', report will only include entries with empty note
  - `zoomLevel` 'WEEK' | 'MONTH' | 'YEAR' — Represents a zoom level

## Response `200`

OK

- ExpenseDetailedReportDtoV1 — report
  - `expenses` ExpenseReportDtoV1[] — Represents list of expenses
    - `amount` number, double — Represents expenses amount.
    - `approvalRequestId` string — Represents approval request identifier across the system.
    - `billable` boolean — Indicates whether the expenses is billable.
    - `categoryHasUnitPrice` boolean — Indicates whether category has unit price.
    - `categoryId` string — Represents category identifier across the system.
    - `categoryName` string — Represents category's name.
    - `categoryUnit` string — Represents category's unit.
    - `date` string — Represents expenses date in YYYY-MM-DDTHH:MM:SS.ssssssZ format.
    - `exportFields` string[] — Represents export fields.
    - `fileId` string — Represents file identifier across the system.
    - `fileName` string — Represents expenses file name.
    - `id` string — Represents expenses identifier across the system.
    - `invoicingInfo` InvoicingInfo — Expense's invoicing info.
      - `invoiceId` string
      - `manuallyInvoiced` boolean
    - `locked` boolean — Indicates whether the expenses is locked.
    - `notes` string — Represents expenses note.
    - `projectColor` string — Represents project's color
    - `projectId` string — Represents project identifier across the system.
    - `projectName` string — Represents project's name.
    - `quantity` number, double — Represents expenses quantity
    - `reportName` string — Represents expense name.
    - `time` string — Represents expense time.
    - `userEmail` string — Represents user's email.
    - `userId` string — Represents user identifier across the system.
    - `userName` string — Represents user's name.
    - `userStatus` string — Represents user's status.
    - `workspaceId` string — Represents workspace identifier across the system.
  - `totals` ExpenseTotalsDtoV1 — Represents expense totals
    - `expensesCount` integer — Represents expenses count
    - `totalAmount` number, double — Represents total amount of expenses
    - `totalAmountBillable` number, double — Represents total billable amount of expenses

---

[API](https://skmtc.dev/clockify/apis/clockify-api.md) · [All operations](https://skmtc.dev/clockify/apis/clockify-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/clockify/clockify-api/revisions/a5b636acbcd8/schema)
