# Закрытие карты

Закрытие карты — асинхронная операция: вы отправляете запрос, карта
переходит в статус `closing`, а после завершения — в `closed`. Остаток
средств на карте на момент закрытия за вычетом комиссии за закрытие
возвращается на баланс компании.

## Запрос

```
POST /cards/{id}/retire
```

### Пример

```bash
curl -X POST 'https://b2b.lumowallet.io/cards/8c7f1823-.../retire' \
  -H 'X-API-Key: YOUR_API_KEY'
```

### Ответ

Возвращается карта в статусе `closing` (или сразу `closed`, если закрытие
прошло мгновенно — например, в тестовом режиме).

```json
{
  "id": "8c7f1823-...",
  "status": "closing",
  "maskedPan": "4466 ** ** 1234",
  "expiry": "03/29",
  "assignedAt": "2026-04-23T12:00:00Z",
  "createdAt": "2026-04-23T11:59:00Z"
}
```

## Что происходит дальше

1. Карта переходит в `closing` — пополнения по ней запрещены
(`POST /cards/recharge` вернёт `CARD_RETIRED`).
2. Закрытие обрабатывается на нашей стороне (может занять некоторое время).
3. После завершения карта переходит в `closed`, а **остаток на карте за
вычетом `cardClosureFeeUsdt`** зачисляется на баланс компании.
4. Приходит webhook [`card.closed`](/guides/cards/webhooks) с итоговыми
суммами.


```json
{
  "event": "card.closed",
  "data": {
    "cardId": "8c7f1823-...",
    "closingBalance": 24.5,
    "feeUsdt": 1,
    "refundUsdt": 23.5
  }
}
```

- `closingBalance` — остаток на карте на момент закрытия.
- `feeUsdt` — комиссия за закрытие (`cardClosureFeeUsdt`).
- `refundUsdt` — сумма, возвращённая на баланс компании
(`closingBalance − feeUsdt`, не меньше 0).


## Важно

- **Идемпотентность.** Повторный `POST /cards/{id}/retire` для карты,
которая уже `closing` или `closed`, безопасен и не запускает повторное
закрытие/возврат.
- **Возврат один раз.** Средства возвращаются ровно один раз — в момент
перехода в `closed`. Ориентируйтесь на webhook `card.closed` и статус
карты, а не на ответ исходного запроса.
- **Только активные карты.** Закрывать можно карту в статусе `assigned`.
Для `requested`/`failed` вернётся ошибка.


## Тестовый режим

При `cardsTestMode = true` закрытие происходит мгновенно: карта сразу
получает статус `closed`, возврат зачисляется на баланс, и webhook
`card.closed` отправляется без задержки.