# Enforcement

Freeze, release, clawback and pause are how an issuer enforces the law on its asset. Each is a contract call that the administering vault's quorum signs, carries a reason code, and leaves a public on-chain event.

> Part of the SQRL documentation, section "SQRL Enterprise".
> Rendered page: https://docs.sqrl.tech/enterprise/assets/enforcement

Enforcement is run from the asset's **Controls** tab and from the actions menu. Frozen and restricted addresses are listed on the left of the Controls tab, with their balance, reason and case; the enforcement history is on the right.

## Freezing a holder

**Required permissions:** Manage compliance (`MANAGE_COMPLIANCE`).

1. Open the asset and select **Freeze a holder**.
2. Enter the target: an address, or a single outpoint (`txid:vout`).
3. Select the **reason**.
4. Enter the **case reference** from your case management system. It is required.
5. Select **Request freeze**.

The freeze is proposed for signing. Once the vault's quorum signs it, the target's balance cannot move. Freezing an outpoint pins that balance whoever tries to spend it. Freezing an address blocks it as a sender and holds back any balance sent on its behalf. Freezes stay in force while an asset is paused, and SQRL Enterprise refuses to build a movement from a frozen sender before any transaction exists.

### Freeze reasons

| Code | Reason |
|---|---|
| 1 | Sanctions screening hit |
| 2 | Law-enforcement request |
| 3 | Suspected fraud |
| 4 | Source of funds unverified |
| 5 | Court order |
| 6 | Internal investigation |

## Releasing a holder

Select the frozen target on the Controls tab, choose a release reason and case reference, and select **Request release**.

| Code | Reason |
|---|---|
| 101 | Cleared after review |
| 102 | False positive |
| 103 | Case closed, no finding |
| 104 | Court order lifted |
| 105 | Law-enforcement request withdrawn |

  The reason code is written on chain with the call. The case reference is recorded with the action in SQRL Enterprise and the audit log, and kept off-chain, so the public record shows what happened and why without naming the case.

## Clawback

A clawback forcibly transfers a frozen balance to a recovery vault. You can then burn it, or return it when a case is resolved.

**Required permissions:** a compliance officer requests the clawback; it is submitted under Burn tokens (`BURN_TOKENS`) and signed by the administering vault's quorum, with a different operator approving.

1. Select the frozen holder on the Controls tab and select **Clawback**.
2. Check the amount and select the **recovery vault**.
3. Select the reason code (clawbacks use the freeze reasons) and enter the case reference.
4. Submit for approval. The approval chain shows who proposed and who must sign.

  A clawback is irreversible once broadcast and emits a public on-chain event.

## Pausing an asset

**Required permissions:** Pause tokens (`PAUSE_TOKENS`).

Select **Pause asset**, choose a reason from your code book and submit. Once signed, every transfer of the asset halts until a pauser selects **Resume** and the resume is signed. Freezes and clawbacks still work while an asset is paused.

  Every enforcement action is proposed by one operator, approved by the quorum, reason-coded on chain and recorded with its case in the audit log. An issuer can show regulators exactly what it did, and holders can see that it happened.
