---
title: "List expense categories for the authenticated employee"
method: GET
path: "/v1/employee/expense-categories"
tags: ["Expenses"]
---

# List expense categories for the authenticated employee

`GET /v1/employee/expense-categories`

## Request

- Base URL: `https://gateway.remote.com`
- URL: `https://gateway.remote.com/v1/employee/expense-categories`
- Auth: one of:
  - OAuth 2
    - Client credentials
    - Token URL: `/auth/oauth2/token` scopes: `expense:read`
  - OAuth 2
    - Client credentials
    - Token URL: `/auth/oauth2/token` scopes: `all:read`
  - OAuth 2
    - Client credentials
    - Token URL: `/auth/oauth2/token` scopes: `all:write`
  - OAuth 2
    - Authorization code: `/auth/oauth2/authorize`
    - Token URL: `/auth/oauth2/token` scopes: `https://gateway.remote.com/employment.manage`
  - OAuth 2
    - Authorization code: `/auth/oauth2/authorize`
    - Token URL: `/auth/oauth2/token` scopes: `expense:read`
  - OAuth 2
    - Authorization code: `/auth/oauth2/authorize`
    - Token URL: `/auth/oauth2/token` scopes: `all:read`
  - OAuth 2
    - Authorization code: `/auth/oauth2/authorize`
    - Token URL: `/auth/oauth2/token` scopes: `all:write`

Returns the flat list of expense categories applicable to the current employee. Only active categories are returned, filtered by the employee's country / legal-entity visibility rules. Leaf nodes have `is_selectable: true`; parent nodes are excluded unless `include_parents=true`.

## Authentication

This endpoint accepts any one of the following token types:

- **Employee-scoped access token** (`OAuth2Assertion`) — obtained through the `urn:ietf:params:oauth:grant-type:jwt-bearer` grant. See [OAuth Assertion](https://developer.remote.com/docs/authorization-method-oauth-assertion).
- **Company-scoped access token** (`OAuth2AuthorizationCode`) — obtained by the employee through the Authorization Code flow or the Refresh Token flow. See [Authentication for partners](https://developer.remote.com/docs/authentication-for-partners).

## Scopes

Any one of the scopes in a token type's row is enough. `all:read` and `all:write` work too.

| Token type | Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|---|
| Employee-scoped access token | Manage expenses (`employment_payments`) | View expenses (`expense:read`) | - |
| Company-scoped access token | Manage expenses (`employment_payments`) | View expenses (`expense:read`) | Manage expenses (`expense:write`) |

## Query parameters

- `include_parents` boolean
- `expense_id` string

## Response `200`

Success

- ListExpenseCategoriesResponse: Response containing a flat list of expense categories. Parent categories have is_selectable: false, while leaf categories have is_selectable: true. Child categories include parent_slug information.
  - `data` ExpenseCategoryNode[]
    - `code` string: Category code (e.g., 'travel.flights')
    - `description` string, nullable: Category description
    - `instructions` string, nullable: Instructions for using this category
    - `is_selectable` boolean: Whether this category can be selected
    - `parent` object, nullable: Parent category information if this is a child category
      - `code` string: Parent category code
      - `slug` string: Parent category slug
      - `title` string: Parent category title
    - `prompt` string, nullable: Prompt for user guidance
    - `scope` string: Category scope (global, country, company, legal_entity)
    - `slug` string: Unique identifier for the category
    - `status` string: Category status (active, inactive)
    - `title` string: Human-readable category name

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found

---

[API](https://skmtc.dev/remote-com/apis/employee-actions.md) - [All operations](https://skmtc.dev/remote-com/apis/employee-actions/llms.txt) - [OpenAPI document](https://skmtc.dev/remote-com/apis/employee-actions/revisions/ccad61420ac2?raw)
