> ## 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_statement_records

List the frozen records of one compensation scope on a statement.

A compensation calculates over one or more scopes (a data table filtered to a
perimeter); each scope's records are frozen into the statement at calculation
time. This returns those snapshot records — the deals/rows that fed the
commission — each with its displayable field values (amounts in the statement's
calculation currency, picklists as labels, user references as emails, linked
records by name). This is the frozen snapshot, not the live data table (use
list\_data\_table\_records for the current data).

Identify the statement by `statement_id` (from `list_statements` /
`get_statement`), then name the `compensation` and its `scope` (discover
both via get\_statement / get\_statement\_compensation).

A statement, compensation or scope you can't access reads exactly like one that
doesn't exist, so the error never reveals anything outside your scope.

Records keep the statement's frozen scope order — the index they were
snapshotted in at calculation time.

## Parameters

<Accordion title="Body" defaultOpen>
  <ParamField body="compensation" type="string" required>
    The compensation whose scope to read, matched by name (case-insensitive
    substring, as shown in get\_statement's compensation lines) or by ObjectId.
  </ParamField>

  <ParamField body="scope" type="string" required>
    The scope to read within the compensation, matched by letter (A, B, …), by
    name (case-insensitive substring) or by ObjectId — as shown on the
    compensation's scopes.
  </ParamField>

  <ParamField body="statement_id" type="string" required>
    The statement's id, as returned by list\_statements or get\_statement.
  </ParamField>

  <ParamField body="search" type="string">
    Free-text filter, a case-insensitive substring matched against each record's
    text and linked-record name fields. Omitted returns the scope's records
    unfiltered.
  </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="fields" type="object[]">
    The scope's displayable columns (name + type), listed once for the whole
    page — each record's `values` are keyed by these names.

    <Expandable title="object properties">
      <ResponseField name="name" type="string" />

      <ResponseField name="type" type="string">
        One of: `float`, `amount`, `percentage`, `string`, `picklist`,
        `multipicklist`, `bool`, `date`, `user`, `object`, `group`,
        `record_status`.
      </ResponseField>
    </Expandable>
  </ResponseField>

  <ResponseField name="calculation_currency" type="string">
    The currency every AMOUNT value in the records is 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="records" type="object[]">
    <Expandable title="object properties">
      <ResponseField name="record_id" type="string" />

      <ResponseField name="name" type="string">
        The record's display name (its name-field value), falling back to its
        source id then its record\_id when no name field exists.
      </ResponseField>

      <ResponseField name="values" type="object">
        Field name → value for this record. Each field's type is in the result's
        `fields`; amounts are in `calculation_currency`. Only fields the record
        has a value for are present.
      </ResponseField>
    </Expandable>
  </ResponseField>

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