Contract termination
Requests the termination of an active or expired contract. Only the manager makes the request, and QI Tech decides.
- The contract cannot have an amendment in progress or another termination request awaiting review.
- While the request is under review, the contract does not change status.
- If the termination agreement was signed outside the platform, add it as an attachment.
| Request status | Description |
|---|---|
pending_analysis | Awaiting QI Tech review. There can be only one request in this status per contract. |
approved | Approved. The contract becomes reproved with reproval_reason: termination_agreement, and the recurrences are ended. |
reproved | Rejected, with the reason in reproval_details. The contract stays as it was, and a new request can be made. |
There is no call to withdraw a request under review. Track the request in terminations in the contract retrieval.
Request termination
Available on
| Profile | Host | Required permission |
|---|---|---|
| Manager | manager-api | Write |
Base URL for each host: Environments (Hosts).
ENDPOINT
/expense_contract/fund_class/{fund_class_key}/contract/{contract_key}/terminationMETHOD
POSTPath parameters
| Parameter | Type | Description |
|---|---|---|
fund_class_key | string | Fund class key (UUID). |
contract_key | string | Contract key (UUID). |
Request body
{
"termination_details": "Distrato amigável a partir de 31/12/2026."
}
Body attributes
The JSON body is required, even if empty: send {} when there are no details.
| Field | Type | Required | Description |
|---|---|---|---|
termination_details | string | No | Reason and terms of the termination, from 1 to 1000 characters. |
Response
STATUS
201The contract, not the request, in the structure described in contract attributes. The request appears in terminations.
Response excerpt
{
"contract_key": "3f2b8c1e-7d4a-4e9b-9a61-0c5d2e8f4b17",
"status": "active",
"terminations": [
{
"termination_key": "e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b",
"status": "pending_analysis",
"termination_details": "Distrato amigável a partir de 31/12/2026.",
"reproval_details": null,
"created_at": "2026-11-09T15:01:44.230118"
}
]
}
Errors
| Status | code | When it happens |
|---|---|---|
| 400 | QIT000001 | Request without a JSON body, termination_details outside 1 to 1000 characters, or unexpected field. |
| 404 | ECT000005 | The fund class does not exist or you do not have access to it. |
| 404 | ECT000009 | The contract does not exist in this fund class. |
| 409 | ECT000063 | The contract is neither active nor expired. |
| 409 | ECT000064 | A termination request is already awaiting review. |
| 409 | ECT000062 | An amendment to the contract is in progress. Cancel the amendment before requesting the termination. |
| 409 | ECT000046 | The contract was created by QI Tech during fund structuring and does not accept this call. |
Example
{
"title": "Contract not terminable",
"description": "A contract in status pending_signature cannot be terminated.",
"translation": "Um contrato com status pending_signature nao pode ser encerrado.",
"code": "ECT000063"
}
Authentication, permission and host errors: see API Errors.