> ## 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 the delinquency

> What lateness has cost as of a date: penalty and late fee per overdue period, and the loan's oldest unresolved lateness.

Delinquency is derived, as of the date you name, and attributed per Period — the shape a supervisor reconciles. [Delinquency](/lending/delinquency) carries the rules: when a Period becomes overdue, what the penalty accrues on, what freezes at a write-off, and what [a suspension](/lending/delinquency#suspension) stops.

**A validator.** The answer carries an `ETag` over the Loan's Client's book and the date — the schedule and the delinquency are folded from every Receipt of the Client, so anything recorded about the Client moves it. Send it back in `If-None-Match` and an unchanged book on the same date is answered `304` with no body, before anything is derived, as on [the payment options](/api-reference/clients/payment-options).

## 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="on" type="string" required>
  The civil date the answer stands as of. Required and never defaulted; absent is `422` — there is no today the Platform can supply.
</ParamField>

## Response

<ResponseField name="worst_days_past_due" type="integer" required>
  The Loan's oldest unresolved lateness in days — the figure a portfolio report buckets by. Frozen at a write-off, like everything below.
</ResponseField>

<ResponseField name="penalty" type="object" required>
  The penalty accrued across every overdue Period, with `late_fee`, `tax` and `total` beside it — the whole cost of lateness on the date.
</ResponseField>

<ResponseField name="periods" type="array" required>
  Each overdue Period's own account.

  <Expandable title="period">
    <ResponseField name="overdue_from" type="string" required>
      The day the Period became overdue: the day after `due_on`, once its tolerance was spent. An accelerated Loan's unmatured Periods carry the day after the call.
    </ResponseField>

    <ResponseField name="days_past_due" type="integer" required>
      From `overdue_from` to the date asked about, the days a suspension paused left out.
    </ResponseField>

    <ResponseField name="still_overdue" type="boolean" required>
      Whether the Period remains overdue on that date.
    </ResponseField>

    <ResponseField name="base" type="object" required>
      What the penalty accrues on — the Period's own principal component, under the `overdue_principal` base.
    </ResponseField>

    <ResponseField name="penalty" type="object" required>
      Accrued at the Loan's frozen penalty rate, with `penalty_tax` beside it. It never capitalises.
    </ResponseField>

    <ResponseField name="late_fee" type="object" required>
      The flat charge, with `late_fee_tax`. Earned once, by a Period that missed its own due date — zero on Periods an acceleration made overdue.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="periods[].waived" type="array">
  What [waivers](/api-reference/loans/waiver) by the date released of the Period's charges — `reference`, `on`, `period`, `charge`, `amount`. The figures beside them are what lateness cost and are not reduced; what is still owed is [the payment options'](/api-reference/clients/payment-options) answer. Absent where none did.
</ResponseField>

<ResponseField name="suspension" type="object">
  The suspension in force on the date — `event_id`, `reference`, `from`, `to`, and `ended_on` where an early end restarted the clock. Absent where the clock was running. Inside it no day counts and nothing accrues: a Period overdue before the window reads with the days and the penalty it had.
</ResponseField>

<RequestExample>
  ```bash Read theme={null}
  curl "https://api.capcells.com/v1/tenants/$TENANT_ID/loans/$LOAN_ID/delinquency?on=2026-05-10" \
    -H "Authorization: $(capcells_sign "$CAPCELLS_API_KEY" GET "/v1/tenants/$TENANT_ID/loans/$LOAN_ID/delinquency?on=2026-05-10")"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "on": "2026-05-10",
    "worst_days_past_due": 34,
    "penalty": { "minor_units": 3453, "currency": "MXN" },
    "late_fee": { "minor_units": 30000, "currency": "MXN" },
    "tax": { "minor_units": 5351, "currency": "MXN" },
    "total": { "minor_units": 38804, "currency": "MXN" },
    "periods": [
      {
        "index": 1,
        "due_on": "2026-04-06",
        "overdue_from": "2026-04-07",
        "days_past_due": 34,
        "still_overdue": true,
        "base": { "minor_units": 51291, "currency": "MXN" },
        "penalty": { "minor_units": 2906, "currency": "MXN" },
        "penalty_tax": { "minor_units": 464, "currency": "MXN" },
        "late_fee": { "minor_units": 15000, "currency": "MXN" },
        "late_fee_tax": { "minor_units": 2400, "currency": "MXN" },
        "total": { "minor_units": 20770, "currency": "MXN" }
      },
      {
        "index": 2,
        "due_on": "2026-05-04",
        "overdue_from": "2026-05-05",
        "days_past_due": 6,
        "still_overdue": true,
        "base": { "minor_units": 54720, "currency": "MXN" },
        "penalty": { "minor_units": 547, "currency": "MXN" },
        "penalty_tax": { "minor_units": 87, "currency": "MXN" },
        "late_fee": { "minor_units": 15000, "currency": "MXN" },
        "late_fee_tax": { "minor_units": 2400, "currency": "MXN" },
        "total": { "minor_units": 18034, "currency": "MXN" }
      }
    ]
  }
  ```

  ```json 422 No date theme={null}
  {
    "error": "loan: the question falls outside the loan: delinquency is reported as of a date, and none was given -- there is no today the platform can supply",
    "code": "outside_loan"
  }
  ```
</ResponseExample>


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