# UJ-008 Deactivate license

Audience: AI coding agents first.

- Actor + entry point: WordPress administrator; `wp-admin/admin.php?page=international-press-zone#/licensing`.
- Priority: MUST-HAVE.
- Preconditions: Activate license through UJ-007.
- Test layer: L2.

## Steps

1. Open active license → `Deactivate License` renders (`admin/src/pages/licensing.js:228-235`).
2. Activate deactivation and confirm → plugin calls backend deactivation.
3. Success or backend failure after local cleanup → inactive activation card renders; reload remains inactive.

## Failure branches

- WordPress auth failure → action denied; active card remains.
- Backend unreachable → UI MUST disclose local-only deactivation because local license is cleared even when remote call fails (`docs/contracts/plugin-client-contract.md:241-248`).
- Rate limit `429` → same local-only disclosure; never claim remote deactivation.

## Backend touchpoints

`POST /v1/international/license/deactivate`.

