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

# Chainalysis

> Screen inbound and outbound transactions with Chainalysis KYT for AML compliance, with automatic enforcement through DFNS policies and webhooks.

export const Youtube = props => {
  return <iframe className="w-full aspect-video rounded-xl" src={`https://www.youtube.com/embed/${props.videoId}`} title="YouTube video player" frameBorder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowFullScreen>
      </iframe>;
};

[Chainalysis](https://www.chainalysis.com/) is the industry leader in blockchain analysis and transaction monitoring. Their KYT (Know Your Transaction) platform provides real-time risk scoring and investigative tools to help meet AML compliance requirements.

## Setup

<Steps>
  <Step title="Open the Chainalysis integration">
    In the DFNS Dashboard, navigate to **Integrations**, find the **Chainalysis** card, and click **Configure**.
  </Step>

  <Step title="Activate and enter your API key">
    Toggle **Activate Chainalysis Integration**, then enter your **Chainalysis API key**.

    <Frame>
      <img src="https://mintcdn.com/dfns-6d8c7466/Q7SYWJ4UghIDD6rh/images/auto/screening-with-chainalysis-1.png?fit=max&auto=format&n=Q7SYWJ4UghIDD6rh&q=85&s=c805d074360fd6bebd71e5e082cfd5b0" alt="Chainalysis integration settings with the API key field" width="2688" height="1672" data-path="images/auto/screening-with-chainalysis-1.png" />
    </Frame>
  </Step>

  <Step title="Save">
    Click **Save**. The integration is now active, and the Chainalysis rules become available in the policy builder.
  </Step>
</Steps>

<Youtube videoId="EEpqx3iQxBc" />

## Outbound transfer prescreening

Outbound transfers can be screened by Chainalysis before they are broadcast on-chain. Create a policy that runs the Chainalysis prescreening rule on wallet activity.

### From the dashboard

<Steps>
  <Step title="Create a policy">
    Go to **Policies**, click **Create Policy**, give it a name, and select the **Wallet usage (transfer, transaction, signature)** activity.
  </Step>

  <Step title="Select the Chainalysis rule">
    On the **Rule** step, choose **Transaction attempt prescreening (Chainalysis)**. Set the minimum **alert level** that triggers the policy (Low, Medium, High, or Severe), and optionally restrict the alert, exposure, and address **categories** or set a **User ID template**.

    <Frame>
      <img src="https://mintcdn.com/dfns-6d8c7466/Q7SYWJ4UghIDD6rh/images/auto/screening-with-chainalysis-2.png?fit=max&auto=format&n=Q7SYWJ4UghIDD6rh&q=85&s=64d18b0c8f69c1125eeb8c0316fa8fe6" alt="Policy rule set to Chainalysis prescreening with the alert level configuration" width="2688" height="3232" data-path="images/auto/screening-with-chainalysis-2.png" />
    </Frame>
  </Step>

  <Step title="Choose an action and save">
    Pick the action taken when the rule triggers, then review and **Save**. You can scope the policy to specific wallets or [tags](/guides/signing-policies).
  </Step>
</Steps>

When the action is `RequestApproval`, a flagged transfer stays pending until an approver reviews it. The approval page shows the triggered policy and the reason, with the full Chainalysis evaluation under "Evaluation details".

<Frame>
  <img src="https://mintcdn.com/dfns-6d8c7466/xkl8Ikn9T3-ioV3p/images/auto/screening-with-chainalysis-4.png?fit=max&auto=format&n=xkl8Ikn9T3-ioV3p&q=85&s=efc8ea00a31ab4740dd86cddde3727c7" alt="Pending policy approval triggered by a Chainalysis alert" width="2688" height="3032" data-path="images/auto/screening-with-chainalysis-4.png" />
</Frame>

### With the API

Create a policy with:

* Activity kind: [`Wallets:Sign`](/api-reference/policies#walletssign-activity)
* Rule kind: [`ChainalysisTransactionPrescreening`](/api-reference/policies#chainalysistransactionprescreening-policy-rule)
* Action kind: [`Block`](/api-reference/policies#block-policy-action), [`RequestApproval`](/api-reference/policies#requestapproval-policy-action), or [`NoAction`](/api-reference/policies#noaction-policy-action)

When the policy triggers, the Chainalysis screening results are included in the [`policy.triggered`](/api-reference/webhook-events) webhook event.

## Inbound transfer screening

Incoming transfers detected by the DFNS indexer can be screened by Chainalysis and reported to you.

### From the dashboard

<Steps>
  <Step title="Create a policy">
    Go to **Policies**, click **Create Policy**, give it a name, and select the **Incoming wallet transaction** activity.
  </Step>

  <Step title="Select the Chainalysis screening rule">
    On the **Rule** step, choose **Transaction screening (Chainalysis)** and configure the alert level and categories.

    <Frame>
      <img src="https://mintcdn.com/dfns-6d8c7466/Q7SYWJ4UghIDD6rh/images/auto/screening-with-chainalysis-3.png?fit=max&auto=format&n=Q7SYWJ4UghIDD6rh&q=85&s=dddf0e68f7692c0d6a50f34acce8c541" alt="Policy rule set to Chainalysis incoming transaction screening" width="2688" height="3232" data-path="images/auto/screening-with-chainalysis-3.png" />
    </Frame>
  </Step>

  <Step title="Save">
    Incoming screening reports results without blocking, so the action is **No action**. Review and **Save**.
  </Step>
</Steps>

### With the API

Create a policy with:

* Activity kind: [`Wallets:IncomingTransaction`](/api-reference/policies#wallets-incomingtransaction-activity)
* Rule kind: [`ChainalysisTransactionScreening`](/api-reference/policies#chainalysistransactionscreening-policy-rule)
* Action kind: [`NoAction`](/api-reference/policies#noaction-policy-action)

When the policy triggers, the Chainalysis screening results are included in the [`policy.triggered`](/api-reference/webhook-events) webhook event.

## Supported networks

<Note>
  For the most up-to-date list of supported networks and assets, check [Chainalysis KYT documentation](https://www.chainalysis.com/product/kyt/).
</Note>

### Native token transfers

Native token transfers on the following networks can be screened:

| Network       |
| ------------- |
| `Algorand`    |
| `ArbitrumOne` |
| `AvalancheC`  |
| `Bitcoin`     |
| `Bsc`         |
| `Ethereum`    |
| `FantomOpera` |
| `Litecoin`    |
| `Optimism`    |
| `Polygon`     |
| `Solana`      |
| `Tron`        |
| `XrpLedger`   |

### ERC-20 token transfers

ERC-20 token transfers on the following networks can be screened:

| Network       |
| ------------- |
| `ArbitrumOne` |
| `AvalancheC`  |
| `Bsc`         |
| `Ethereum`    |
| `Optimism`    |
| `Polygon`     |
