---
title: "Get expenses with filtering"
method: GET
path: "/expenses-api/expenses"
tags: ["Expenses (only available for accounting add-on users)"]
---

# Get expenses with filtering

`GET /expenses-api/expenses`

Retrieves expenses with optional filtering and pagination.

Filters by status (comma-separated), category, vendor, owner, listing, reservation IDs, and date ranges.

Returns up to 100 items per page. Defaults to 50 items, sorted by creation date descending.

## Query parameters

- `status` 'scheduled' | 'submitted' | 'insufficient_funds' | 'paid' | 'canceled'
- `categoryId` string
- `vendorId` string
- `ownerId` string
- `listingId` string
- `reservationId` string
- `expenseRuleId` string
- `expenseDateFrom` string
- `expenseDateTo` string
- `limit` number
- `skip` number
- `sortBy` 'expenseDate' | 'createdAt' | 'amount'
- `sortOrder` 'ASC' | 'DESC'

## Response `200`

Paginated response with filtered expenses, total count, and pagination metadata

- object
  - `data` object[], required — Array of filtered expenses for the current page
    - `attachments` object[] — Array of expense attachments
      - `url` string, required
      - `urlThumbnail` string
      - `publicId` string
      - `originalExtension` string, required
      - `originalFilename` string, required
      - `bytes` number
      - `id` number
    - `id` string, required
    - `customerAccountId` string, required
    - `currentVersionId` number
    - `createdBy` string
    - `type` string, required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `vendorId` string
    - `currency` string, required
    - `listingId` string
    - `ownerId` string
    - `taskId` string
    - `reservationId` string
    - `expenseRuleId` string
    - `originType` string, required
    - `name` string, required
    - `categoryId` string, required
    - `description` string
    - `expenseRuleShare` object[]
    - `taxCategoryCode` string
    - `taxName` string
    - `taxDescription` string
    - `taxPayeeTypes` string[]
    - `externalRefId` string
    - `currentVersion` object
      - `amount` number, required
      - `expenseDate` string, date-time, required
      - `status` string, required
      - `taxAmount` number
  - `count` number, required — Total number of expenses matching the filter criteria
  - `limit` number, required — Number of expenses returned in this response (max items per page)
  - `skip` number, required — Number of expenses skipped (for pagination)

## Other responses

- `401` — Authentication required - invalid or missing token
- `403` — You do not have sufficient permissions to access this resource
- `500` — Unhandled exception. Something went wrong on server

---

[API](https://skmtc.net/guesty/apis/guesty-open-api.md) · [All operations](https://skmtc.net/guesty/apis/guesty-open-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/guesty/guesty-open-api/versions/7c62644070f2/schema)
