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

# Screening dei wallet on-demand: API senza transazione

> Con Didit, esegui lo screening AML di un singolo indirizzo wallet crypto senza transazioni: origine dei fondi, sanzioni e punteggio di rischio.

A volte devi verificare il rischio AML di un wallet crypto **prima** che esista una transazione da registrare, ad esempio quando un cliente aggiunge un indirizzo di prelievo o quando il team di compliance vuole valutare un indirizzo in modo ad hoc. L'endpoint su richiesta per lo screening dei wallet analizza un singolo indirizzo e restituisce il risultato di rischio completo senza creare una transazione.

Questo è il corrispettivo autonomo dello [screening crypto automatico](https://docs.didit.me/it/transaction-monitoring/aml-screening.md) che viene eseguito durante l'[invio di una transazione](https://docs.didit.me/it/transaction-monitoring/transactions.md). Entrambi usano gli stessi provider di analisi della blockchain e la stessa struttura del risultato.

## Quando usarlo

| Caso d'uso | Endpoint |
| - | - |
| Verifica preventiva di un indirizzo senza transazione da registrare | **Screening dei wallet**: `POST /v3/wallet-screening/` |
| Screening di un wallet come parte di un deposito o prelievo registrato | [Create Transaction](https://docs.didit.me/it/transaction-monitoring/transactions.md) con `currency_kind: "crypto"` |

Lo screening dei wallet non scrive nulla nella tabella delle transazioni. Se ti serve lo screening collegato a una transazione monitorata (con regole, alert e webhook), invia una transazione.

## Prerequisiti

Il monitoraggio delle transazioni deve essere configurato per l'applicazione, con un provider gestito o una [chiave di un provider esistente](https://docs.didit.me/it/transaction-monitoring/aml-screening.md#provider-supportati). Configuralo in **Transazioni** > **Impostazioni** > **Provider Preferences** nella [Business Console](https://business.didit.me). Se non è configurato alcun provider, l'endpoint restituisce `409 Conflict`.

## Richiesta

`POST https://verification.didit.me/v3/wallet-screening/`

Autentica la richiesta con l'header `x-api-key`.

| Campo | Tipo | Obbligatorio | Descrizione |
| - | - | - | - |
| `wallet_address` | stringa | Sì | L'indirizzo o l'identificativo di rete da sottoporre a screening. Deve corrispondere alla rete scelta, come `0x` più 40 caratteri esadecimali per le catene EVM, oppure un identificativo Lightning accettato dal tuo provider. Alias: `address`. |
| `blockchain` | stringa | No | Identificativo di asset / rete. Se omesso, Didit ricava la rete dal formato dell'indirizzo: gli indirizzi `bc1`, `1` e `3` sono Bitcoin (`BTC`), gli indirizzi `T` sono Tron (`TRX`) e le chiavi pubbliche in base58 sono Solana (`SOL`). Un indirizzo `0x` è valido su ogni rete EVM, quindi risponde `422` con `candidate_chains` e non viene sottoposto a screening né addebitato; rinvialo con la rete impostata. Qualsiasi altro formato risponde `400`. Valori accettati: `BTC`, `LIGHTNING`, `ETH`, `LTC`, `XRP`, `BCH`, `DOGE`, `TRX`, `SOL`, `MATIC`, `BNB`, `BASE`, `OP`, `ARB`, `AVAX`, `ADA`, `XLM`, `HBAR`, `CELO`, `MODE`, `PLUME`, `USDT`, `USDC`. Sono accettati anche i nomi comuni delle reti, per esempio `POLYGON` o `POL` per `MATIC`, `BSC` per `BNB` e `TRON` per `TRX`. Alias: `currency`. |
| `direction` | stringa | No | `inbound`, `outbound`, `deposit` o `withdrawal`. Contesto facoltativo per il provider; omettilo per uno screening neutro prima del trasferimento. Non modifica il `risk_score`, la `severity` né le ripartizioni del flusso dei fondi (vedi la nota in [Risposta](#risposta)). |

### Copertura delle reti

Lo screening gestito copre Base (`BASE`), Optimism (`OP`) e Arbitrum One (`ARB`), sia per lo screening dei wallet sia per quello degli hash delle transazioni.
I provider collegati possono avere una copertura diversa; una rete deve essere supportata anche dal provider e dall'account selezionati.
Le reti Celo (`CELO`), Mode (`MODE`) e Plume (`PLUME`) sono sottoposte a screening tramite un account TRM Labs collegato (Marketplace, con chiave propria); lo screening gestito non le copre e risponde `400`.
Non inviare `ETH` per un'altra rete EVM: lo stesso indirizzo può avere attività e rischio diversi su ogni rete.

Con lo screening gestito, `USDT` e `USDC` sono alias legacy per Ethereum, non una ricerca su tutte le reti in cui esistono questi token.
Usa l'identificativo di rete (`ETH`, `TRX`, `SOL`, `MATIC`, `BNB`, `BASE`, `OP`, `ARB`, `AVAX`, `ADA`, `XLM`, `HBAR`, oppure con TRM Labs `CELO`, `MODE` o `PLUME`) per la rete effettiva del wallet.
Per i token nelle transazioni registrate, mantieni il token in `transaction_details.currency` e specifica la rete separatamente in `transaction_details.crypto_params.crypto_chain`.
Vedi [selezione di asset e rete](https://docs.didit.me/it/transaction-monitoring/aml-screening.md#selezione-dell’asset-e-della-rete).

> [!WARNING]
>
> `LIGHTNING` è disponibile solo se l'applicazione ha un provider BYOK Elliptic o Chainalysis collegato nel **Marketplace** della console.
> Non è disponibile con il provider Merkle Science gestito né con Crystal o TRM Labs.
> Le richieste senza un provider collegato supportato restituiscono `400` e non vengono sottoposte a screening né addebitate.

```bash theme={null}
curl -X POST https://verification.didit.me/v3/wallet-screening/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "wallet_address": "0x94f1b9b64e2932f6a2db338f616844400cd58e8a",
    "blockchain": "ETH"
  }'
```

## Risposta

La risposta è il risultato di screening standardizzato, con la stessa struttura del risultato del provider `WALLET_SCREENING` restituito dallo screening delle transazioni.

| Campo | Tipo | Descrizione |
| - | - | - |
| `provider` | string | Provider che ha eseguito lo screening dell'indirizzo (`merklescience`, `crystal`, `chainalysis`, `elliptic`, `trmlabs`). |
| `screening_type` | string | Sempre `WALLET_SCREENING`. |
| `risk_score` | integer | Punteggio di rischio normalizzato da 0 a 100. Merkle Science assegna a un indirizzo un valore `0-5`, che corrisponde a `0`, `15`, `35`, `55`, `75` o `95`. |
| `severity` | string | Fascia di rischio ricavata da `risk_score` (vedi la nota sotto): `UNKNOWN`, `LOW`, `MEDIUM`, `HIGH` o `CRITICAL`. |
| `status` | string | `SCREENED`, `PENDING` o `ERROR`. |
| `summary` | string | Riepilogo leggibile. |
| `wallet_address` | string | L'indirizzo sottoposto a screening. |
| `blockchain` | string | La blockchain sottoposta a screening. |
| `sanctions_hit` | boolean | `true` quando il wallet sottoposto a screening è soggetto a sanzioni, oppure quando i fondi di una delle sue controparti provengono da entità sanzionate (esposizione). Il campo non distingue tra i due casi. |
| `pep_counterparty` | boolean \| null | Esposizione a persone politicamente esposte (PEP). `null` quando non è disponibile alcun esito PEP, cosa che oggi vale per tutti i risultati perché nessun provider ne riporta uno; `false` solo per un esito di screening esplicitamente negativo. Non leggere `null` come un controllo PEP completato. |
| `dominant_risk_category` | string \| null | Categoria ad alto rischio con il peso maggiore, oppure `null`. |
| `risk_factors` | array | Spiegazione ordinata di `risk_score`: quali elementi hanno prodotto questo giudizio. Vedi [Fattori di rischio](#fattori-di-rischio). |
| `source_of_funds` | array | Da dove sono arrivati i fondi, per entità. Vedi [Dettaglio dell'esposizione](#dettaglio-dell’esposizione). |
| `destination_of_funds` | array | Dove sono stati inviati i fondi, per entità. Stessa struttura delle voci di `source_of_funds`. |
| `counterparty_connections` | array | Entità a cui il provider attribuisce l'indirizzo. Vedi [Connessioni con le controparti](#connessioni-con-le-controparti). |
| `network_nodes`, `network_edges` | array | Grafo dell'esposizione per lo screening delle transazioni. Vuoto in un risultato di screening del wallet. |
| `transaction_hash`, `block_timestamp`, `total_value_usd`, `fee_usd`, `transaction_flows_status`, `transaction_flows_error` | null | Campi dello screening delle transazioni, condivisi con la struttura del risultato. Sempre `null` in un risultato di screening del wallet. |
| `sender_rows`, `receiver_rows`, `transaction_flows` | array | Campi dello screening delle transazioni. Sempre vuoti in un risultato di screening del wallet. |
| `raw_response` | object | Il payload originale del provider. La sua struttura è specifica del provider e può cambiare senza preavviso: usa i campi normalizzati qui sopra invece di analizzare questo oggetto. |
| `report_signature` | string | Firma opaca di questo risultato, limitata alla tua applicazione. Ripubblica la risposta senza modifiche, incluso questo campo, per [generarne un PDF](#report-pdf). |

> [!NOTE]
>
> **Come viene impostato `severity`.** `severity` è la fascia del `risk_score` normalizzato: `0-9` → `UNKNOWN`, `10-39` → `LOW`, `40-69` → `MEDIUM`, `70-89` → `HIGH`, `90-100` → `CRITICAL`. `UNKNOWN` è la fascia più bassa, non uno stato separato di "nessun dato": `risk_score: 0` (il caso comune di indirizzo pulito) significa che il provider non ha restituito alcuna valutazione negativa, mentre un punteggio diverso da zero nell'intervallo `1-9` è un segnale reale ma inferiore alla fascia `LOW`. Leggi quindi il `risk_score` stesso, non solo la fascia. In ogni caso, non mostrare `UNKNOWN` come un esito positivo di "nessun rischio" o come un superamento dei controlli.
>
> **`direction` non modifica il modello di rischio.** Il campo facoltativo `direction` viene passato al provider solo come contesto. Non influisce su `risk_score`, `severity` né su quali liste di dettaglio vengono restituite: sia `source_of_funds` sia `destination_of_funds` vengono sempre restituite. Modificare od omettere `direction` non richiede quindi di rieseguire lo screening di un indirizzo già sottoposto a screening.

### Fattori di rischio

`risk_factors` è la risposta ordinata alla domanda "perché questo indirizzo ha questo punteggio". I provider valutano un indirizzo con il proprio modello e restituiscono solo un giudizio (Merkle Science restituisce un intero `0-5`), quindi il solo `risk_score` non permette di agire. Ogni voce indica un fattore; le voci sono ordinate prima con i fattori ad alto rischio e poi in base al valore dei fondi che vi sono transitati.

| Campo | Tipo | Descrizione |
| - | - | - |
| `source` | string | `attribution` (ciò che il provider dichiara che l'indirizzo *è*: il proprio tag o cluster) oppure `exposure` (dove i fondi si sono effettivamente spostati). |
| `category` | string | Categoria di rischio normalizzata, con lo stesso vocabolario del dettaglio dell'esposizione. |
| `label` | string | La dicitura del provider, ad esempio `Gambling / Crypto only`. Usala in un'interfaccia: corrisponde a quanto vedresti nella console del provider. |
| `entity_name` | string \| null | Entità attribuita, ad esempio un sito di gioco d'azzardo o un exchange. Gli esempi di questa pagina usano segnaposto come `Example Gambling`. |
| `direction` | string | `incoming`, `outgoing`, `connected`, `attribution` (il tag proprio dell'indirizzo) oppure `unknown` quando il provider non ha indicato una direzione. |
| `exposure_type` | string | `direct` (1 passaggio), `indirect` (più passaggi), `attribution` (il tag proprio dell'indirizzo) oppure `unknown` quando il provider non ha indicato a quanti passaggi di distanza si trova la controparte. Tratta `unknown` come non classificato, mai come `direct`. |
| `amount_usd` | number \| null | Valore in USD attribuito a questo fattore. |
| `percentage` | number | Quota del **volume totale** sottoposto a screening, entrate e uscite combinate. A differenza di `percentage` dentro `source_of_funds` / `destination_of_funds`, che è normalizzato per direzione, questo valore è confrontabile e sommabile in tutta la lista. |
| `is_high_risk` | boolean | Indica se la categoria è considerata ad alto rischio da Didit (`sanctioned`, `mixer`, `stolen_funds`, `ransomware`, `scam`, `darknet_market`, `terrorist_financing`, `child_exploitation`, `hacked_exchange`, `high_risk_exchange`, `seized_funds`). |
| `description` | string | Descrizione del fattore su una riga, ad esempio `9.01% indirect outgoing exposure to Gambling / Crypto only (Example Gambling)`. |

> [!NOTE]
>
> **Un punteggio alto senza un fattore `is_high_risk` è un esito reale e significativo.** Significa che il provider ha valutato l'indirizzo secondo il proprio modello di esposizione senza segnalare una corrispondenza con sanzioni, PEP o entità attribuite: i fattori elencati sono i flussi di fondi alla base del giudizio. `summary` lo dichiara esplicitamente, quindi tratta questi indirizzi come "da verificare nei flussi", non come un riscontro confermato. `risk_factors` è limitato ai cinque fattori più rilevanti; `source_of_funds` e `destination_of_funds` riportano sempre il dettaglio completo.
>
> **`risk_factors` è un campo di primo livello, non annidato.** I risultati analizzati prima che esistesse questo campo non includono affatto la chiave: leggila come un elenco vuoto, senza presumere una spiegazione vuota.

### Dettaglio dell'esposizione

Ogni voce in `source_of_funds` / `destination_of_funds` descrive un'entità con cui l'indirizzo ha scambiato fondi:

| Campo | Tipo | Descrizione |
| - | - | - |
| `category` | string | Categoria di rischio normalizzata (`exchange_licensed`, `dex`, `defi`, `mixer`, `sanctioned`, `darknet_market`, `stolen_funds`, …). |
| `entity_name` | string \| null | Entità attribuita, ad esempio un exchange, un mixer o un gruppo sanzionato. Gli esempi di questa pagina usano dei segnaposto. |
| `entity_type` | string \| null | Tipo di entità fornito dal provider (`Exchange`, `DeFi`, `Sanctions`). |
| `entity_subtype` | string \| null | Sottotipo più specifico (`Mandatory KYC and AML`, `OFAC`). |
| `description` | string \| null | `entity_type / entity_subtype`, così come il provider etichetta l'entità. |
| `exposure_direction` | string | `incoming`, `outgoing` o `connected`. |
| `exposure_type` | string | `direct` (1 hop) o `indirect` (multi-hop). |
| `is_direct` | boolean | `true` quando `exposure_type` è `direct`. |
| `amount_usd` | number \| null | Valore in USD attribuito all'entità. |
| `percentage` | number | Quota sull'esposizione totale della direzione (0–100). |
| `hops` | integer \| null | Numero di hop fino all'entità (`1` per una controparte diretta), quando il provider lo indica. È sempre `null` per Merkle Science, che indica solo se l'esposizione è diretta o indiretta: usa `exposure_type`. |
| `country` | string \| null | Paese principale dell'entità secondo ISO 3166-1 alpha-2. Vuoto o `null` quando il provider non lo conosce. |
| `provider_entity_id`, `provider_entity_type_id`, `provider_entity_subtype_id` | string \| null | Identificativi propri del provider per l'entità e per il suo tipo. |
| `raw_amount`, `raw_currency` | number \| null, string \| null | Importo nell'unità propria dell'asset, quando il provider lo indica. |

### Connessioni con le controparti

`counterparty_connections` elenca le entità a cui il provider attribuisce l'indirizzo analizzato. Per Merkle Science queste derivano dai tag di proprietario e di utente dell'indirizzo stesso, quindi la stessa entità può comparire due volte, e non portano alcun flusso di fondi: `received_usd`, `sent_usd`, `received_hops` e `sent_hops` sono `null`, e `percentage` è `0.0`. Leggi i flussi di fondi da `source_of_funds` e `destination_of_funds`.

| Campo | Tipo | Descrizione |
| - | - | - |
| `entity_name` | string \| null | Entità attribuita. |
| `entity_type` | string \| null | Tipo di entità fornito dal provider. |
| `entity_subtype` | string \| null | Sottotipo più specifico. |
| `categories` | array | Categorie di rischio normalizzate dell'entità. |
| `risk_level` | string | In minuscolo, dipende dal provider. Per Merkle Science è il grado di rischio da 0 a 5 dell'indirizzo stesso (`no_risk`, `low`, `medium_low`, `medium`, `high`, `critical`), portato a `high` quando la categoria dell'entità è ad alto rischio; non è un grado separato dell'entità. |
| `is_direct` | boolean | Sempre `true` per Merkle Science, le cui connessioni sono attribuzioni e non controparti. |
| `received_usd`, `sent_usd` | number \| null | USD ricevuti dall'entità e inviati all'entità, quando il provider li indica. |
| `received_hops`, `sent_hops` | integer \| null | Hop verso l'entità in ciascuna direzione, quando il provider li indica. |
| `percentage` | number | Quota dell'esposizione dell'indirizzo, quando il provider la indica; altrimenti `0.0`. |
| `country` | string \| null | Paese dell'entità, quando noto. |
| `provider_entity_id` | string \| null | Identificativo proprio del provider per l'entità. |

> [!WARNING]
>
> Non basare l'instradamento su `counterparty_connections[].risk_level` o `counterparty_connections[].is_direct`: per Merkle Science il primo ripete il grado di rischio dell'indirizzo (leggi `risk_score`) e il secondo è sempre `true`. Per l'esito usa `sanctions_hit`, `dominant_risk_category` e `risk_factors[].is_high_risk`, e per distinguere l'esposizione diretta da quella indiretta usa `exposure_type` in `source_of_funds` / `destination_of_funds`.

### Esempio

Una risposta reale per un indirizzo presente nella lista OFAC delle sanzioni, analizzato con Merkle Science. Nella risposta reale, solo `raw_response` è stato accorciato e `report_signature` è stato sostituito:

```json theme={null}
{
  "provider": "merklescience",
  "screening_type": "WALLET_SCREENING",
  "risk_score": 95,
  "severity": "CRITICAL",
  "status": "SCREENED",
  "summary": "Merkle Science risk: Critical (5/5). SANCTIONS HIT. Dominant risk: sanctioned. Driven by: the address is attributed to Sanctions / OFAC (Example Sanctions)",
  "wallet_address": "0x94f1b9b64e2932f6a2db338f616844400cd58e8a",
  "transaction_hash": null,
  "blockchain": "ETH",
  "block_timestamp": null,
  "total_value_usd": null,
  "fee_usd": null,
  "sender_rows": [],
  "receiver_rows": [],
  "transaction_flows": [],
  "transaction_flows_status": null,
  "transaction_flows_error": null,
  "source_of_funds": [
    {
      "category": "sanctioned",
      "percentage": 100.0,
      "amount_usd": 9813695.0,
      "entity_name": "Example Sanctions",
      "entity_type": "Sanctions",
      "entity_subtype": "OFAC",
      "hops": null,
      "description": "Sanctions / OFAC",
      "is_direct": true,
      "exposure_direction": "incoming",
      "exposure_type": "direct",
      "provider_entity_id": "118885",
      "provider_entity_type_id": "30",
      "provider_entity_subtype_id": "125",
      "country": "",
      "raw_amount": null,
      "raw_currency": null
    }
  ],
  "destination_of_funds": [
    {
      "category": "defi",
      "percentage": 84.824453,
      "amount_usd": 7783414.38,
      "entity_name": "Example DeFi 7",
      "entity_type": "DeFi",
      "entity_subtype": "Bridges",
      "hops": null,
      "description": "DeFi / Bridges",
      "is_direct": false,
      "exposure_direction": "outgoing",
      "exposure_type": "indirect",
      "provider_entity_id": "118459",
      "provider_entity_type_id": "33",
      "provider_entity_subtype_id": "143",
      "country": "",
      "raw_amount": null,
      "raw_currency": null
    },
    {
      "category": "defi",
      "percentage": 15.175547,
      "amount_usd": 1392494.37,
      "entity_name": "Example DeFi 2",
      "entity_type": "DeFi",
      "entity_subtype": "Yield Aggregator",
      "hops": null,
      "description": "DeFi / Yield Aggregator",
      "is_direct": false,
      "exposure_direction": "outgoing",
      "exposure_type": "indirect",
      "provider_entity_id": "90192",
      "provider_entity_type_id": "33",
      "provider_entity_subtype_id": "142",
      "country": "",
      "raw_amount": null,
      "raw_currency": null
    }
  ],
  "counterparty_connections": [
    {
      "entity_name": "Example Sanctions",
      "entity_type": "Sanctions",
      "entity_subtype": "OFAC",
      "risk_level": "critical",
      "categories": [
        "sanctioned"
      ],
      "received_usd": null,
      "sent_usd": null,
      "received_hops": null,
      "sent_hops": null,
      "percentage": 0.0,
      "is_direct": true,
      "country": null,
      "provider_entity_id": null
    },
    {
      "entity_name": "Example Sanctions",
      "entity_type": "Sanctions",
      "entity_subtype": "OFAC",
      "risk_level": "critical",
      "categories": [
        "sanctioned"
      ],
      "received_usd": null,
      "sent_usd": null,
      "received_hops": null,
      "sent_hops": null,
      "percentage": 0.0,
      "is_direct": true,
      "country": null,
      "provider_entity_id": null
    }
  ],
  "network_nodes": [],
  "network_edges": [],
  "sanctions_hit": true,
  "pep_counterparty": null,
  "dominant_risk_category": "sanctioned",
  "risk_factors": [
    {
      "source": "attribution",
      "category": "sanctioned",
      "label": "Sanctions / OFAC",
      "entity_name": "Example Sanctions",
      "direction": "attribution",
      "exposure_type": "attribution",
      "amount_usd": null,
      "percentage": 0.0,
      "is_high_risk": true,
      "description": "the address is attributed to Sanctions / OFAC (Example Sanctions)"
    },
    {
      "source": "exposure",
      "category": "sanctioned",
      "label": "Sanctions / OFAC",
      "entity_name": "Example Sanctions",
      "direction": "incoming",
      "exposure_type": "direct",
      "amount_usd": 9813695.0,
      "percentage": 51.679304,
      "is_high_risk": true,
      "description": "51.6793% direct incoming exposure to Sanctions / OFAC (Example Sanctions)"
    },
    {
      "source": "exposure",
      "category": "defi",
      "label": "DeFi / Bridges",
      "entity_name": "Example DeFi 7",
      "direction": "outgoing",
      "exposure_type": "indirect",
      "amount_usd": 7783414.38,
      "percentage": 40.987766,
      "is_high_risk": false,
      "description": "40.9878% indirect outgoing exposure to DeFi / Bridges (Example DeFi 7)"
    },
    {
      "source": "exposure",
      "category": "defi",
      "label": "DeFi / Yield Aggregator",
      "entity_name": "Example DeFi 2",
      "direction": "outgoing",
      "exposure_type": "indirect",
      "amount_usd": 1392494.37,
      "percentage": 7.33293,
      "is_high_risk": false,
      "description": "7.33293% indirect outgoing exposure to DeFi / Yield Aggregator (Example DeFi 2)"
    }
  ],
  "raw_response": {
    "...": "provider-specific details"
  },
  "report_signature": "<hmac-sha256 over the result, scoped to your application>"
}
```

Gli esempi illustrano la forma della risposta, non un esito garantito per un indirizzo reale.
I punteggi di rischio e l'esposizione alle sanzioni dipendono dalla rete selezionata, dall'intelligence aggiornata e dalla politica di rischio configurata.
Un'attribuzione a un exchange non implica un punteggio di rischio pari a zero: un wallet di exchange può avere un'esposizione alle sanzioni attraverso i propri flussi di fondi.
`sanctions_hit: true` può indicare che il wallet stesso è sanzionato oppure solo che i suoi fondi hanno un'esposizione alle sanzioni, quindi di per sé non significa che il titolare del wallet analizzato sia sanzionato.
Quando la stessa analisi viene eseguita su una transazione registrata, le regole possono leggere anche `custom_values.wallet_sanctioned`, che è `true` solo quando il provider attribuisce il wallet stesso a un'entità sanzionata, e `custom_values.aml_sanctions_exposure_pct`.
Vedi [Campi di screening per le regole](https://docs.didit.me/it/transaction-monitoring/aml-screening.md#campi-dello-screening-per-le-regole).
Leggi `risk_factors`, `source_of_funds` e `destination_of_funds` per distinguere l'attribuzione dall'esposizione.
Vedi [Crypto & Wallet Screening](https://docs.didit.me/it/transaction-monitoring/aml-screening.md#risultati-dello-screening) per una guida passo passo.

## Report PDF

Per ottenere un PDF con il marchio Didit di un risultato di screening, invia di nuovo il corpo esatto della risposta, incluso `report_signature`, a `POST /v3/wallet-screening/pdf/`. La chiamata è senza stato: nessuna chiamata al provider, nessun addebito aggiuntivo, nulla viene salvato. Modificare un campo firmato (`risk_score`, `severity`, `sanctions_hit`, …) prima del nuovo invio restituisce `400`.

```bash theme={null}
RESULT=$(curl -s -X POST https://verification.didit.me/v3/wallet-screening/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"wallet_address": "0x94f1b9b64e2932f6a2db338f616844400cd58e8a", "blockchain": "ETH"}')

curl -X POST https://verification.didit.me/v3/wallet-screening/pdf/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d "$RESULT" \
  -o wallet_screening_report.pdf
```

Vedi [Screen Wallet PDF](https://docs.didit.me/it/management-api/transactions/screen-wallet-pdf.md) per lo schema completo di richiesta e risposta e per la forma degli errori.

## Fatturazione

Ogni utilizzo del monitoraggio AML viene fatturato per ogni screening riuscito, alla stessa tariffa dello screening delle criptovalute associato alle transazioni. Consulta i [prezzi](https://docs.didit.me/it/transaction-monitoring/aml-screening.md#provider-supportati) per le tariffe gestite e con chiave collegata. Le applicazioni sandbox non vengono fatturate. Gli errori di validazione (`400`) e quelli relativi a un provider non configurato (`409`) non vengono mai fatturati.

## Errori

| Stato | Significato |
| - | - |
| `400` | Indirizzo wallet malformato, `wallet_address` mancante oppure `blockchain` non supportata. |
| `401` | `x-api-key` mancante o non valida. |
| `409` | Nessun provider AML configurato per l'applicazione: configura prima il monitoraggio delle transazioni. |
| `409` | Il provider ha rifiutato la chiave API che hai collegato (`wallet_screening_provider_credentials_rejected`): aggiorna la chiave nella connessione del Marketplace oppure, per una chiave configurata nelle impostazioni del monitoraggio delle transazioni, in tali impostazioni. Riprovare con la stessa chiave non serve a nulla. |
| `409` | Il provider AML configurato non supporta ancora lo screening dei wallet (`wallet_screening_provider_unavailable`). |
| `422` | È stato inviato un indirizzo `0x` senza `blockchain` (`wallet_screening_chain_undetermined`). Il corpo elenca `candidate_chains`; reinvia la richiesta con una di queste. Non viene eseguito alcuno screening né addebitato alcunché. |
| `502` | Il provider non è riuscito a completare lo screening; riprova più tardi. |

## Passaggi successivi

> [card] [Riferimento API](https://docs.didit.me/it/management-api/transactions/screen-wallet.md)
>
> Schema completo della richiesta e della risposta per l'endpoint Screen Wallet.

> [card] [PDF di Screen Wallet](https://docs.didit.me/it/management-api/transactions/screen-wallet-pdf.md)
>
> Genera un risultato di screening come PDF con il branding Didit.

> [card] [Screening delle criptovalute e dei wallet](https://docs.didit.me/it/transaction-monitoring/aml-screening.md)
>
> Screening automatico durante la creazione della transazione e modello del risultato.


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