---
title: "Get expense reports"
method: GET
path: "/api/v2/reports/expense_reports"
tags: ["Reports"]
---

# Get expense reports

`GET /api/v2/reports/expense_reports`

Retrieve aggregated expense report data grouped by configurable dimensions.

## Query parameters

- `sort` string[]
- `group` 'approval_status' | 'approved_at' | 'approver' | 'company' | 'created_at' | 'creator' | 'custom_fields' | 'date' | 'deal' | 'designated_approver' | 'expense' | 'invoice' | 'invoiced' | 'invoicing_status' | 'month' | 'organization' | 'paid_on' | 'pay_on' | 'person' | 'project' | 'purchase_order' | 'quarter' | 'quote_type' | 'reimbursed_on' | 'reimbursement' | 'responsible' | 'section_name' | 'service' | 'service_type' | 'stage_type' | 'status' | 'tax_rate' | 'updated_at' | 'updater' | 'vendor' | 'week' | 'year'
- `filter` union — Filter schema for `expense_report` list endpoints — pass a single condition or a logical group.
  - FilterExpenseReport — Available filter parameters for querying aggregated expense report data.
    - `date` union — Filter by expense date range (`date`).
      - Date — unresolved $ref
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `eq` Date — unresolved $ref
        - `contains` Date — unresolved $ref
        - `not_eq` Date — unresolved $ref
        - `not_contain` Date — unresolved $ref
    - `quantity` union — Filter expense report results by quantity.
      - Quantity — unresolved $ref
      - object — Filter operator object for quantity.
        - `not_eq` Quantity — unresolved $ref
        - `eq` Quantity — unresolved $ref
        - `contains` Quantity — unresolved $ref
        - `not_contain` Quantity — unresolved $ref
    - `query` union — Filter expense report results by query.
      - object — Filter operator object for query.
        - `not_contain` Query — unresolved $ref
        - `contains` Query — unresolved $ref
        - `not_eq` Query — unresolved $ref
        - `eq` Query — unresolved $ref
      - Query — unresolved $ref
    - `recognized_revenue` union — Filter expense report results by recognized revenue.
      - RecognizedRevenue — unresolved $ref
      - object — Filter operator object for recognized revenue.
        - `not_eq` RecognizedRevenue — unresolved $ref
        - `eq` RecognizedRevenue — unresolved $ref
        - `not_contain` RecognizedRevenue — unresolved $ref
        - `contains` RecognizedRevenue — unresolved $ref
    - `invoice_id` union — Filter by the associated invoice.
      - InvoiceId — unresolved $ref
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `not_contain` InvoiceId — unresolved $ref
        - `not_eq` InvoiceId — unresolved $ref
        - `contains` InvoiceId — unresolved $ref
        - `eq` InvoiceId — unresolved $ref
    - `paid_on_before` union — Filter to include expenses paid before the given date.
      - PaidOnBefore — unresolved $ref
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `eq` PaidOnBefore — unresolved $ref
        - `not_eq` PaidOnBefore — unresolved $ref
        - `not_contain` PaidOnBefore — unresolved $ref
        - `contains` PaidOnBefore — unresolved $ref
    - `draft` union — Filter by draft status; when true, includes only draft expenses.
      - Draft — unresolved $ref
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `not_contain` Draft — unresolved $ref
        - `not_eq` Draft — unresolved $ref
        - `eq` Draft — unresolved $ref
        - `contains` Draft — unresolved $ref
    - `designated_approver_id` union — Filter by the designated approver of the expense's associated quote.
      - DesignatedApproverId — unresolved $ref
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `eq` DesignatedApproverId — unresolved $ref
        - `not_contain` DesignatedApproverId — unresolved $ref
        - `not_eq` DesignatedApproverId — unresolved $ref
        - `contains` DesignatedApproverId — unresolved $ref
    - `pay_on_after` union — Filter expense report results by pay on after.
      - PayOnAfter — unresolved $ref
      - object — Filter operator object for pay on after.
        - `not_contain` PayOnAfter — unresolved $ref
        - `eq` PayOnAfter — unresolved $ref
        - `contains` PayOnAfter — unresolved $ref
        - `not_eq` PayOnAfter — unresolved $ref
    - `billable_amount` union — Filter by the billable amount — the cost billed to the client.
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `eq` BillableAmount — unresolved $ref
        - `not_eq` BillableAmount — unresolved $ref
        - `not_contain` BillableAmount — unresolved $ref
        - `contains` BillableAmount — unresolved $ref
      - BillableAmount — unresolved $ref
    - `company_id` union — Filter expense report results by company id.
      - CompanyId — unresolved $ref
      - object — Filter operator object for company id.
        - `contains` CompanyId — unresolved $ref
        - `eq` CompanyId — unresolved $ref
        - `not_contain` CompanyId — unresolved $ref
        - `not_eq` CompanyId — unresolved $ref
    - `fuzzy_dates` union — Filter using fuzzy/relative date expressions (e.g. 'this month', 'last quarter').
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `not_contain` FuzzyDates — unresolved $ref
        - `not_eq` FuzzyDates — unresolved $ref
        - `contains` FuzzyDates — unresolved $ref
        - `eq` FuzzyDates — unresolved $ref
      - FuzzyDates — unresolved $ref
    - `currency` union — Filter by the currency code of the expense.
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `not_contain` Currency — unresolved $ref
        - `not_eq` Currency — unresolved $ref
        - `contains` Currency — unresolved $ref
        - `eq` Currency — unresolved $ref
      - Currency — unresolved $ref
    - `approved_at` union — Filter by the date the expense was approved.
      - ApprovedAt — unresolved $ref
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `eq` ApprovedAt — unresolved $ref
        - `not_eq` ApprovedAt — unresolved $ref
        - `not_contain` ApprovedAt — unresolved $ref
        - `contains` ApprovedAt — unresolved $ref
    - `date_before` union — Filter to include expenses with a date before the given value.
      - DateBefore — unresolved $ref
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `not_eq` DateBefore — unresolved $ref
        - `contains` DateBefore — unresolved $ref
        - `eq` DateBefore — unresolved $ref
        - `not_contain` DateBefore — unresolved $ref
    - `assigned_approver_id` union — Filter by a person assigned as an approver on the expense.
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `contains` AssignedApproverId — unresolved $ref
        - `not_contain` AssignedApproverId — unresolved $ref
        - `eq` AssignedApproverId — unresolved $ref
        - `not_eq` AssignedApproverId — unresolved $ref
      - AssignedApproverId — unresolved $ref
    - `amount` union — Filter by expense amount range (before tax).
      - Amount — unresolved $ref
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `eq` Amount — unresolved $ref
        - `not_contain` Amount — unresolved $ref
        - `not_eq` Amount — unresolved $ref
        - `contains` Amount — unresolved $ref
    - `vendor_id` union — Filter expense report results by vendor id.
      - VendorId — unresolved $ref
      - object — Filter operator object for vendor id.
        - `not_eq` VendorId — unresolved $ref
        - `not_contain` VendorId — unresolved $ref
        - `eq` VendorId — unresolved $ref
        - `contains` VendorId — unresolved $ref
    - `service_type_id` union — Filter expense report results by service type id.
      - ServiceTypeId — unresolved $ref
      - object — Filter operator object for service type id.
        - `contains` ServiceTypeId — unresolved $ref
        - `eq` ServiceTypeId — unresolved $ref
        - `not_eq` ServiceTypeId — unresolved $ref
        - `not_contain` ServiceTypeId — unresolved $ref
    - `stage_type` union — Filter expense report results by stage type.
      - object — Filter operator object for stage type.
        - `contains` StageType — unresolved $ref
        - `eq` StageType — unresolved $ref
        - `not_contain` StageType — unresolved $ref
        - `not_eq` StageType — unresolved $ref
      - StageType — unresolved $ref
    - `section_name` union — Filter expense report results by section name.
      - object — Filter operator object for section name.
        - `eq` SectionName — unresolved $ref
        - `not_eq` SectionName — unresolved $ref
        - `not_contain` SectionName — unresolved $ref
        - `contains` SectionName — unresolved $ref
      - SectionName — unresolved $ref
    - `allocation_status` union — Filter by the allocation status of the expense (e.g. billable, non-billable).
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `contains` AllocationStatus — unresolved $ref
        - `not_contain` AllocationStatus — unresolved $ref
        - `eq` AllocationStatus — unresolved $ref
        - `not_eq` AllocationStatus — unresolved $ref
      - AllocationStatus — unresolved $ref
    - `person_id` union — Filter expense report results by person id.
      - PersonId — unresolved $ref
      - object — Filter operator object for person id.
        - `not_eq` PersonId — unresolved $ref
        - `eq` PersonId — unresolved $ref
        - `not_contain` PersonId — unresolved $ref
        - `contains` PersonId — unresolved $ref
    - `created_at` union — Filter by creation date range (`created_at`).
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `contains` CreatedAt — unresolved $ref
        - `not_contain` CreatedAt — unresolved $ref
        - `not_eq` CreatedAt — unresolved $ref
        - `eq` CreatedAt — unresolved $ref
      - CreatedAt — unresolved $ref
    - `reimbursement` union — Filter expense report results by reimbursement.
      - Reimbursement — unresolved $ref
      - object — Filter operator object for reimbursement.
        - `contains` Reimbursement — unresolved $ref
        - `eq` Reimbursement — unresolved $ref
        - `not_eq` Reimbursement — unresolved $ref
        - `not_contain` Reimbursement — unresolved $ref
    - `status` union — Filter expense report results by status.
      - object — Filter operator object for status.
        - `eq` Status — unresolved $ref
        - `not_eq` Status — unresolved $ref
        - `not_contain` Status — unresolved $ref
        - `contains` Status — unresolved $ref
      - Status — unresolved $ref
    - `service_id` union — Filter expense report results by service id.
      - ServiceId — unresolved $ref
      - object — Filter operator object for service id.
        - `contains` ServiceId — unresolved $ref
        - `not_eq` ServiceId — unresolved $ref
        - `not_contain` ServiceId — unresolved $ref
        - `eq` ServiceId — unresolved $ref
    - `updater_id` union
      - UpdaterId — unresolved $ref
      - object
        - `not_eq` UpdaterId — unresolved $ref
        - `eq` UpdaterId — unresolved $ref
        - `not_contain` UpdaterId — unresolved $ref
        - `contains` UpdaterId — unresolved $ref
    - `updated_at` union
      - UpdatedAt — unresolved $ref
      - object
        - `not_eq` UpdatedAt — unresolved $ref
        - `contains` UpdatedAt — unresolved $ref
        - `not_contain` UpdatedAt — unresolved $ref
        - `eq` UpdatedAt — unresolved $ref
    - `approval_status` union — Filter by expense approval status.
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `not_contain` ApprovalStatus — unresolved $ref
        - `not_eq` ApprovalStatus — unresolved $ref
        - `eq` ApprovalStatus — unresolved $ref
        - `contains` ApprovalStatus — unresolved $ref
      - ApprovalStatus — unresolved $ref
    - `awaiting_approval_from_approver_id` union — Filter by approver ID for expenses awaiting that person's approval.
      - AwaitingApprovalFromApproverId — unresolved $ref
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `eq` AwaitingApprovalFromApproverId — unresolved $ref
        - `contains` AwaitingApprovalFromApproverId — unresolved $ref
        - `not_eq` AwaitingApprovalFromApproverId — unresolved $ref
        - `not_contain` AwaitingApprovalFromApproverId — unresolved $ref
    - `paid_on_after` union — Filter to include expenses paid after the given date.
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `contains` PaidOnAfter — unresolved $ref
        - `not_eq` PaidOnAfter — unresolved $ref
        - `eq` PaidOnAfter — unresolved $ref
        - `not_contain` PaidOnAfter — unresolved $ref
      - PaidOnAfter — unresolved $ref
    - `id` union — Filter by expense ID.
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `not_eq` Id — unresolved $ref
        - `contains` Id — unresolved $ref
        - `eq` Id — unresolved $ref
        - `not_contain` Id — unresolved $ref
      - Id — unresolved $ref
    - `formulas` union — Filter by calculated formula field values.
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `eq` Formulas — unresolved $ref
        - `not_contain` Formulas — unresolved $ref
        - `not_eq` Formulas — unresolved $ref
        - `contains` Formulas — unresolved $ref
      - Formulas — unresolved $ref
    - `paid_on` union — Filter by payment date range (`paid_on`).
      - PaidOn — unresolved $ref
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `contains` PaidOn — unresolved $ref
        - `not_contain` PaidOn — unresolved $ref
        - `not_eq` PaidOn — unresolved $ref
        - `eq` PaidOn — unresolved $ref
    - `purchase_order_id` union — Filter expense report results by purchase order id.
      - PurchaseOrderId — unresolved $ref
      - object — Filter operator object for purchase order id.
        - `not_eq` PurchaseOrderId — unresolved $ref
        - `not_contain` PurchaseOrderId — unresolved $ref
        - `eq` PurchaseOrderId — unresolved $ref
        - `contains` PurchaseOrderId — unresolved $ref
    - `custom_fields` union — Filter by custom field values.
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `not_contain` CustomFields — unresolved $ref
        - `contains` CustomFields — unresolved $ref
        - `eq` CustomFields — unresolved $ref
        - `not_eq` CustomFields — unresolved $ref
      - CustomFields — unresolved $ref
    - `full_query` union — Full-text search query across expense report fields.
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `not_contain` FullQuery — unresolved $ref
        - `eq` FullQuery — unresolved $ref
        - `not_eq` FullQuery — unresolved $ref
        - `contains` FullQuery — unresolved $ref
      - FullQuery — unresolved $ref
    - `name` union — Filter by the expense description (what it was for).
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `not_eq` Name — unresolved $ref
        - `eq` Name — unresolved $ref
        - `contains` Name — unresolved $ref
        - `not_contain` Name — unresolved $ref
      - Name — unresolved $ref
    - `reimbursed_on` union — Filter expense report results by reimbursed on.
      - object — Filter operator object for reimbursed on.
        - `not_eq` ReimbursedOn — unresolved $ref
        - `not_contain` ReimbursedOn — unresolved $ref
        - `eq` ReimbursedOn — unresolved $ref
        - `contains` ReimbursedOn — unresolved $ref
      - ReimbursedOn — unresolved $ref
    - `amount_with_tax` union — Filter by expense amount range including tax.
      - AmountWithTax — unresolved $ref
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `not_contain` AmountWithTax — unresolved $ref
        - `contains` AmountWithTax — unresolved $ref
        - `eq` AmountWithTax — unresolved $ref
        - `not_eq` AmountWithTax — unresolved $ref
    - `reimbursable` union — Filter expense report results by reimbursable.
      - object — Filter operator object for reimbursable.
        - `eq` Reimbursable — unresolved $ref
        - `not_contain` Reimbursable — unresolved $ref
        - `not_eq` Reimbursable — unresolved $ref
        - `contains` Reimbursable — unresolved $ref
      - Reimbursable — unresolved $ref
    - `pay_on` union — Filter expense report results by pay on.
      - PayOn — unresolved $ref
      - object — Filter operator object for pay on.
        - `not_contain` PayOn — unresolved $ref
        - `not_eq` PayOn — unresolved $ref
        - `contains` PayOn — unresolved $ref
        - `eq` PayOn — unresolved $ref
    - `jump_query` union — Internal quick-search query for jump navigation.
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `not_contain` JumpQuery — unresolved $ref
        - `contains` JumpQuery — unresolved $ref
        - `eq` JumpQuery — unresolved $ref
        - `not_eq` JumpQuery — unresolved $ref
      - JumpQuery — unresolved $ref
    - `date_after` union — Filter to include expenses with a date after the given value.
      - DateAfter — unresolved $ref
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `eq` DateAfter — unresolved $ref
        - `not_contain` DateAfter — unresolved $ref
        - `not_eq` DateAfter — unresolved $ref
        - `contains` DateAfter — unresolved $ref
    - `invoicing_status` union — Filter by invoicing status (not invoiced, drafted, or finalized).
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `not_contain` InvoicingStatus — unresolved $ref
        - `not_eq` InvoicingStatus — unresolved $ref
        - `eq` InvoicingStatus — unresolved $ref
        - `contains` InvoicingStatus — unresolved $ref
      - InvoicingStatus — unresolved $ref
    - `creator_id` union — Filter by the person who created the expense.
      - CreatorId — unresolved $ref
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `eq` CreatorId — unresolved $ref
        - `not_contain` CreatorId — unresolved $ref
        - `not_eq` CreatorId — unresolved $ref
        - `contains` CreatorId — unresolved $ref
    - `quote_type` union — Filter expense report results by quote type.
      - QuoteType — unresolved $ref
      - object — Filter operator object for quote type.
        - `contains` QuoteType — unresolved $ref
        - `not_contain` QuoteType — unresolved $ref
        - `not_eq` QuoteType — unresolved $ref
        - `eq` QuoteType — unresolved $ref
    - `deal_id` union — Filter by the associated budget or deal.
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `not_contain` DealId — unresolved $ref
        - `eq` DealId — unresolved $ref
        - `not_eq` DealId — unresolved $ref
        - `contains` DealId — unresolved $ref
      - DealId — unresolved $ref
    - `with_draft` union — Filter expense report results by with draft.
      - WithDraft — unresolved $ref
      - object — Filter operator object for with draft.
        - `not_eq` WithDraft — unresolved $ref
        - `not_contain` WithDraft — unresolved $ref
        - `eq` WithDraft — unresolved $ref
        - `contains` WithDraft — unresolved $ref
    - `fuzzy_people` union — Filter using fuzzy/partial person name matching.
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `contains` FuzzyPeople — unresolved $ref
        - `eq` FuzzyPeople — unresolved $ref
        - `not_eq` FuzzyPeople — unresolved $ref
        - `not_contain` FuzzyPeople — unresolved $ref
      - FuzzyPeople — unresolved $ref
    - `tax_rate_id` union — Filter expense report results by tax rate id.
      - object — Filter operator object for tax rate id.
        - `contains` TaxRateId — unresolved $ref
        - `not_eq` TaxRateId — unresolved $ref
        - `not_contain` TaxRateId — unresolved $ref
        - `eq` TaxRateId — unresolved $ref
      - TaxRateId — unresolved $ref
    - `profit` union — Filter expense report results by profit.
      - Profit — unresolved $ref
      - object — Filter operator object for profit.
        - `contains` Profit — unresolved $ref
        - `not_contain` Profit — unresolved $ref
        - `not_eq` Profit — unresolved $ref
        - `eq` Profit — unresolved $ref
    - `invoiced` union — Filter by invoiced status; when true, includes only invoiced expenses.
      - Invoiced — unresolved $ref
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `contains` Invoiced — unresolved $ref
        - `not_eq` Invoiced — unresolved $ref
        - `eq` Invoiced — unresolved $ref
        - `not_contain` Invoiced — unresolved $ref
    - `pay_on_before` union — Filter expense report results by pay on before.
      - PayOnBefore — unresolved $ref
      - object — Filter operator object for pay on before.
        - `not_contain` PayOnBefore — unresolved $ref
        - `contains` PayOnBefore — unresolved $ref
        - `not_eq` PayOnBefore — unresolved $ref
        - `eq` PayOnBefore — unresolved $ref
    - `export_status` union — Filter by the export status of the expense (e.g. whether it was copied to accounting software).
      - ExportStatus — unresolved $ref
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `not_eq` ExportStatus — unresolved $ref
        - `not_contain` ExportStatus — unresolved $ref
        - `eq` ExportStatus — unresolved $ref
        - `contains` ExportStatus — unresolved $ref
    - `responsible_id` union — Filter expense report results by responsible id.
      - ResponsibleId — unresolved $ref
      - object — Filter operator object for responsible id.
        - `contains` ResponsibleId — unresolved $ref
        - `not_eq` ResponsibleId — unresolved $ref
        - `not_contain` ResponsibleId — unresolved $ref
        - `eq` ResponsibleId — unresolved $ref
    - `project_id` union — Filter expense report results by project id.
      - ProjectId — unresolved $ref
      - object — Filter operator object for project id.
        - `eq` ProjectId — unresolved $ref
        - `not_contain` ProjectId — unresolved $ref
        - `not_eq` ProjectId — unresolved $ref
        - `contains` ProjectId — unresolved $ref
    - `approver_id` union — Filter by the person who approved the expense.
      - ApproverId — unresolved $ref
      - object — Operator object — supports eq, not_eq, contains, not_contain.
        - `not_contain` ApproverId — unresolved $ref
        - `contains` ApproverId — unresolved $ref
        - `eq` ApproverId — unresolved $ref
        - `not_eq` ApproverId — unresolved $ref
  - object — A logical filter group — combine multiple conditions with the `$op` operator.
    - `$op` 'or' | 'and', required — Logical operator combining conditions in this group. `or` matches records satisfying any condition; `and` requires all conditions to match.

## Headers

- `X-Organization-Id` string, required

## Response `200`

Collection expense report

---

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