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

# Read a statement

> A Loan's figures for a period you name: what it owed before, what arose and what was paid inside, what it owes after, and what comes next.

Every figure a periodic statement prints, for the civil period from `from` to `to`, inclusive. The opening balance is what [the schedule](/api-reference/loans/schedule), [the delinquency read](/api-reference/loans/delinquency) and [the payment options](/api-reference/clients/payment-options) answer for the day before the period; the closing balance is what they answer for its last day. Between them: every charge that arose, every Receipt applied, every reversal and every fact. The opening plus what arose less what the Receipts settled is the closing — computed once by the Platform, not subtracted by you.

A statement records nothing. Ask about any past period, as often as you like; the same period answers the same.

<Warning>
  **Every item of the Mexican list the Platform holds is served.** [Mexico](/lending/mexico#periodic-statement) maps CONDUSEF's list for a credit to the fields below, and lists what you print and deliver yourself: your identity, the borrower's, the complaints-unit notice, the fiscal data and the delivery.
</Warning>

## Path parameters

<ParamField path="tenant_id" type="string" required>
  The Tenancy the Loan belongs to.
</ParamField>

<ParamField path="loan_id" type="string" required>
  The Loan. Another Tenancy's and one that never existed are both `404`.
</ParamField>

## Query parameters

<ParamField query="from" type="string" required>
  The period's first civil day, `YYYY-MM-DD`. Required and never defaulted; absent is `422`.
</ParamField>

<ParamField query="to" type="string" required>
  The period's last civil day, `YYYY-MM-DD`, inclusive. Required; absent is `422`. A `to` before `from` is `400` `invalid_query`. `from` equal to `to` is a one-day period.
</ParamField>

## Response

<ResponseField name="(the listing row)" type="object" required>
  Every field of [a listing row](/api-reference/loans/list): the figures the Loan was issued with — `principal`, `term_periods`, `rate`, `fee`, `penalty_rate`, `anchor`, `totals.payments` — and its `state`, `owes` and `owed_to`. `paid` and the Period counts are as of `to`.
</ResponseField>

<ResponseField name="from, to" type="string" required>
  The period, echoed.
</ResponseField>

<ResponseField name="opening" type="object">
  What the Loan owed on the day before `from`.

  <Expandable title="balance">
    <ResponseField name="on" type="string" required>
      The day the balance is true of.
    </ResponseField>

    <ResponseField name="principal" type="object" required>
      Every principal still owed, fallen due or not — the schedule's remaining principal, summed.
    </ResponseField>

    <ResponseField name="charges" type="array" required>
      What the Periods fallen due still owe besides principal: `interest`, `fee`, `penalty` and `late_fee`, each with `amount`, `tax` and `total`. Only the charges that owe something. A Period's interest is owed from the day it falls due — before that it is not in a balance, and it arises in the statement that covers that day.
    </ResponseField>

    <ResponseField name="total" type="object" required>
      The principal and the charges.
    </ResponseField>
  </Expandable>

  Zeros before the anchor and once the Loan has ended. Absent on a day the Loan stood ceded — from the cut-off it is owed to the assignee — and where the Loan could not be described, with the reason in `anomalies`.
</ResponseField>

<ResponseField name="charges" type="array" required>
  Every charge that arose inside the period, each attributed to its Period.

  | Field | What it is |
  | - | - |
  | `period` | The Period of the plan the charge belongs to. |
  | `charge` | `interest` or `fee` — the Period fell due inside the period; `penalty` — accrued on the days inside; `late_fee` — charged inside. |
  | `due_on` | The Period's due date. |
  | `amount`, `tax`, `total` | The charge, the tax on it, and both. |
  | `days` | On a `penalty`, how many days inside the period it accrued over. |
  | `base` | What the charge was computed on: on `interest`, the principal the schedule still carried from that Period on; on `penalty`, the base the delinquency read states. Absent on a fee and a late fee. |

  The payment taken at the purchase is never here: the purchase settled it.
</ResponseField>

<ResponseField name="receipts" type="array" required>
  Every Receipt value-dated inside the period that reached this Loan: `receipt`, as [the Receipts listing](/api-reference/clients/receipts) reads it back, and `applied`, what it did to this Loan — Periods, charges and tax, any prepayment — as [its allocation](/api-reference/receipts/read) states it.
</ResponseField>

<ResponseField name="reversals" type="array" required>
  Every reversed Receipt value-dated inside the period that named this Loan or no Loan. It settled nothing from its value date.
</ResponseField>

<ResponseField name="facts" type="array" required>
  Every fact recorded about the Loan dated inside the period — a rollover, a waiver, a suspension, the issuance — as [the Loan read](/api-reference/loans/read) renders it.
</ResponseField>

<ResponseField name="closing" type="object">
  What the Loan owed on `to`, on the opening's terms.
</ResponseField>

<ResponseField name="next_payment" type="object">
  The first Period falling due after `to` that still asks for something: `index`, `due_on` and `owed`, a figure by component. Absent where nothing lies ahead — every Period settled, the Loan ended, or its whole balance owed now.
</ResponseField>

<ResponseField name="cut_on" type="string" required>
  The statement's cut date, which is `to`.
</ResponseField>

<ResponseField name="terms_box" type="object">
  The box a statement of a mass-market credit prints: `disclosure` (the CAT as the Loan froze it, with `provisional`), `rate` and `penalty_rate`.
</ResponseField>

<ResponseField name="interest_charged" type="object">
  The interest charged inside the period: `amount`, `tax`, `total`.
</ResponseField>

<ResponseField name="commissions_charged" type="object">
  The fees and late fees charged inside the period: `amount`, `tax`, `total`.
</ResponseField>

<ResponseField name="amount_due" type="array" required>
  The payments the statement asks for: those falling due inside the period, or the next one where none does.

  | Field | What it is |
  | - | - |
  | `index`, `of` | "Payment `index` of `of`". |
  | `due_on` | The due date as the Loan's calendar adjusted it. |
  | `scheduled` | What the plan asks of it, by component — principal, interest, fee, and anything a restructuring carried onto it — each with its tax. |
  | `owed` | What it still asks for on `to`. |
</ResponseField>

<ResponseField name="prepayments" type="array" required>
  Every Receipt inside the period that paid principal ahead of the plan: `receipt_id`, `reference`, `principal`, and `effect` — `shortened` with `removed`, the payments the plan no longer reaches, or `lowered` with `instalment`, the new instalment, and `by`, how much it fell.
</ResponseField>

<RequestExample>
  ```bash Read theme={null}
  QUERY="?from=2026-09-01&to=2026-09-30"
  curl "https://api.capcells.com/v1/tenants/$TENANT_ID/loans/$LOAN_ID/statement$QUERY" \
    -H "Authorization: $(capcells_sign "$CAPCELLS_API_KEY" GET "/v1/tenants/$TENANT_ID/loans/$LOAN_ID/statement$QUERY")"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 A month paid on time theme={null}
  {
    "id": "7771aef0-9e65-4a0a-a902-aab4e970d33f",
    "reference": "loan-0001",
    "principal": { "minor_units": 500000, "currency": "MXN" },
    "anchor": "2026-08-10",
    "state": "active",
    …
    "from": "2026-09-01",
    "to": "2026-09-30",
    "opening": {
      "on": "2026-08-31",
      "principal": { "minor_units": 500000, "currency": "MXN" },
      "charges": [],
      "total": { "minor_units": 500000, "currency": "MXN" }
    },
    "charges": [
      { "period": 1, "charge": "interest", "due_on": "2026-09-10",
        "amount": { "minor_units": 19590, "currency": "MXN" },
        "tax": { "minor_units": 3134, "currency": "MXN" },
        "total": { "minor_units": 22724, "currency": "MXN" } },
      { "period": 1, "charge": "fee", "due_on": "2026-09-10",
        "amount": { "minor_units": 4166, "currency": "MXN" },
        "tax": { "minor_units": 666, "currency": "MXN" },
        "total": { "minor_units": 4832, "currency": "MXN" } }
    ],
    "receipts": [
      { "receipt": { "reference": "rcpt-0001", "value_date": "2026-09-10",
          "amount": { "minor_units": 101738, "currency": "MXN" }, … },
        "applied": { "settled": { "minor_units": 101738, "currency": "MXN" },
          "periods": [ { "index": 1, "settled": true, … } ], … } }
    ],
    "reversals": [],
    "facts": [],
    "closing": {
      "on": "2026-09-30",
      "principal": { "minor_units": 425818, "currency": "MXN" },
      "charges": [],
      "total": { "minor_units": 425818, "currency": "MXN" }
    },
    "next_payment": {
      "index": 2, "due_on": "2026-10-12",
      "owed": { "total": { "minor_units": 101738, "currency": "MXN" }, "charges": [ … ] }
    }
  }
  ```

  ```json 200 Twelve days late theme={null}
  {
    …
    "from": "2026-10-17",
    "to": "2026-10-28",
    "charges": [
      { "period": 2, "charge": "penalty", "due_on": "2026-10-12",
        "amount": { "minor_units": 938, "currency": "MXN" },
        "tax": { "minor_units": 151, "currency": "MXN" },
        "total": { "minor_units": 1089, "currency": "MXN" },
        "days": 12 }
    ],
    "receipts": [],
    "closing": {
      "on": "2026-10-28",
      "principal": { "minor_units": 425818, "currency": "MXN" },
      "charges": [
        { "charge": "penalty", "amount": { "minor_units": 1250, "currency": "MXN" }, … },
        { "charge": "late_fee", "amount": { "minor_units": 15000, "currency": "MXN" }, … },
        { "charge": "fee", "amount": { "minor_units": 4166, "currency": "MXN" }, … },
        { "charge": "interest", "amount": { "minor_units": 16145, "currency": "MXN" }, … }
      ],
      "total": { "minor_units": 468228, "currency": "MXN" }
    },
    …
  }
  ```
</ResponseExample>

The first example is the worked Loan's September: 5,000.00 owed at the start, Period 1's interest and fee with their IVA arising on the 10th, the instalment of 1,017.38 paid that day, and 4,258.18 of principal owed at the end — 5,000.00 + 275.56 − 1,017.38. The second is twelve days of October in which Period 2 stood unpaid: the penalty those days accrued, and nothing else arising; the closing balance holds the whole unpaid instalment's charges with its late fee and every day of penalty so far.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.