# ContractDeactivationReason

A model the API reference uses in a request or a response. The operation pages link every field typed as this model here.

Describes why a recurring billing contract was deactivated.
Persisted on the contract document for diagnostics and reporting.

## Values

| Value | Description |
| --- | --- |
| `Suspended` | Suspended by the billing engine after consecutive failures exceeded the maxFailCount threshold. |
| `MaxPaymentsReached` | Total execution count (successful + failed) reached maxNumPayments. |
| `MaxSuccessfulBillsReached` | Successful execution count reached maxSuccessfulBills. |
| `MaxAmountReached` | Cumulative amount billed reached maxAmount. |
| `ScheduleExhausted` | The recurrence schedule produced no further occurrences: either the until end date was reached or the recurrence count was exhausted. |
| `Manual` | Manually deactivated by an operator via the UI or API. |
| `CancelledByCardholder` | Cancelled by the cardholder themselves, from the link in an upcoming-charge reminder, with no operator involved. |
| `Paused` | Paused on purpose by an operator, to be resumed later: either by hand, or automatically by the daily billing run once the contract's expected resume date has passed. A pause is a voluntary stop, which is what separates it from Suspended (the billing engine gave up after consecutive failures) and from Manual (deactivated with no intention to resume). The pause itself is described by the contract's pause fields (reason, paused date, expected resume date), which are cleared when the contract resumes. |

## See also

- [All documentation](https://devportal.demo.winkpg.io/llms.txt): the machine-readable index of every public page on this site.
