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

# List expenses

`GET /expenses`

## Request

- Base URL: `https://api.lumabill.ch/v1`
- URL: `https://api.lumabill.ch/v1/expenses`
- Auth: HTTP bearer

## Query parameters

- `page` integer
- `per_page` integer
- `from_date` string, date
- `to_date` string, date
- `vendor_id` string, uuid
- `category` string
- `paymentStatus` 'UNPAID' | 'PARTIALLY_PAID' | 'PAID'
- `excludeMatched` boolean

## Response `200`

A paginated list of expenses

- object
  - `data` Expense[], required
    - `id` string, uuid, required
    - `profile_id` string, uuid, required
    - `vendor_id` string, uuid, nullable
    - `description` string, required
    - `amount` number, double, required
    - `currency` 'CHF' | 'EUR' | 'USD' | 'GBP' | 'JPY' | 'CAD' | 'AUD' | 'SEK' | 'NOK' | 'DKK' | 'HUF', required: ISO 4217 code of a currency the API converts (ESTV/BAZG rates). The same list applies to every currency field of the API.
    - `exchangeRate` number, double, nullable: CHF per 1 unit of `currency` the expense was booked at; null in the base currency
    - `baseCurrencyAmount` number, double, nullable: The expense total in CHF
    - `date` string, date, required
    - `category` string, nullable
    - `vat_rate` number, double, nullable
    - `receipt_url` string, uri, nullable
    - `created_at` string, date-time, required
  - `meta` PaginationMeta, required
    - `page` integer, required
    - `per_page` integer, required
    - `total` integer, required: Total number of items across all pages

## Other responses

- `401`: Invalid or missing API key
- `403`: Subscription required or read-only key on a write endpoint
- `429`: Rate limit exceeded
- `500`: Internal server error

---

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