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

# Waive a charge

> Release a stated amount of penalty, late fee or interest. It settles the charge without money.

A waiver releases a stated amount of **penalty**, **late fee** or **interest** on named periods. From its date the charge reads settled by the waiver, not by money: [the payment options](/api-reference/clients/payment-options) and the payoff net it, and [the arrears](/api-reference/loans/delinquency) and the options name it beside the charge.

It is not a [write-off](/api-reference/loans/write-off), which forgives nothing. Penalty goes on accruing on principal that stays overdue after it.

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

## Body

<ParamField body="on" type="string" required>
  The day the charges are released.
</ParamField>

<ParamField body="lines" type="object[]" required>
  What is released, one charge of one period per line, none named twice.

  <Expandable title="line">
    <ParamField body="period" type="integer" required>The period's index.</ParamField>
    <ParamField body="charge" type="string" required>`penalty`, `late_fee` or `interest`.</ParamField>
    <ParamField body="amount" type="object" required>What is released, its tax apart. No more than the period owes of the charge on `on`.</ParamField>
  </Expandable>
</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): the `waived` event carries its lines. Retry `200`.

## Refusals

| Condition | Status and code | What clears it |
| - | - | - |
| More than the period owes of the charge | <Badge color="red">409</Badge> `waiver_exceeds_charge` | Release what it owes |
| Principal or fee named | <Badge color="orange">422</Badge> `invalid_event` | Forgiving the debt is a [settlement for less](/api-reference/loans/settlement) |
| The Loan is not active or restructured | <Badge color="orange">422</Badge> `invalid_event` | Nothing |
| A fact stands after `on` | <Badge color="orange">422</Badge> `invalid_event` | State a later day, or retract that fact |

<RequestExample>
  ```bash Waive a penalty theme={null}
  BODY='{
    "on": "2026-10-05",
    "lines": [
      { "period": 1, "charge": "penalty", "amount": { "minor_units": 1000, "currency": "MXN" } }
    ],
    "reference": "waive-0001",
    "actor": "collections-0002",
    "basis": "penalty forgiven against a payment plan"
  }'

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


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