---
title: "List all expenses"
method: GET
path: "/expenses"
tags: ["Expenses"]
---

# List all expenses

`GET /expenses`

## Request

- Base URL: `https://app.hireart.com/api/v2`
- URL: `https://app.hireart.com/api/v2/expenses`
- Auth: HTTP bearer

## Query parameters

- `page` integer
- `per_page` integer
- `worker_id` string
- `job_id` string
- `pay_cycle_id` string
- `expense_date` string, date
- `expense_date_gt` string, date
- `expense_date_gte` string, date
- `expense_date_lt` string, date
- `expense_date_lte` string, date

## Response `200`

Successful response

- ExpenseList
  - `object` 'list', required
  - `page` integer, required
  - `per_page` integer, required
  - `total_count` integer, required
  - `total_pages` integer, required
  - `data` Expense[], required
    - `object` 'expense', required
    - `id` string, required
    - `worker_id` string, nullable
    - `assignment_id` string, nullable
    - `amount_cents` integer, nullable
    - `currency` string, nullable
    - `status` 'paid' | 'direct_paid' | 'approved' | 'rejected' | 'submitted' | 'null', nullable
    - `status_changed_at` string, date-time, nullable
    - `submitted_at` string, date-time, nullable
    - `expense_date` string, date, nullable
    - `category` string, nullable
    - `description` string, nullable
    - `approved_by` PersonSummary
      - `object` 'person', required
      - `id` string, required
      - `full_name` string, nullable
      - `first_name` string, nullable
      - `last_name` string, nullable
      - `email` string, nullable
      - `phone` string, nullable
    - `pay_cycle_id` string, nullable

## Other responses

- `401`: Unauthorized
- `422`: Invalid query parameters
- `429`: Rate limit exceeded (100 requests per 60 seconds per API key)
- `500`: Internal server error

---

[API](https://skmtc.dev/hireart/apis/hireart-api.md) - [All operations](https://skmtc.dev/hireart/apis/hireart-api/llms.txt) - [OpenAPI document](https://skmtc.dev/hireart/apis/hireart-api/revisions/41935c8fd584?raw)
