# List categories

Returns a paginated list of expense categories for the given business.

Endpoint: GET /v1/businesses/{client_id}/categories
Version: v1
Security: BearerAuth

## Path parameters:

  - `client_id` (integer, required)
    The ID of the business.
    Example: 123

## Query parameters:

  - `offset` (integer)
    Offset to retrieve items from.
    Example: 50

  - `limit` (integer)
    Number of items per page.
    Example: 50

  - `custom` (boolean)
    Filter by category type. true returns only custom categories; false returns only system-defined categories. Omit to return all.

## Response 200 fields (application/json):

  - `count` (integer)
    Total number of categories.
    Example: 10

  - `next` (string,null)
    Pagination cursor for the next page.
    Example: "limit=50&offset=50"

  - `previous` (string,null)
    Pagination cursor for the previous page.

  - `results` (array)

  - `results.id` (string)
    The unique identifier for this category.
    Example: "7cb19e45-1234-5678-abcd-ef9876543210"

  - `results.name` (string)
    The display name of the category.
    Example: "Travel"

  - `results.custom` (boolean)
    Whether this is a custom category created by the business. System-defined categories have custom: false.

  - `results.enabled` (boolean)
    Whether this category is available for use on transactions.
    Example: true

  - `results.accounting_code_id` (string,null)
    The ID of the GL code mapped to this category, or null if no mapping exists.
    Example: "3fa85f64-5717-4562-b3fc-2c963f66afa6"

  - `results.created` (string)
    When this category was created in UTC.
    Example: "2025-01-01T00:00:00Z"

  - `results.updated` (string)
    When this category was last updated in UTC.
    Example: "2025-01-01T00:00:00Z"


## Response 401 fields

## Response 403 fields
