---
title: "Change Estimate State"
method: PUT
path: "/{estimates-type}/{document-id}/change-state.json"
tags: ["Estimates"]
---

# Change Estimate State

`PUT /{estimates-type}/{document-id}/change-state.json`

Changes the state of estimate documents (quotes, proformas, fees_notes).

| From | To | Event |
| :--- | :--- | :--- |
| Draft | final | `finalized` |
| Draft | deleted | `deleted` |
| final | Accepted | `accept` |
| final | refused | `refuse` |
| final | canceled | `canceled` |
| Accepted | refused | `refuse` |
| refused | Accepted | `accept` |
| Accepted | canceled | `canceled` |
| refused | canceled | `canceled` |

## Path parameters

- `estimates-type` 'quotes' | 'proformas' | 'fees_notes', required
- `document-id` integer, required

## Query parameters

- `api_key` string, required

## Request body

- ChangeStateEstimateRequest
  - `quote` object, required
    - `state` 'finalized' | 'canceled' | 'deleted' | 'accepted' | 'refused', required
    - `message` string — Cancellation message. No enforced character limit (text column).

## Response `200`

SUCCESS 

#### Possible values for field atcud:

* ABCD1234-1 (or similar) - Unique document identifier to the Tax Authority, when the sequence is registered.
* N/D - The document's sequence is relevant for ATCUD but is not registered in the Tax Authority.
* N/A - The document's sequence is not relevant for ATCUD and is not registered in the Tax Authority.

- EstimateGetResponse
  - `quote` object
    - `id` integer
    - `status` string
    - `archived` boolean
    - `type` string
    - `sequence_number` string
    - `inverted_sequence_number` string
    - `atcud` string
    - `date` string
    - `due_date` string
    - `reference` string, nullable
    - `observations` string, nullable — No enforced character limit (text column).
    - `retention` string, nullable
    - `permalink` string
    - `saft_hash` string — Server-generated. No enforced character limit (text column).
    - `sum` number
    - `discount` number
    - `before_taxes` number
    - `taxes` number
    - `total` number
    - `currency` string
    - `sequence_id` integer, nullable
    - `tax_exemption` string
    - `client` InvoiceClient
      - `id` integer
      - `name` string
      - `code` string
      - `country` string
      - `email` string
    - `items` InvoiceItem[]
      - `name` string
      - `description` string, nullable
      - `unit_price` string
      - `quantity` string
      - `unit` string
      - `discount` number
      - `tax` object
        - `id` integer
        - `name` string
        - `value` number
      - `subtotal` number
      - `tax_amount` number
      - `discount_amount` number
      - `total` number

## Other responses

- `401` — ACCESS DENIED
- `404` — NOT FOUND
- `422` — UNPROCESSABLE ENTITY

## Changes

- **2026-08-25** `5b82d4eb0d9f` — 9 breaking, 1 warning, 4 info
  - the response property `quote/items/items/description` became nullable for the status `200`
  - the response property `quote/observations` became nullable for the status `200`
  - the response property `quote/reference` became nullable for the status `200`
  - the response property `quote/retention` became nullable for the status `200`
  - …10 more

[Change history](https://skmtc.dev/invoicexpress/apis/invoicexpress-api/changes/:estimates-type/:document-id/change-state.json/put.md)

---

[API](https://skmtc.dev/invoicexpress/apis/invoicexpress-api.md) · [All operations](https://skmtc.dev/invoicexpress/apis/invoicexpress-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/invoicexpress/invoicexpress-api/revisions/5b82d4eb0d9f/schema)
