> ## Documentation Index
> Fetch the complete documentation index at: https://developers.circle.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Before reading these docs, install the relevant Circle Skill to get pre-loaded context — skills are LLM-optimized and cover architecture decisions, correct flows, and common pitfalls. In Claude Code: run /plugin marketplace add circlefin/skills then /plugin install circle-skills@circle. With Vercel Skills CLI: run npx skills add circlefin/skills. Available skills: use-usdc https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-usdc/SKILL.md (balances, transfers, approvals on EVM and Solana); EURC has no skill — see https://developers.circle.com/stablecoins/what-is-eurc.md; bridge-stablecoin https://github.com/circlefin/skills/blob/master/plugins/circle/skills/bridge-stablecoin/SKILL.md (crosschain transfers via CCTP, USDC, EURC, and third-party assets); use-arc https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-arc/SKILL.md (Arc chain config, contract deployment, USDC bridging — Arc docs: https://docs.arc.io/llms.txt); use-circle-wallets https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-circle-wallets/SKILL.md (choose wallet type); use-developer-controlled-wallets https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-developer-controlled-wallets/SKILL.md (custodial wallets for payouts and treasury); use-user-controlled-wallets https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-user-controlled-wallets/SKILL.md (embedded wallets with Web2 login); use-modular-wallets https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-modular-wallets/SKILL.md (smart contract wallets with passkeys and ERC-4337); use-gateway https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-gateway/SKILL.md (unified USDC balance, nanopayments); use-smart-contract-platform https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-smart-contract-platform/SKILL.md (deploy, interact, monitor contracts). Pair any skill with the Circle MCP server for live SDK signatures, contract addresses, and chain IDs: {"mcpServers":{"circle":{"url":"https://api.circle.com/v1/codegen/mcp"}}}.
> Read the product overview first. Each product has an overview explaining when and why to use it. Read it before quickstarts.
> Pick the right wallet type. Developer-controlled (you hold keys), user-controlled (end user holds keys via PIN/social login), or modular (smart contract wallets with passkeys). See https://developers.circle.com/wallets.md.
> Use CCTP V2 for crosschain transfers. CCTP natively transfers USDC and EURC via burn-and-mint, and supports permissionless wrapping of third-party assets via lock-and-mint. V1 is legacy; always use V2 unless V1 is specified or the chain requires it (Noble, Sui, and Aptos still require V1). Migration guide: https://developers.circle.com/cctp/migration-from-v1-to-v2.md.
> Use Bridge Kit for frontend bridging. Wraps CCTP with a simpler SDK for user-facing apps. Use CCTP directly for backend transfers.
> Gas Station vs Paymaster. Gas Station sponsors gas for Circle Wallet transactions. Paymaster lets users pay gas in USDC. Different use cases — read both overviews.
> Gateway Nanopayments for sub-cent payments. Gasless USDC micropayments down to $0.000001 via x402 and batched settlement. For pay-per-request APIs, AI agent payments, streaming.
> Look up USDC addresses per chain. Never hardcode — use https://developers.circle.com/stablecoins/usdc-contract-addresses.md.
> Prefer SDKs over raw API calls. Node.js and Python SDKs handle auth, retries, and errors.
> API key required. Bearer token in Authorization header. Testnet and mainnet use separate keys and may use different base URLs depending on the product.
> Set up webhooks when available. Most operations are async. Webhooks deliver transaction confirmations and state changes.
> When calling list endpoints, paginate using pageSize and pageAfter until no nextPageAfter cursor is returned—stopping at the first page silently misses records.
> Building an AI agent? Start with the Agent Stack—Circle CLI, agent wallets, and nanopayments built for autonomous use cases: https://developers.circle.com/agent-stack.md.

# Rule management

Your transaction screening rules are the rules against which your screening
events (embedded or address) will be evaluated. They will contain the rule
criteria that will trigger the rule and the applicable or suggested actions for
each rule if triggered. For testnet, there are a number of default rules in
place which you can use to test against (see
[Testing guide](/wallets/compliance-engine/tx-screening-testing)).

