Freeze and Compliance
Screen addresses, freeze accounts, pause transfers, and seize tokens for compliance workflows.
SDP provides two categories of compliance tooling:
- Token controls — freeze individual accounts, pause all transfers, or seize tokens. Available for tokens with
isFreezableenabled or thepausableextension. - Address screening — check a wallet against configured compliance providers before approving a destination or allowlisting it.
Token-control actions require tokens:admin permission on the API key.
How it works
Screen an address
Check a Solana address against configured compliance providers before onboarding a wallet or approving it as a transfer destination.
Use the Screen address action in the Compliance section of the dashboard.
Enter the wallet address and select the intent (e.g., transfer destination or allowlist candidate). Results appear per provider — each showing risk level, score, and flags.
curl -X POST https://api.solana.com/v1/compliance/address-screenings \
-H "Authorization: Bearer sk_test_..." \
-H "Content-Type: application/json" \
-d '{
"address": "8dHEsGLp...hQWRGZ",
"network": "solana",
"intent": "transfer_destination"
}'const { data } = await res.json();
// data.screening.providers[]
// → { provider, status, riskScore, riskLevel, message, evaluatedAt }See the Compliance API reference for the full schema.
Freeze and unfreeze an account
Prevent a specific holder from sending or receiving this token. The freeze targets one associated token account — other accounts are unaffected.
On the token detail page, go to the Compliance tab and select Freeze Controls.

Enter the holder's wallet address and an optional reason, then click Freeze account.

Confirm the on-chain submission in the confirmation prompt.

The "Freeze transaction finalized." toast appears and the Frozen Accounts count updates to 1.

To lift the freeze, find the account in the frozen list and click Unfreeze. Confirm the on-chain submission.

The "Unfreeze transaction finalized." toast appears and the Frozen Accounts count returns to 0.

Freeze:
curl -X POST https://api.solana.com/v1/issuance/tokens/tok_abc123/freeze \
-H "Authorization: Bearer sk_test_..." \
-H "Content-Type: application/json" \
-d '{
"accountAddress": "3xYZa...2aBc",
"reason": "Suspicious activity investigation"
}'accountAddress accepts a holder wallet or its token account — SDP derives the associated token account when needed.
Unfreeze:
await fetch("https://api.solana.com/v1/issuance/tokens/tok_abc123/unfreeze", {
method: "POST",
headers: { Authorization: "Bearer sk_test_...", "Content-Type": "application/json" },
body: JSON.stringify({ accountAddress: "3xYZa...2aBc" }),
});List frozen accounts:
curl https://api.solana.com/v1/issuance/tokens/tok_abc123/frozen \
-H "Authorization: Bearer sk_test_..."Pause and unpause the token
Halt all minting and transfer activity globally. Requires the pausable extension on the token.
On the token detail page, go to the Compliance tab and select Pause Controls. Click Pause token.

Confirm the on-chain submission in the confirmation prompt.

The "Pause transaction finalized." toast appears and an orange Token is paused banner displays across the page. All supply and transfer operations are now blocked.

To resume, click Unpause token and confirm.

# Pause
curl -X POST https://api.solana.com/v1/issuance/tokens/tok_abc123/pause \
-H "Authorization: Bearer sk_test_..."
# Unpause
curl -X POST https://api.solana.com/v1/issuance/tokens/tok_abc123/unpause \
-H "Authorization: Bearer sk_test_..."While paused, all transfer-related and supply-management operations are rejected until unpause.
Seize tokens
Force-transfer tokens from a holder to a recovery address without the holder's signature. For court orders and regulatory enforcement. Requires tokens:admin.
In the Compliance tab, click Seize tokens. Provide the source, destination, amount, and a memo (strongly recommended for audit records). Confirm to submit.
curl -X POST https://api.solana.com/v1/issuance/tokens/tok_abc123/seize \
-H "Authorization: Bearer sk_test_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: seize-001" \
-d '{
"seize": {
"source": "3xYZa...2aBc",
"destination": "9aBCd...4eEf",
"amount": "250",
"memo": "Court order #12345"
}
}'Seize also supports /prepare for client-side signing.
Compliance response workflow
- Screen the address via the Compliance API
- Freeze the affected account while investigating
- Based on findings — Unfreeze if cleared, Seize tokens to a recovery address, or Force-burn (see Mint and Burn)
- Record all actions with
memofields for the audit trail