# Отмена инвойса

> Отменяйте открытый инвойс до того, как клиент зафиксировал актив, учитывайте допустимый переход состояния и корректно обрабатывайте ответ API.

`POST /v1/invoices/:invoice_id/cancel`

:::endpoint
POST /v1/invoices/:invoice_id/cancel
:::

**API-ключ:** `Payment`

Отменяет инвойс, пока он находится в статусе `awaiting_client`. Как только клиент выбрал токен и сеть и инвойс перешёл в `awaiting_payment`, отмена уже невозможна. Оплаченный или истёкший инвойс отменить нельзя. Повторная отмена уже отменённого инвойса ничего не меняет: возвращается `200` с тем же инвойсом, а не ошибка.

## Тело запроса

Поле `reason` обязательно (до 500 символов). Причина попадает в журнал аудита. В вебхуке `invoice.cancelled` её нет: тело события — та же проекция инвойса, что и в остальных событиях, и поля причины в ней не предусмотрено.

```json
{
  "reason": "Customer requested cancellation"
}
```

## Ответ (200 OK)

```json
{
  "invoice_id": "inv_5CcyDYmMUGtzYL10q0Iimr",
  "project_id": "prj_xFukZuAJZR06pLVBh3uwzv",
  "status": "cancelled",
  "is_final": true,
  "is_test": true,
  "payment_url": "https://checkout.paymos.io/invoice/inv_5CcyDYmMUGtzYL10q0Iimr",
  "order": {
    "external_id": "order-12345",
    "client_id": "customer-67890",
    "amount": "100.00",
    "currency": "USD"
  },
  "created_at": 1739280600,
  "updated_at": 1739280660,
  "expires_at": 1739284200
}
```

## Ошибки

См. [Коды ошибок](/ru/docs/errors/codes.md) — полный каталог. URI в поле `type` каждой ошибки ведёт сразу на нужную строку.