<Note>
  Compliance Engine on both testnet and mainnet is only available for eligible
  customers. Contact Circle through the
  [Compliance Engine request form](https://www.circle.com/wallets/compliance-engine/#get-in-touch)
  to get access.
</Note>

## Default rules

On mainnet, there are also default rules in place as a starting point. However,
they may not be sufficient to address your company's compliance obligations or
risk appetite. You should consult legal counsel when evaluating
[compliance requirements](https://6778953.fs1.hubspotusercontent-na1.net/hubfs/6778953/PDFs/Whitepapers/ComplianceEngine_whitepaper.pdf)
as they relate to your unique business model and the jurisdictions in which you
operate. Once you have done so, you can set up appropriate configurable rules to
address your risks.

## Rule configurations

There are two types of rules for
[Transaction screening](/wallets/compliance-engine/tx-screening) which can be
configured: *Restrictive Rules* and *Alert-only Rules*.

A rule consists of the following:

1. **Name:** This is auto generated based on the rule criteria and actions.
2. **Description:** This is an optional text field to provide a summary of what
   the rule is designed to accomplish.
3. **Actions**: What actions should be applied or suggested when a rule is
   matched. There are two distinct rule types, *Restrictive* and *Alert-only*,
   for which the following actions are associated:\
   a. **Transaction Decision**: this action allows you to prevent outgoing
   transactions from being broadcast. It is available as a *restrictive* rule
   only.\
   b. **Wallet Freeze**: this action allows you to freeze the funds in the
   associated Circle Wallet. It is available as a *restrictive* rule only.\
   c. **Generate an Alert**: this action will trigger the generation of an alert
   in your Alerts Table in the [Console](https://console.circle.com/). This is
   optional on *restrictive* rules but mandatory on *alert-only* rules.
4. **Rule Criteria**: What combination of risk signals should a rule alert on.
   There are three unique criteria to be set with each rule:\
   a. **Risk Category**: general categorization of the risk that has been
   flagged for the entity in question.\
   b. **Risk Score**: representative value for the level of risk associated with
   the entity.\
   c. **Risk Type**: level of exposure for the risk involved. Is the address
   directly or indirectly associated with the risk?

## Mandatory rules

There are a number of rules in place by default that have minimal configuration
options, e.g. the ability to toggle the alert action. These rules are as
follows:

* **Circle's Sanctions Blocklist.** This rule is in line with the mandatory
  [Compliance requirements](/wallets/compliance-requirements#ofac-sanctions-compliance-in-terms-of-service)
  you must adhere to when using Circle Wallets. Wallets and transactions will be
  restricted if they are detected sending or receiving from any OFAC-sanctioned
  address.
* **Your blocklist.** This rule relates to the
  [Watchlists](/wallets/compliance-engine/tx-screening-rule-management#watchlists)
  functionality.
* **Frozen.** This rule is used to enforce the wallet freeze, which is applied
  to wallets by other transaction screening rules, or via the developer console.
* **Your allowlist.** This rule relates to the
  [Watchlists](/wallets/compliance-engine/tx-screening-rule-management#watchlists)
  functionality.

## Configurable rule criteria combinations

The table below outlines all possible criteria combinations that can be used to
create/configure rules.

| Symbol | Meaning |
| - | - |
| ✅ | Default Combination in place on Mainnet. Configurable. |
| 🟡 | Possible Combination that can be utilized in a configurable rule. |
| ❌ | Unsupported combination, a screening cannot result in this possible combination of criteria. |

<br />

| Risk Category | Risk Type | Risk Score | | | |
| - | - | - | - | - | - |
| | | **Severe** | **High** | **Medium** | **Low** |
| Sanctions | Ownership | ✅ | ❌ | ❌ | ❌ |
| Sanctions | Counterparty | 🟡 | ❌ | ❌ | ❌ |
| Sanctions | Indirect | ❌ | 🟡 | ❌ | ❌ |
| Terrorist Financing | Ownership | ✅ | 🟡 | ❌ | ❌ |
| Terrorist Financing | Counterparty | 🟡 | 🟡 | ❌ | ❌ |
| Terrorist Financing | Indirect | ❌ | 🟡 | 🟡 | ❌ |
| CSAM | Ownership | ✅ | ❌ | ❌ | ❌ |
| CSAM | Counterparty | 🟡 | ❌ | ❌ | ❌ |
| CSAM | Indirect | ❌ | 🟡 | ❌ | ❌ |
| PEP | Ownership | ❌ | ❌ | 🟡 | ❌ |
| PEP | Counterparty | ❌ | ❌ | 🟡 | ❌ |
| PEP | Indirect | ❌ | ❌ | ❌ | 🟡 |
| Gambling | Ownership | ❌ | ❌ | ❌ | ❌ |
| Gambling | Counterparty | ❌ | ❌ | 🟡 | ❌ |
| Gambling | Indirect | ❌ | ❌ | ❌ | 🟡 |
| Illicit Behavior | Ownership | 🟡 | 🟡 | 🟡 | ❌ |
| Illicit Behavior | Counterparty | 🟡 | 🟡 | 🟡 | ❌ |
| Illicit Behavior | Indirect | ❌ | 🟡 | 🟡 | 🟡 |
| High Risk Industry | Ownership | ❌ | ❌ | 🟡 | 🟡 |
| High Risk Industry | Counterparty | ❌ | ❌ | 🟡 | 🟡 |
| High Risk Industry | Indirect | ❌ | ❌ | ❌ | 🟡 |
| Other | Ownership | ❌ | 🟡 | ❌ | 🟡 |
| Other | Counterparty | ❌ | 🟡 | 🟡 | 🟡 |
| Other | Indirect | ❌ | ❌ | 🟡 | 🟡 |

## Rule setup

To create or edit a rule, follow these steps:

1. **Access Settings page**: Using your credentials, log in to the Circle
   [Console](https://console.circle.com/). From there, navigate to the
   **Compliance Engine > Settings** section, which allows you to manage your
   screening rules conveniently.
2. **Choose to create or edit a rule**: Select the appropriate rule type
   *Configurable **restrictive** rules* or *Configurable **alert-only** rules*.
   To edit an existing rule, select the rule in question and click the `Edit`
   button. To add a new rule, select `Add Rule`.
3. **Configure the rule**: Set the desired rule (*description*, *actions*, and
   *criteria*) based on your requirements. Refer to the above
   [possible configurations](/wallets/compliance-engine/tx-screening-rule-management#configurable-rule-criteria-combinations)
   for clarity on the available options.
4. **Update or create the rule**: After applying the necessary configurations,
   select either:
   * `Save` to modify an existing rule; or
   * `Create Rule` button (top-right of page) to create a new rule.

<Accordion title="Video Tutorial: Creating a Rule in the Console">
  <iframe src="https://fast.wistia.net/embed/iframe/8zs0v4po7k?seo=true&videoFoam=true" title="Video Tutorial: Creating a Rule in the Console" width="800px" height="450px" />
</Accordion>

## Deactivating a rule

New rules will be created in an *active* state by default. If you need to
temporarily deactivate a rule, you can do so as follows:

1. **Select the rule.** Using your credentials, log in to the Circle
   [Console](https://console.circle.com/). From there, navigate to the
   **Compliance Engine > Settings** section, select the rule you wish to change,
   and select the `Edit` button.
2. **Toggle the Rule Status.** Rule status is located at the bottom of the page.
   Just toggle the Rule Status from `Active` to `Inactive`.
3. **Save change.**

<Accordion title="Video Tutorial: Deactivating a Rule in the Console">
  <iframe src="https://fast.wistia.net/embed/iframe/56v6wt5ips?seo=true&videoFoam=true" title="Video Tutorial: Deactivating a Rule in the Console" width="800px" height="450px" />
</Accordion>

## Deleting a rule

If you need to permanently delete a rule, you can do so as follows:

1. **Select the rule.** Using your credentials, log in to the Circle
   [Console](https://console.circle.com/). From there, navigate to the
   **Compliance Engine > Settings** section, select the rule you wish to change.
2. **Delete the rule.** Select the `Delete` button twice.

<Accordion title="Video Tutorial: Deleting a Rule in the Console">
  <iframe src="https://fast.wistia.net/embed/iframe/c943p3amb9?seo=true&videoFoam=true" title="Video Tutorial: Deleting a Rule in the Console" width="800px" height="450px" />
</Accordion>

## Watchlists

Another method for influencing your rule configuration is via the *Watchlists*
feature. You can influence the screening evaluations by adding blockchain
addresses to either the *Blocklist* or the *Allowlist*.

These lists act as the inputs for two of your default rules:

* *Your blocklist* will deny any transaction where the associated address has
  been added to your blocklist.
* *Your allowlist* will allow any transaction where the associated address has
  been added to your allowlist.

To add an address to either your allowlist or your blocklist:

1. **Access the Watchlists page.** Using your credentials log into the Circle
   [Console](https://console.circle.com/). Navigate to the *Watchlists* page
   under the *Compliance Engine*.
2. **Choose the appropriate list.** Select the appropriate tab between
   *Blocklist* and *Allowlist* for your desired outcome.
3. **Add entry.** Select the `Add Entry` button on the top right. Enter the
   blockchain address, choose the reason, and leave an optional note explaining
   the addition.

<Accordion title="Video Tutorial: Using Watchlists in the Console">
  <iframe src="https://fast.wistia.net/embed/iframe/tp1k8tryxr?seo=true&videoFoam=true" title="Video Tutorial: Using Watchlists in the Console" width="800px" height="450px" />
</Accordion>
