> ## 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.

# Elliptic

> Screen transactions with Elliptic KYT for AML compliance: automatic screening in both directions, plus policy-enforced prescreening of outbound transfers.

[Elliptic](https://www.elliptic.co/) provides blockchain analytics and transaction monitoring for AML compliance. DFNS integrates Elliptic as a KYT (Know Your Transaction) provider alongside [Chainalysis](/integrations/aml-kyt/chainalysis).

## Setup

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

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

    <Frame>
      <img src="https://mintcdn.com/dfns-6d8c7466/RjmMryg5AQNnbTAg/images/auto/screening-with-elliptic-1.png?fit=max&auto=format&n=RjmMryg5AQNnbTAg&q=85&s=e04c3c6a2d5b070d87ad0f3958ffc26e" alt="Elliptic integration settings with the API key and secret fields" width="2688" height="1672" data-path="images/auto/screening-with-elliptic-1.png" />
    </Frame>
  </Step>

  <Step title="Save">
    Click **Save**. Your credentials are validated on activation. The integration is now active, and the Elliptic rule becomes available in the policy builder.
  </Step>
</Steps>

Once activated, DFNS screens transfers with Elliptic in both directions on every network covered by Elliptic holistic screening — no policy required. Elliptic results are recorded untranslated: the native 0–10 risk score, and one alert per fired risk rule.

## Outbound transfer prescreening

Outbound transfers can be screened by Elliptic before they are broadcast on-chain. Upon a transfer attempt, DFNS runs a synchronous Elliptic wallet analysis of the destination address and checks the returned risk score against your configured threshold, plus any configured risk rules or categories.

### 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 Elliptic rule">
    On the **Rule** step, choose **Transaction attempt prescreening (Elliptic)**. Set the **risk score threshold** (0–10) that triggers the policy, and optionally add risk rule IDs or category names from your Elliptic risk model that trigger it regardless of the score.

    <Frame>
      <img src="https://mintcdn.com/dfns-6d8c7466/RjmMryg5AQNnbTAg/images/auto/screening-with-elliptic-2.png?fit=max&auto=format&n=RjmMryg5AQNnbTAg&q=85&s=565d9aad74721616a7beef09a6e384b7" alt="Policy rule set to Elliptic prescreening with the risk score threshold configuration" width="2688" height="3232" data-path="images/auto/screening-with-elliptic-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 — for example, the Elliptic risk score and the threshold it crossed.

<Frame>
  <img src="https://mintcdn.com/dfns-6d8c7466/RjmMryg5AQNnbTAg/images/auto/screening-with-elliptic-3.png?fit=max&auto=format&n=RjmMryg5AQNnbTAg&q=85&s=490c8d6b0309100a2929950da064a9e5" alt="Pending policy approval triggered by Elliptic prescreening" width="2688" height="3032" data-path="images/auto/screening-with-elliptic-3.png" />
</Frame>

### With the API

Create a policy with:

* Activity kind: [`Wallets:Sign`](/api-reference/policies#walletssign-activity)
* Rule kind: [`EllipticTransactionPrescreening`](/api-reference/policies#elliptictransactionprescreening-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)

**Configuration**

| Property                                         | Type             | Description                                                                                                                                                                                                                                   |
| ------------------------------------------------ | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| riskScoreThreshold\*                             | Number           | Risk score threshold (0–10, decimals allowed). The policy triggers if the Elliptic risk score is at or above the threshold.                                                                                                                   |
| triggeredRules.ruleIds\*                         | Array of UUIDs   | IDs of risk rules from your Elliptic risk model. If any of these rules matched the analysis, the policy triggers regardless of the risk score. Leave empty to trigger on the risk score threshold only.                                       |
| triggeredRules.categories\*                      | Array of strings | Elliptic category names (e.g. "Dark Market"), matched case-insensitively. If a matched risk rule involves any of these categories, the policy triggers regardless of the risk score. Leave empty to trigger on the risk score threshold only. |
| fallbackBehaviours.skipUnscreenableTransaction\* | Boolean          | Skip wallet requests that cannot be screened (e.g. raw signatures).                                                                                                                                                                           |
| fallbackBehaviours.skipUnsupportedNetwork\*      | Boolean          | Skip requests on a network not yet supported in the DFNS Elliptic integration.                                                                                                                                                                |
| fallbackBehaviours.skipEllipticFailure\*         | Boolean          | Skip any failure of the Elliptic analysis (timeout, rate limiting, any error).                                                                                                                                                                |

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

## Supported networks

Screening covers the networks supported by Elliptic holistic screening.

<Note>
  For the most up-to-date list of supported networks and assets, check the [Elliptic documentation](https://www.elliptic.co/).
</Note>
