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

# Transaction Screening

> Understand which addresses Relay screens, when screening runs, and what happens when an address is blocked

The [Relay platform](https://docs.relay.link/what-is-relay.md) screens the addresses involved in every transaction using third-party risk data and an internal blocklist. Screening runs when a quote is requested and again before a fill, so a flagged address can stop a transaction before or after funds are deposited.

## Screened Flows

Screening applies to every Relay flow: bridges, swaps, and deposit-address transactions. It applies the same way whether the transaction starts from the API, the SDK, or the Relay App. There are no unscreened flows.

## Screened Addresses

Relay screens every address involved in a transaction:

* **Depositor** — the wallet sending funds, including the depositing wallet on deposit-address flows.
* **Recipient** — the wallet receiving funds on the destination chain.
* **Refund address** — `refundTo`, if specified.
* **Recovery address** — `recoveryAddress`, if specified.
* **Fee recipients** — every [app fee](https://docs.relay.link/features/app-fees.md) recipient.

## Screening Sources

Relay screens every address against four sources in parallel:

* **TRM Labs**
* **Chainalysis**
* **ZeroShadow**
* **Relay's internal blocklist**

An address is blocked if any source flags it. Relay's compliance team can also apply a manual allow or block override to an address, with a documented reason.

## Blocked Addresses

How a block surfaces depends on when the address is flagged.

| Stage | Error | What happens to funds |
| - | - | - |
| Quote | `BLOCKED_WALLET_ADDRESS` | The quote request fails with HTTP `400` before any transaction is created. No funds leave the wallet. |
| Fill | `BLOCKED_WALLET` | The fill is aborted and the funds remain in the protocol. The depositor address can [withdraw](https://docs.relay.link/references/protocol/guides/withdrawals.md) them. |

`BLOCKED_WALLET_ADDRESS` is returned by `/quote/v2` (see [Handling Quote Errors](https://docs.relay.link/references/api/api_core_concepts/handling-errors.md#expected-errors)). `BLOCKED_WALLET` is the `failReason` on a submitted request (see [Handling Execution Errors](https://docs.relay.link/references/api/api_core_concepts/execution-errors.md)). The owning integrator can see which addresses caused a `BLOCKED_WALLET` failure through `data.blockedAddresses` on [`GET /requests/v3`](https://docs.relay.link/references/api/api_guides/migrating-to-requests-v3#what-changed) by authenticating with its API key and passing `includeAuthenticatedData=true`.

> [!WARNING]
>
> Set `refundTo` and `recoveryAddress` to wallets that can sign a Relay withdrawal on the origin chain. Either address can become the protocol depositor, and withdrawing is then the only way to recover the funds, so an address that can only receive funds, such as an exchange deposit address, is not enough. See [Supported Chains and Signers](https://docs.relay.link/references/protocol/guides/withdrawals.md#supported-chains-and-signers) for which wallets can withdraw.

See [Unsupported Exchanges](https://docs.relay.link/security/unsupported-exchanges.md) before sending to or from an exchange.

## Screening Records

Relay stores screening results, and TRM results are retained for 6 months. Each result records the verdict from every source, so a record shows which source, if any, triggered a block for an address. If a partner needs evidence of a specific screen, contact [Support](https://docs.relay.link/resources/support.md) with the address and request ID, and Relay can provide the screening record.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.