> ## Documentation Index
> Fetch the complete documentation index at: https://docs.qobra.co/llms.txt
> Use this file to discover all available pages before exploring further.

# list_users

List users of your company, with simple filters and pagination.

Rows are ordered alphabetically by name (A→Z).

## Parameters

<Accordion title="Body" defaultOpen>
  <ParamField body="search" type="string">
    Free-text filter matched against the user's normalized search field (name +
    email, lowercased, unidecoded).
  </ParamField>

  <ParamField body="status" type="string">
    Status filter. One of inactive, pending, active, archived. Defaults to
    non-archived users. One of: `inactive`, `pending`, `active`, `archived`.
  </ParamField>

  <ParamField body="manager" type="string">
    Narrow to this manager's team — everyone below them in the hierarchy (all
    levels, not just direct reports). Match the manager by name or email
    (case-insensitive substring) or by ObjectId.
  </ParamField>

  <ParamField body="limit" type="integer">
    Page size, between 1 and 250. Defaults to 50.
  </ParamField>

  <ParamField body="offset" type="integer">
    Row offset into the result set — the number of rows to skip before this
    page. Pass the next\_offset returned by the previous call, or None for the
    first page.
  </ParamField>
</Accordion>

## Response

<Accordion title="Body" defaultOpen>
  <ResponseField name="users" type="object[]">
    <Expandable title="object properties">
      <ResponseField name="id" type="string" />

      <ResponseField name="resource_url" type="string">
        Deep link to open this user in the Qobra web app.
      </ResponseField>

      <ResponseField name="name" type="string" />

      <ResponseField name="email" type="string" />

      <ResponseField name="status" type="string">
        User lifecycle state: pending (invited, not logged in yet), active,
        inactive (deactivated), archived (has left the company; hidden by
        default in list\_users). One of: `inactive`, `pending`, `active`,
        `archived`.
      </ResponseField>

      <ResponseField name="role" type="string">
        Name of the user's permission role (not their status).
      </ResponseField>

      <ResponseField name="payment_currency" type="string">
        Currency the user is actually paid in. One of: `AED`, `AFN`, `ALL`,
        `AMD`, `ANG`, `AOA`, `ARS`, `AUD`, `AWG`, `AZN`, `BAM`, `BBD`, `BDT`,
        `BGN`, `BHD`, `BIF`, `BMD`, `BND`, `BOB`, `BOV`, `BRL`, `BSD`, `BTN`,
        `BWP`, `BYR`, `BZD`, `CAD`, `CDF`, `CHF`, `CLF`, `CLP`, `CNY`, `COP`,
        `COU`, `CRC`, `CUC`, `CUP`, `CVE`, `CZK`, `DJF`, `DKK`, `DOP`, `DZD`,
        `EGP`, `ERN`, `ETB`, `EUR`, `FJD`, `FKP`, `GBP`, `GEL`, `GHS`, `GIP`,
        `GMD`, `GNF`, `GTQ`, `GYD`, `HKD`, `HNL`, `HRK`, `HTG`, `HUF`, `IDR`,
        `ILS`, `INR`, `IQD`, `IRR`, `ISK`, `JMD`, `JOD`, `JPY`, `KES`, `KGS`,
        `KHR`, `KMF`, `KPW`, `KRW`, `KWD`, `KYD`, `KZT`, `LAK`, `LBP`, `LKR`,
        `LRD`, `LSL`, `LTL`, `LVL`, `LYD`, `MAD`, `MDL`, `MGA`, `MKD`, `MMK`,
        `MNT`, `MOP`, `MRO`, `MUR`, `MVR`, `MWK`, `MXN`, `MYR`, `MZN`, `NAD`,
        `NGN`, `NIO`, `NOK`, `NPR`, `NZD`, `OMR`, `PAB`, `PEN`, `PGK`, `PHP`,
        `PKR`, `PLN`, `PYG`, `QAR`, `RMB`, `RON`, `RSD`, `RUB`, `RWF`, `SAR`,
        `SBD`, `SCR`, `SDG`, `SEK`, `SGD`, `SHP`, `SLL`, `SOS`, `SRD`, `STD`,
        `SVC`, `SYP`, `SZL`, `THB`, `TJS`, `TMT`, `TND`, `TOP`, `TRY`, `TTD`,
        `TWD`, `TZS`, `UAH`, `UGX`, `USD`, `UYI`, `UYU`, `UZS`, `VEF`, `VND`,
        `VUV`, `WON`, `WST`, `XAF`, `XAG`, `XAU`, `XCD`, `XOF`, `XPD`, `XPF`,
        `XPT`, `XSU`, `YER`, `ZAR`, `ZMK`, `ZWL`.
      </ResponseField>

      <ResponseField name="calculation_currency" type="string">
        Currency the user's commissions are computed in. One of: `AED`, `AFN`,
        `ALL`, `AMD`, `ANG`, `AOA`, `ARS`, `AUD`, `AWG`, `AZN`, `BAM`, `BBD`,
        `BDT`, `BGN`, `BHD`, `BIF`, `BMD`, `BND`, `BOB`, `BOV`, `BRL`, `BSD`,
        `BTN`, `BWP`, `BYR`, `BZD`, `CAD`, `CDF`, `CHF`, `CLF`, `CLP`, `CNY`,
        `COP`, `COU`, `CRC`, `CUC`, `CUP`, `CVE`, `CZK`, `DJF`, `DKK`, `DOP`,
        `DZD`, `EGP`, `ERN`, `ETB`, `EUR`, `FJD`, `FKP`, `GBP`, `GEL`, `GHS`,
        `GIP`, `GMD`, `GNF`, `GTQ`, `GYD`, `HKD`, `HNL`, `HRK`, `HTG`, `HUF`,
        `IDR`, `ILS`, `INR`, `IQD`, `IRR`, `ISK`, `JMD`, `JOD`, `JPY`, `KES`,
        `KGS`, `KHR`, `KMF`, `KPW`, `KRW`, `KWD`, `KYD`, `KZT`, `LAK`, `LBP`,
        `LKR`, `LRD`, `LSL`, `LTL`, `LVL`, `LYD`, `MAD`, `MDL`, `MGA`, `MKD`,
        `MMK`, `MNT`, `MOP`, `MRO`, `MUR`, `MVR`, `MWK`, `MXN`, `MYR`, `MZN`,
        `NAD`, `NGN`, `NIO`, `NOK`, `NPR`, `NZD`, `OMR`, `PAB`, `PEN`, `PGK`,
        `PHP`, `PKR`, `PLN`, `PYG`, `QAR`, `RMB`, `RON`, `RSD`, `RUB`, `RWF`,
        `SAR`, `SBD`, `SCR`, `SDG`, `SEK`, `SGD`, `SHP`, `SLL`, `SOS`, `SRD`,
        `STD`, `SVC`, `SYP`, `SZL`, `THB`, `TJS`, `TMT`, `TND`, `TOP`, `TRY`,
        `TTD`, `TWD`, `TZS`, `UAH`, `UGX`, `USD`, `UYI`, `UYU`, `UZS`, `VEF`,
        `VND`, `VUV`, `WON`, `WST`, `XAF`, `XAG`, `XAU`, `XCD`, `XOF`, `XPD`,
        `XPF`, `XPT`, `XSU`, `YER`, `ZAR`, `ZMK`, `ZWL`.
      </ResponseField>

      <ResponseField name="licensed" type="boolean">
        Whether the user holds a paid Qobra license (a seat). Only licensed
        users have their compensations calculated and a statement to view — an
        unlicensed user's statement is never computed, which is the usual reason
        someone 'can't see X's statement'. A newly-arrived user typically needs
        a license added; a departed user who no longer appears in the data is a
        candidate for archiving to free their seat.
      </ResponseField>

      <ResponseField name="license_missing" type="boolean">
        True when the user is NOT licensed yet has compensations that would
        otherwise be calculated — the statement can't be computed for lack of a
        seat. This is what raises the red warning banner at the top of a
        statement; resolve it by assigning the user a license.
      </ResponseField>
    </Expandable>
  </ResponseField>

  <ResponseField name="next_offset" type="integer" />
</Accordion>
