Freeze and Compliance

Freeze accounts, pause transfers, seize tokens, and screen addresses for compliance workflows.

SDP provides two public compliance workflows:

  • Token controls for assets that have isFreezable enabled or the pausable extension. These let you freeze individual accounts, pause all transfers globally, or seize tokens from a specific account.
  • Address screening through configured providers before you approve a destination, allowlist a wallet, or execute a regulated flow.

Token-control actions are available from the dashboard and the API. API key callers need tokens:admin for those onchain controls.

Screen an address

Use the Compliance API to check a Solana address across configured providers before onboarding a wallet or allowing a transfer destination.

curl -X POST https://api.solana.com/v1/compliance/address-screenings \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{
    "address": "8dHEsGLpCZHZbXnFVvqWq4kMfM2pVDuNrXvVJVhQWRGZ",
    "network": "solana",
    "intent": "transfer_destination"
  }'

The response aggregates provider-level results in data.screening.providers, including status, riskScore, riskLevel, and evaluatedAt. Use the Compliance API reference for the full schema.

Freeze an account

Prevent a specific holder from sending or receiving tokens:

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"
  }'

The accountAddress can be the holder wallet address or the matching token account. SDP derives the associated token account when needed.

Unfreeze an account

curl -X POST https://api.solana.com/v1/issuance/tokens/tok_abc123/unfreeze \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{ "accountAddress": "3xYZa...2aBc" }'

List frozen accounts

curl https://api.solana.com/v1/issuance/tokens/tok_abc123/frozen \
  -H "Authorization: Bearer sk_test_..."

Pause token activity

Halt token activity globally. Requires the pausable extension:

curl -X POST https://api.solana.com/v1/issuance/tokens/tok_abc123/pause \
  -H "Authorization: Bearer sk_test_..."

While paused, transfer-related and supply-management actions should be treated as unavailable until the token is unpaused.

Unpause

curl -X POST https://api.solana.com/v1/issuance/tokens/tok_abc123/unpause \
  -H "Authorization: Bearer sk_test_..."

Seize tokens

Force-transfer tokens from one account to another without the holder's signature:

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 a /prepare endpoint for client-side signing.

Compliance workflow

  1. Detect suspicious activity
  2. Freeze the affected account
  3. Investigate the account and transactions
  4. Based on findings:
    • Unfreeze if cleared
    • Seize tokens to a recovery address
    • Force-burn tokens if required by regulation
  5. Log all actions with memos for audit trail
Is this page helpful?