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

# End a suspension early

> Restart the clock before a suspension's last day, keeping the days it paused.

An early end records the day the Loan's clock runs again, naming [the suspension](/api-reference/loans/suspension) it ends. The days before it stay paused; the days from it count. It is not [a retraction](/api-reference/loans/retraction), which would give every paused day back as though the pause never was: the suspension reads back with its stated `to` and its `ended_on` both.

## Path parameters

<ParamField path="tenant_id" type="string" required>
  The Tenancy acting.
</ParamField>

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

<ParamField path="event_id" type="string" required>
  The suspension, as the Loan's `events` name it. A fact the Loan does not carry is `404`.
</ParamField>

## Body

<ParamField body="on" type="string" required>
  The day the clock runs again: on or after the window's first day, and before its stated last day.
</ParamField>

<ParamField body="reference" type="string" required>
  Your name for the act, in the one act namespace of the Tenancy.
</ParamField>

<ParamField body="actor" type="string" required>
  Whoever acted, your own reference.
</ParamField>

<ParamField body="basis" type="string" required>
  Why, in your words.
</ParamField>

<ParamField body="context" type="object">
  Stored, echoed beside the fact, read by nothing.
</ParamField>

## Response

`201` with [the whole Loan](/api-reference/loans/read): a `suspension_ended` event naming the suspension in `suspension_id`, and the `suspended` event carrying `ended_on`. Retry `200`; a differing body under the recorded `reference`, `409` `reference_reused`.

Withdrawing the end gives the suspension back its stated `to` — refused `409` `suspension_in_force` while a later suspension stands in the days that would return.

## Refusals

| Condition | Status and code | What clears it |
| - | - | - |
| `on` before the window's first day, or on or after its stated last day | <Badge color="orange">422</Badge> `outside_suspension` | State a day inside the window |
| The suspension was already ended by an end in force | <Badge color="red">409</Badge> `suspension_not_in_force` | Retract that end, then record the right one |
| The suspension was retracted, or `event_id` names another kind of fact | <Badge color="red">409</Badge> `suspension_not_in_force` | Nothing — there is no pause to end |
| The Loan is `written_off` or `ceded` | <Badge color="red">409</Badge> `write_off_in_force`, `cession_in_force` | Retract that fact |

<RequestExample>
  ```bash End a suspension theme={null}
  BODY='{
    "on": "2026-04-14",
    "reference": "resume-0001",
    "actor": "ops-0007",
    "basis": "la tienda confirmó: no hubo devolución"
  }'

  curl -X POST "https://api.capcells.com/v1/tenants/$TENANT_ID/loans/$LOAN_ID/suspensions/$SUSPENSION_ID/end" \
    -H "Authorization: $(capcells_sign "$CAPCELLS_API_KEY" POST "/v1/tenants/$TENANT_ID/loans/$LOAN_ID/suspensions/$SUSPENSION_ID/end" "$BODY")" \
    -H "Content-Type: application/json" \
    -d "$BODY"
  ```
</RequestExample>

<ResponseExample>
  ```json 201, the two facts theme={null}
  {
    "events": [
      { "id": "…0001", "kind": "issued", "occurred_on": "2026-03-02", … },
      { "id": "…0002", "kind": "suspended", "occurred_on": "2026-04-11", "to": "2026-04-25", "ended_on": "2026-04-14", … },
      { "id": "…0003", "kind": "suspension_ended", "occurred_on": "2026-04-14", "suspension_id": "…0002", … }
    ],
    …
  }
  ```

  ```json 422 Outside the window theme={null}
  {
    "error": "loan: the end falls outside the suspension's window: an end on 2026-04-25 of the suspension …0002, whose window runs from 2026-04-11 to 2026-04-25 -- an end falls on or after its first day and before its last",
    "code": "outside_suspension",
    "retry": "after_change"
  }
  ```
</ResponseExample>


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