---
title: "Reads all Expensables"
method: GET
path: "/api/2026-10-01/resources/expenses/expensables"
tags: ["Expenses > Expensable"]
---

# Reads all Expensables

`GET /api/2026-10-01/resources/expenses/expensables`

## Request

- Base URL: `https://api.factorialhr.com`
- URL: `https://api.factorialhr.com/api/2026-10-01/resources/expenses/expensables`
- Auth: one of:
  - OAuth 2
    - Authorization code: `https://id.factorialhr.com/oauth/authorize`
    - Token URL: `https://id.factorialhr.com/api/oauth/token` scopes: `expenses`
  - API key in header `x-api-key`

Reads all Expensables

## Query parameters

- `ids[]` string[]: Return only the expensables with these ids.
- `company_id` string
- `group_ids[]` string[]: Return only the expensables filed inside these expense groups, the report or trip bundles an employee submits several expensables in.
- `by_resources[]` object[]
- `employee_ids[]` string[]: Return only the expensables whose spending employee is one of these. When `reporter_ids` is given too the two are OR'ed, not intersected: the result holds the expensables owned by these employees plus the ones submitted by those reporters.
- `reporter_ids[]` string[]: Return only the expensables submitted by these employees on somebody else's behalf, such as an assistant or an office manager. OR'ed with `employee_ids` when both are given.
- `status[]` string[]: Return only the expensables in these states: `draft`, `pending`, `changes_requested`, `approved`, `rejected`, `reversed`, `in_payroll`, `sent_to_pay` or `paid`.
- `creation_type[]` string[]: Return only the expensables created this way: `manual` (entered by a person) or `automatic` (raised from a card transaction). Those are the only two values the filter understands, and any other string makes the read return nothing at all rather than ignoring the filter.
- `from` string: Start of the window of expense dates (`effective_on`) to return, inclusive. It only takes effect together with `to`: given on its own it is ignored and no date narrowing happens.
- `to` string: End of the window of expense dates (`effective_on`) to return, inclusive. It only takes effect together with `from`.
- `search` string
- `include_grouped` boolean, required
- `include_attachments` boolean, required
- `include_manual_drafts` boolean, required

## Response `200`

OK

- object
  - `data` ExpensesExpensable[]
    - `id` string, required: Unique identifier for the expensable
    - `type` 'expense' | 'mileage' | 'perdiem', required: Type of the expensable. Can be either "expense" or "mileage" or "perdiem"
    - `company_id` string, required: The ID of the company that owns the expensable
    - `employee_id` string, required: The ID of the employee that owns the expensable
    - `group_id` string: The ID of the expense report (group of expensables submitted together) this expensable was submitted in, if any
    - `legal_entity_id` string: The optional ID of the legal entity that the expensable belongs to
    - `created_at` string, required: The date and time when the expensable was created
    - `amount` integer: The optional amount in cents
    - `currency` string, required: The currency code in ISO 4217 format
    - `status` 'pending' | 'changes_requested' | 'approved' | 'paid' | 'rejected' | 'reversed' | 'draft' | 'in_payroll' | 'sent_to_pay', required: The lifecycle status of the expensable in the review/payment flow
    - `description` string: The optional description of the expensable
    - `reporter_id` string: The optional ID of the employee that reported the expensable
    - `status_updated_at` string, required: The optional date and time when the status was last updated
    - `effective_on` string: The optional date and time when the expensable was effective
    - `review_request_at` string: The date and time the expensable was submitted for review. Null while it is a draft; set at submission and never cleared afterwards. Compare it with `effective_on` to measure how late a document was submitted.
    - `paid_at` string: The optional date and time when the expensable was set as paid
    - `updated_at` string, required: The date and time when the expensable was last updated
    - `reimbursable_amount` integer: The optional reimbursable amount in cents
    - `reimbursable_currency` string: The optional reimbursable currency code in ISO 4217 format
    - `reimbursement_method` 'unknown' | 'sepa_transfer' | 'payroll': The optional reimbursement method
    - `internal_reference` string: The optional internal reference of the expensable
    - `expense_id` string: The ID of the receipt-backed expense detail record; set only when `type` is "expense"
    - `mileage_id` string: The ID of the mileage claim detail record; set only when `type` is "mileage"
    - `per_diem_id` string: The ID of the per-diem allowance detail record; set only when `type` is "perdiem"
    - `budget_id` string: The ID of the budget this expensable draws from, when one is linked
    - `project_id` string: The ID of the project this expensable is charged to, when one is linked
    - `cost_center_ids` string[], required: The IDs of the cost centers the expensable's cost is allocated to
  - `meta` PagedIndexMeta
    - `start_cursor` string
    - `end_cursor` string
    - `has_previous_page` boolean, required
    - `has_next_page` boolean, required
    - `limit` integer, required
    - `total` integer, required

## Changes

- **2026-11-03** `83ac9aa1de50`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/factorialhr/apis/factorial-api/changes/api/2026-10-01/resources/expenses/expensables/get.md)

---

[API](https://skmtc.dev/factorialhr/apis/factorial-api.md) - [All operations](https://skmtc.dev/factorialhr/apis/factorial-api/llms.txt) - [OpenAPI document](https://skmtc.dev/factorialhr/apis/factorial-api/revisions/83ac9aa1de50?raw)
