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
isFreezableenabled or thepausableextension. 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
- Detect suspicious activity
- Freeze the affected account
- Investigate the account and transactions
- Based on findings:
- Unfreeze if cleared
- Seize tokens to a recovery address
- Force-burn tokens if required by regulation
- Log all actions with memos for audit trail