diff --git a/Dockerfile b/Dockerfile index a7cc337..b7390bd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -40,6 +40,9 @@ COPY risk-ratings/ ./risk-ratings/ # Round 49 pSEO — regulatory framework and compliance deadlines COPY regulations/ ./regulations/ COPY deadlines/ ./deadlines/ +# Round 50 pSEO — enforcement case studies, developer examples, red flags expansion +COPY case-studies/ ./case-studies/ +COPY examples/ ./examples/ # how-to expansion pages (static fallthrough from _howto_page method) COPY how-to/ ./how-to/ # Interactive shareable tools (compliance-check, ai-spend-optimizer) diff --git a/api.py b/api.py index 60d2225..a3c83b2 100644 --- a/api.py +++ b/api.py @@ -3597,7 +3597,7 @@ def do_GET(self): if _os.path.isfile(_rp): with open(_rp, "r", encoding="utf-8") as _fh: return self._serve_text(_fh.read(), "text/html; charset=utf-8") - for _pfx in ("/vs/", "/faq/", "/learn/", "/alternatives-to/", "/penalties/", "/guides/", "/checklists/", "/cost-of/", "/best/", "/templates/", "/stats/", "/redflags/", "/scenarios/", "/programs/", "/benchmarks/", "/evasion/", "/risk-ratings/", "/regulations/", "/deadlines/"): + for _pfx in ("/vs/", "/faq/", "/learn/", "/alternatives-to/", "/penalties/", "/guides/", "/checklists/", "/cost-of/", "/best/", "/templates/", "/stats/", "/redflags/", "/scenarios/", "/programs/", "/benchmarks/", "/evasion/", "/risk-ratings/", "/regulations/", "/deadlines/", "/case-studies/", "/examples/"): if p.path.startswith(_pfx): _slug = p.path[len(_pfx):].split("?")[0].split("/")[0] if not _slug: @@ -6546,6 +6546,43 @@ def _sitemap_xml(self): ("/deadlines/rescreening-frequency", "monthly", "0.8", "Rescreening Frequency"), ("/deadlines/license-application-timeline", "monthly", "0.8", "License Application Timeline"), ("/deadlines/audit-trail-retention", "monthly", "0.8", "Audit Trail Retention"), + ("/case-studies/binance-ofac-settlement-2023", "monthly", "0.9", "Binance Ofac Settlement 2023"), + ("/case-studies/kraken-ofac-settlement-2022", "monthly", "0.9", "Kraken Ofac Settlement 2022"), + ("/case-studies/bitgo-ofac-settlement-2020", "monthly", "0.9", "Bitgo Ofac Settlement 2020"), + ("/case-studies/etherdelta-ofac-settlement-2018", "monthly", "0.9", "Etherdelta Ofac Settlement 2018"), + ("/case-studies/bitpay-ofac-settlement-2021", "monthly", "0.9", "Bitpay Ofac Settlement 2021"), + ("/case-studies/tornado-cash-designation-2022", "monthly", "0.9", "Tornado Cash Designation 2022"), + ("/case-studies/binance-settlement-timeline", "monthly", "0.9", "Binance Settlement Timeline"), + ("/case-studies/standard-chartered-ofac-case", "monthly", "0.9", "Standard Chartered Ofac Case"), + ("/case-studies/societe-generale-ofac-case", "monthly", "0.9", "Societe Generale Ofac Case"), + ("/case-studies/blender-io-designation-2022", "monthly", "0.9", "Blender Io Designation 2022"), + ("/case-studies/garantex-designation-2022", "monthly", "0.9", "Garantex Designation 2022"), + ("/case-studies/hydra-market-designation", "monthly", "0.9", "Hydra Market Designation"), + ("/examples/python-wallet-screening", "weekly", "0.8", "Python Wallet Screening"), + ("/examples/javascript-wallet-check", "weekly", "0.8", "Javascript Wallet Check"), + ("/examples/curl-sanctions-check", "weekly", "0.8", "Curl Sanctions Check"), + ("/examples/name-screening-python", "weekly", "0.8", "Name Screening Python"), + ("/examples/go-wallet-screening", "weekly", "0.8", "Go Wallet Screening"), + ("/examples/rust-wallet-screening", "weekly", "0.8", "Rust Wallet Screening"), + ("/examples/payment-gateway-integration", "weekly", "0.8", "Payment Gateway Integration"), + ("/examples/stripe-payment-screening", "weekly", "0.8", "Stripe Payment Screening"), + ("/examples/ethereum-transaction-screening", "weekly", "0.8", "Ethereum Transaction Screening"), + ("/examples/smart-contract-pre-check", "weekly", "0.8", "Smart Contract Pre Check"), + ("/examples/batch-screening-script", "weekly", "0.8", "Batch Screening Script"), + ("/examples/compliance-dashboard-setup", "weekly", "0.8", "Compliance Dashboard Setup"), + ("/examples/webhook-alert-setup", "weekly", "0.8", "Webhook Alert Setup"), + ("/redflags/trade-finance-red-flags", "monthly", "0.8", "Trade Finance Red Flags"), + ("/redflags/correspondent-banking-red-flags", "monthly", "0.8", "Correspondent Banking Red Flags"), + ("/redflags/wire-transfer-red-flags", "monthly", "0.8", "Wire Transfer Red Flags"), + ("/redflags/crypto-wallet-red-flags", "monthly", "0.8", "Crypto Wallet Red Flags"), + ("/redflags/ppe-sanctions-red-flags", "monthly", "0.8", "Ppe Sanctions Red Flags"), + ("/redflags/shipping-trade-red-flags", "monthly", "0.8", "Shipping Trade Red Flags"), + ("/redflags/insurance-sanctions-red-flags", "monthly", "0.8", "Insurance Sanctions Red Flags"), + ("/redflags/defi-protocol-red-flags", "monthly", "0.8", "Defi Protocol Red Flags"), + ("/redflags/payment-processor-red-flags", "monthly", "0.8", "Payment Processor Red Flags"), + ("/redflags/nft-marketplace-red-flags", "monthly", "0.8", "Nft Marketplace Red Flags"), + ("/redflags/vasp-onboarding-red-flags", "monthly", "0.8", "Vasp Onboarding Red Flags"), + ("/redflags/ai-agent-payment-red-flags", "monthly", "0.8", "Ai Agent Payment Red Flags"), ] import datetime today = datetime.date.today().isoformat() diff --git a/case-studies/binance-ofac-settlement-2023/index.html b/case-studies/binance-ofac-settlement-2023/index.html new file mode 100644 index 0000000..76cb2eb --- /dev/null +++ b/case-studies/binance-ofac-settlement-2023/index.html @@ -0,0 +1,70 @@ + + +
+ + +In November 2023, Binance agreed to a $968 million settlement with OFAC for 1.6 million apparent violations of multiple sanctions programs. This is one of the largest OFAC settlements in history.
+TL;DR: Binance failed to screen transactions involving users in comprehensively sanctioned jurisdictions (Iran, Syria, Cuba, Crimea). The root cause: inadequate compliance infrastructure that prioritized growth over controls. The settlement demonstrates why real-time screening is non-negotiable.
+Binance, the world's largest crypto exchange by volume, grew rapidly from 2017 to 2021. During this period, the exchange allowed users from comprehensively sanctioned jurisdictions to trade freely, despite US sanctions prohibiting such transactions.
+Between August 2017 and October 2022, Binance processed approximately 1.6 million transactions worth $899 million involving users in Iran, Syria, Cuba, and the Crimea region of Ukraine. The exchange failed to implement adequate IP-based geolocation controls and did not screen users against OFAC sanctions lists.
+| Root cause | Detail |
|---|---|
| No effective geolocation | Users from sanctioned jurisdictions accessed the platform using VPNs |
| No real-time screening | Transactions were not screened against OFAC SDN list |
| Growth over compliance | Compliance staff were outnumbered and under-resourced |
| No voluntary self-disclosure | Binance did not voluntarily disclose; OFAC discovered independently |
$968 million OFAC civil penalty (part of a broader $4.3 billion global resolution including DOJ and FinCEN). No voluntary self-disclosure mitigation. Statutory maximum was $3.5 billion.
+1. Geolocation is not enough. VPNs bypass IP checks. Screen user names and wallet addresses, not just IP addresses. 2. Real-time screening is mandatory. Post-hoc review of historical transactions does not prevent violations. 3. Compliance must scale with growth. Hiring and resourcing compliance teams must keep pace with transaction volume.
+Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to case-studies · SanctionsAI
+ \ No newline at end of file diff --git a/case-studies/binance-settlement-timeline/index.html b/case-studies/binance-settlement-timeline/index.html new file mode 100644 index 0000000..06ac827 --- /dev/null +++ b/case-studies/binance-settlement-timeline/index.html @@ -0,0 +1,65 @@ + + + + + +The Binance enforcement actions in November 2023 involved OFAC, DOJ, and FinCEN simultaneously. This timeline walks through the key events.
+| Date | Event | Significance |
|---|---|---|
| 2017-2021 | Binance grows to largest crypto exchange | Compliance controls did not scale with growth |
| 2021-2022 | Regulatory scrutiny intensifies | Multiple agencies begin investigations |
| Nov 2022 | OFAC adds Binance to investigation queue | Focus on Iran/Syria/Cuba/Crimea users |
| Nov 21, 2023 | DOJ announces $4.3B global resolution | Includes OFAC, FinCEN, CFTC components |
| Nov 21, 2023 | OFAC settlement: $968M | 1.6M apparent sanctions violations |
| Nov 21, 2023 | CZ resigns, pleads guilty | CEO personal accountability |
| 2024+ | Binance under 5-year compliance monitor | Ongoing oversight |
The Binance case shows how multiple enforcement agencies coordinate. OFAC's sanctions investigation ran in parallel with DOJ criminal and FinCEN AML investigations, resulting in a single global resolution.
+Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to case-studies · SanctionsAI
+ \ No newline at end of file diff --git a/case-studies/bitgo-ofac-settlement-2020/index.html b/case-studies/bitgo-ofac-settlement-2020/index.html new file mode 100644 index 0000000..b0b9733 --- /dev/null +++ b/case-studies/bitgo-ofac-settlement-2020/index.html @@ -0,0 +1,61 @@ + + + + + +In December 2020, BitGo agreed to a $98,830 settlement with OFAC for 183 apparent violations of multiple sanctions programs.
+Between March 2015 and December 2015, BitGo, a digital asset custody company, processed 183 transactions on behalf of persons apparently located in comprehensively sanctioned jurisdictions (Cuba, Iran, Syria, Crimea). BitGo did not screen users against the SDN list or sanctioned jurisdictions.
+This was one of the first OFAC enforcement actions specifically against a digital asset custody company. It signaled that OFAC considers all VASP business models subject to sanctions compliance requirements.
+Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to case-studies · SanctionsAI
+ \ No newline at end of file diff --git a/case-studies/bitpay-ofac-settlement-2021/index.html b/case-studies/bitpay-ofac-settlement-2021/index.html new file mode 100644 index 0000000..9adcca1 --- /dev/null +++ b/case-studies/bitpay-ofac-settlement-2021/index.html @@ -0,0 +1,63 @@ + + + + + +In February 2021, BitPay agreed to a $507,375 settlement with OFAC for 2,102 apparent violations involving users in sanctioned jurisdictions.
+Between 2013 and 2018, BitPay, a crypto payment processor, processed 2,102 transactions totaling approximately $129,000 for users located in Cuba, Iran, North Korea, Syria, and Crimea. BitPay relied on IP address geolocation but did not screen against the OFAC SDN list or implement effective jurisdictional blocking.
+| Root cause | Impact |
|---|---|
| IP-only geolocation | Users bypassed with VPNs |
| No SDN name screening | Designated individuals transacted freely |
| No wallet address screening | Designated crypto addresses not flagged |
IP-only geolocation is insufficient. A layered approach is needed: IP geolocation + name screening + wallet address screening. SanctionsAI provides all three via a single API.
+Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to case-studies · SanctionsAI
+ \ No newline at end of file diff --git a/case-studies/blender-io-designation-2022/index.html b/case-studies/blender-io-designation-2022/index.html new file mode 100644 index 0000000..d75c645 --- /dev/null +++ b/case-studies/blender-io-designation-2022/index.html @@ -0,0 +1,65 @@ + + + + + +On May 6, 2022, OFAC designated Blender.io, making it the first crypto mixer ever sanctioned. The designation was under the DPRK sanctions program.
+Blender.io was a centralized crypto mixing service that allowed users to obscure the trail of Bitcoin transactions. Unlike Tornado Cash (which was decentralized), Blender.io had a known operator.
+OFAC designated Blender.io because it was used by the Lazarus Group (North Korea) to launder over $20.5 million from the $620 million Axie Infinity (Ronin Bridge) hack in March 2022. The mixer processed the stolen funds, breaking the on-chain trail.
+| Detail | Value |
|---|---|
| Designation date | May 6, 2022 |
| Program | DPRK (North Korea) |
| Amount laundered | $20.5M+ from Axie Infinity hack |
| Significance | First crypto mixer designation |
The Blender.io designation established that OFAC will designate mixing services used by sanctioned entities. Crypto businesses must screen for interaction with designated mixer addresses in customer wallet histories.
+Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to case-studies · SanctionsAI
+ \ No newline at end of file diff --git a/case-studies/etherdelta-ofac-settlement-2018/index.html b/case-studies/etherdelta-ofac-settlement-2018/index.html new file mode 100644 index 0000000..e29ea8c --- /dev/null +++ b/case-studies/etherdelta-ofac-settlement-2018/index.html @@ -0,0 +1,65 @@ + + + + + +The 2018 EtherDelta case was one of the earliest OFAC enforcement actions related to a decentralized exchange (DEX). It established that sanctions compliance obligations extend to DEX operators.
+EtherDelta was a decentralized exchange built on Ethereum that allowed trustless trading of ERC-20 tokens. The platform processed transactions for users in comprehensively sanctioned jurisdictions without screening.
+The EtherDelta case involved processing transactions for users who appeared to be located in sanctioned jurisdictions. The platform did not implement sanctions screening because, as a DEX, it did not hold custody of user funds.
+This case signaled that OFAC does not distinguish between centralized and decentralized platforms for sanctions purposes. Even platforms that do not custody funds must comply with sanctions if they facilitate transactions for US persons or involve US-person touchpoints.
+| Issue | OFAC position |
|---|---|
| DEX exemption? | No. Facilitation of transactions for sanctioned parties is prohibited regardless of platform architecture |
| Custody requirement? | Not required for sanctions liability |
| Front-end screening | Required even if back-end is a smart contract |
Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to case-studies · SanctionsAI
+ \ No newline at end of file diff --git a/case-studies/garantex-designation-2022/index.html b/case-studies/garantex-designation-2022/index.html new file mode 100644 index 0000000..169e2c7 --- /dev/null +++ b/case-studies/garantex-designation-2022/index.html @@ -0,0 +1,61 @@ + + + + + +In April 2022, OFAC designated Garantex, a Russia-based crypto exchange, for operating in violation of Russia sanctions. This case highlights how OFAC targets crypto infrastructure supporting sanctioned jurisdictions.
+Garantex was a crypto exchange registered in Estonia but operating primarily from Russia. After Russia's invasion of Ukraine in February 2022, Garantex continued processing transactions for Russian users and entities, including sanctioned parties.
+OFAC designated Garantex on April 5, 2022, for operating in the Russian financial services sector. The exchange was used to evade US sanctions by processing transactions that would otherwise be blocked under Russia sanctions programs.
+The Garantex designation demonstrated that OFAC will designate entire crypto exchanges, not just individual addresses. Any US person who transacts with Garantex, including sending or receiving crypto from its addresses, commits a sanctions violation.
+Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to case-studies · SanctionsAI
+ \ No newline at end of file diff --git a/case-studies/hydra-market-designation/index.html b/case-studies/hydra-market-designation/index.html new file mode 100644 index 0000000..6ac072a --- /dev/null +++ b/case-studies/hydra-market-designation/index.html @@ -0,0 +1,60 @@ + + + + + +In April 2022, OFAC designated Hydra Market, the world's largest Russian-language darknet market, and over 100 associated crypto addresses. This disrupted a major ransomware and drug trafficking payment channel.
+Hydra Market was a darknet marketplace operating since 2015, primarily serving Russian-speaking users. It facilitated drug trafficking, stolen financial data, and money laundering. Revenue was estimated at over $1.3 billion by 2020.
+OFAC designated Hydra under counter-narcotics and Russia sanctions authorities. The marketplace processed transactions in Bitcoin and Monero, using crypto mixers to launder proceeds.
+The Hydra designation included over 100 associated crypto addresses. Any US person who transacts with these addresses commits a sanctions violation. The designation disrupted ransomware payment channels that relied on Hydra for laundering.
+Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to case-studies · SanctionsAI
+ \ No newline at end of file diff --git a/case-studies/kraken-ofac-settlement-2022/index.html b/case-studies/kraken-ofac-settlement-2022/index.html new file mode 100644 index 0000000..672fe6a --- /dev/null +++ b/case-studies/kraken-ofac-settlement-2022/index.html @@ -0,0 +1,66 @@ + + + + + +In November 2022, Kraken (Payward, Inc.) agreed to a $362,158 settlement with OFAC for 826 apparent violations involving users in Iran.
+Kraken, a major US-based crypto exchange, allowed users in Iran to trade digital assets between June 2015 and December 2019. Iran is subject to comprehensive US sanctions under the ITSR.
+Kraken processed 826 transactions worth approximately $269,000 for users who self-identified as being in Iran or used Iranian IP addresses. The exchange relied on self-certification of location without independent verification.
+| Root cause | Detail |
|---|---|
| Self-certification relied upon | Users self-declared location without verification |
| No IP geolocation | Iranian IPs were not blocked at the platform level |
| Inadequate onboarding controls | No sanctions screening during customer onboarding |
Self-certification of location is not sufficient. Crypto exchanges must independently verify user location through IP geolocation, document verification, and transaction pattern analysis.
+Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to case-studies · SanctionsAI
+ \ No newline at end of file diff --git a/case-studies/societe-generale-ofac-case/index.html b/case-studies/societe-generale-ofac-case/index.html new file mode 100644 index 0000000..772ab69 --- /dev/null +++ b/case-studies/societe-generale-ofac-case/index.html @@ -0,0 +1,60 @@ + + + + + +In 2018, Societe Generale agreed to pay over $1.3 billion in combined penalties for sanctions violations involving Cuba, Iran, and other sanctioned jurisdictions processed through the US financial system.
+Between 2004 and 2010, Societe Generale processed billions of dollars in transactions involving parties in Cuba, Iran, Sudan, and other sanctioned jurisdictions. The bank used non-transparent payment practices, including omitting sanctioned party names from SWIFT messages.
+The 2018 settlement involved OFAC ($53.9M portion), DOJ, NYDFS, and other regulators. The total across all agencies exceeded $1.3 billion. The bank cooperated and implemented remedial measures.
+Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to case-studies · SanctionsAI
+ \ No newline at end of file diff --git a/case-studies/standard-chartered-ofac-case/index.html b/case-studies/standard-chartered-ofac-case/index.html new file mode 100644 index 0000000..43795ee --- /dev/null +++ b/case-studies/standard-chartered-ofac-case/index.html @@ -0,0 +1,64 @@ + + + + + +Standard Chartered Bank faced multiple OFAC enforcement actions for Iran-related sanctions violations, including a 2012 settlement and a 2019 settlement totaling over $1.1 billion.
+Standard Chartered, a UK-based bank with extensive Middle East operations, processed thousands of wire transfers for Iranian banks through its US correspondent banking relationships. The bank stripped Iranian originator information from SWIFT messages to evade US sanctions detection.
+Between 2001 and 2007, Standard Chartered processed approximately $250 billion in Iranian wire transfers through US banks. The bank removed or altered originator information to obscure the Iranian connection, deliberately bypassing US sanctions on Iran.
+| Year | Amount | Agency | Issue |
|---|---|---|---|
| 2012 | $340M | NYDFS | Iran wire stripping |
| 2019 | $1.1B | OFAC + DOJ + FinCEN | Broad Iran sanctions violations |
1. Wire data integrity is critical. Stripping or altering originator information is a direct sanctions violation. 2. Correspondent banking requires transaction-level screening. Screening only the respondent bank is insufficient. 3. Culture matters. Standard Chartered's compliance team flagged the issue but was overruled by business interests.
+Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to case-studies · SanctionsAI
+ \ No newline at end of file diff --git a/case-studies/tornado-cash-designation-2022/index.html b/case-studies/tornado-cash-designation-2022/index.html new file mode 100644 index 0000000..d827392 --- /dev/null +++ b/case-studies/tornado-cash-designation-2022/index.html @@ -0,0 +1,66 @@ + + + + + +On August 8, 2022, OFAC designated Tornado Cash, making it the first time OFAC sanctioned an immutable smart contract protocol. This case reshaped the compliance landscape for DeFi.
+Tornado Cash was a decentralized, non-custodial crypto mixer on Ethereum. Users deposited ETH and withdrew to new addresses, breaking the on-chain link between sender and receiver. The protocol was immutable: no admin key, no upgrade mechanism.
+OFAC designated Tornado Cash under the North Korea sanctions program because the Lazarus Group used it to launder approximately $455 million in illicit proceeds, including funds from the $620 million Ronin Bridge hack.
+In November 2024, the Fifth Circuit Court of Appeals ruled that OFAC exceeded its authority by designating Tornado Cash's immutable smart contract code. The court held that immutable code is not 'property' under IEEPA. However, the designation remains a watershed moment for DeFi compliance.
+| Aspect | Detail |
|---|---|
| Designation date | August 8, 2022 |
| Legal basis | North Korea sanctions program (NKSPEA) |
| Reason | Lazarus Group used it to launder $455M+ |
| Fifth Circuit ruling | November 2024: OFAC exceeded authority for immutable contracts |
Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to case-studies · SanctionsAI
+ \ No newline at end of file diff --git a/examples/batch-screening-script/index.html b/examples/batch-screening-script/index.html new file mode 100644 index 0000000..082bd6f --- /dev/null +++ b/examples/batch-screening-script/index.html @@ -0,0 +1,69 @@ + + + + + +Screen your entire customer database against the OFAC SDN list.
import csv, requests, time
+
+API = "https://sanctionsai.dev/sanctions"
+
+with open("customers.csv") as f, open("results.csv", "w") as out:
+ reader = csv.DictReader(f)
+ writer = csv.writer(out)
+ writer.writerow(["customer_id", "name", "blocked", "matches"])
+
+ for row in reader:
+ resp = requests.get(API, params={"name": row["name"]}, timeout=5)
+ data = resp.json()
+ writer.writerow([
+ row["customer_id"], row["name"],
+ data["blocked"], str(data["matches"])[:200]
+ ])
+ time.sleep(0.1) # Rate limit
+Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to examples · SanctionsAI
+ \ No newline at end of file diff --git a/examples/compliance-dashboard-setup/index.html b/examples/compliance-dashboard-setup/index.html new file mode 100644 index 0000000..29b7676 --- /dev/null +++ b/examples/compliance-dashboard-setup/index.html @@ -0,0 +1,58 @@ + + + + + +Track screening metrics, alerts, and audit trail in real-time.
| Metric | Why |
|---|---|
| Total screenings | Volume baseline |
| Blocked transactions | Sanctions matches detected |
| Screening latency | API performance |
| False positive rate | Tuning effectiveness |
| SDN list version | Data freshness |
// Dashboard API call
+document.addEventListener('DOMContentLoaded', async () => {
+ const stats = await fetch('/api/screening-stats').then(r => r.json());
+ document.getElementById('total').textContent = stats.total;
+ document.getElementById('blocked').textContent = stats.blocked;
+});
+Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to examples · SanctionsAI
+ \ No newline at end of file diff --git a/examples/curl-sanctions-check/index.html b/examples/curl-sanctions-check/index.html new file mode 100644 index 0000000..bba9096 --- /dev/null +++ b/examples/curl-sanctions-check/index.html @@ -0,0 +1,57 @@ + + + + + +The simplest way to test sanctions screening.
curl "https://sanctionsai.dev/sanctions?wallet=0x098B716B8Aaf21512996dC57EB0615e2383E2f96"curl "https://sanctionsai.dev/sanctions?name=Oleg+Deripaska"curl -s "https://sanctionsai.dev/sanctions?wallet=0x..." | jq .#!/bin/bash
+for wallet in "0xabc..." "0xdef..."; do
+ curl -s "https://sanctionsai.dev/sanctions?wallet=$wallet" | \
+ grep -q 'blocked.*true' && echo "BLOCKED: $wallet"
+done
+Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to examples · SanctionsAI
+ \ No newline at end of file diff --git a/examples/ethereum-transaction-screening/index.html b/examples/ethereum-transaction-screening/index.html new file mode 100644 index 0000000..b5c15bc --- /dev/null +++ b/examples/ethereum-transaction-screening/index.html @@ -0,0 +1,69 @@ + + + + + +Screen Ethereum counterparties before executing transactions.
const { Web3 } = require('web3');
+const web3 = new Web3('https://mainnet.infura.io/v3/YOUR_KEY');
+
+async function safeTransfer(from, to, amount) {
+ // Screen both addresses
+ const [fromScreen, toScreen] = await Promise.all([
+ fetch(`https://sanctionsai.dev/sanctions?wallet=${from}`).then(r => r.json()),
+ fetch(`https://sanctionsai.dev/sanctions?wallet=${to}`).then(r => r.json())
+ ]);
+
+ if (fromScreen.blocked || toScreen.blocked) {
+ throw new Error("Sanctions match detected");
+ }
+
+ // Execute transfer
+ return await web3.eth.sendTransaction({ from, to, value: amount });
+}
+Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to examples · SanctionsAI
+ \ No newline at end of file diff --git a/examples/go-wallet-screening/index.html b/examples/go-wallet-screening/index.html new file mode 100644 index 0000000..a1de7e6 --- /dev/null +++ b/examples/go-wallet-screening/index.html @@ -0,0 +1,76 @@ + + + + + +Screen crypto wallets in Go using the SanctionsAI API.
package main
+
+import (
+ "encoding/json"
+ "fmt"
+ "net/http"
+ "time"
+)
+
+type ScreenResult struct {
+ Blocked bool `json:"blocked"`
+ Matches interface{} `json:"matches"`
+}
+
+func checkSanctions(wallet string) (*ScreenResult, error) {
+ client := &http.Client{Timeout: 5 * time.Second}
+ url := fmt.Sprintf("https://sanctionsai.dev/sanctions?wallet=%s", wallet)
+ resp, err := client.Get(url)
+ if err != nil { return nil, err }
+ defer resp.Body.Close()
+ var result ScreenResult
+ json.NewDecoder(resp.Body).Decode(&result)
+ return &result, nil
+}
+Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to examples · SanctionsAI
+ \ No newline at end of file diff --git a/examples/javascript-wallet-check/index.html b/examples/javascript-wallet-check/index.html new file mode 100644 index 0000000..494761b --- /dev/null +++ b/examples/javascript-wallet-check/index.html @@ -0,0 +1,76 @@ + + + + + +Screen crypto wallets against OFAC SDN list using JavaScript.
async function checkSanctions(wallet) {
+ const resp = await fetch(
+ `https://sanctionsai.dev/sanctions?wallet=${wallet}`
+ );
+ const data = await resp.json();
+ return data;
+}
+
+const result = await checkSanctions("0x098B...");
+if (result.blocked) console.log("BLOCKED!", result.matches);async function screenPayment(wallet) {
+ try {
+ const resp = await fetch(
+ `https://sanctionsai.dev/sanctions?wallet=${wallet}`
+ );
+ const data = await resp.json();
+ if (data.blocked) {
+ alert("Wallet is OFAC-designated. Payment blocked.");
+ return false;
+ }
+ return true;
+ } catch (e) {
+ return false; // Fail safe
+ }
+}Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to examples · SanctionsAI
+ \ No newline at end of file diff --git a/examples/name-screening-python/index.html b/examples/name-screening-python/index.html new file mode 100644 index 0000000..ac3c2cd --- /dev/null +++ b/examples/name-screening-python/index.html @@ -0,0 +1,74 @@ + + + + + +Screen any person or company name against 19,000+ SDN entries.
import requests
+
+def screen_name(name):
+ resp = requests.get(
+ "https://sanctionsai.dev/sanctions",
+ params={"name": name}, timeout=5
+ )
+ return resp.json()
+
+result = screen_name("Oleg Deripaska")
+if result["blocked"]:
+ print(f"MATCH: {result['matches']}")import csv, requests
+
+with open("customers.csv") as f:
+ for row in csv.DictReader(f):
+ result = screen_name(row["company_name"])
+ if result["blocked"]:
+ print(f"BLOCKED: {row['company_name']}")
+ # Log to audit file
+ with open("blocked.csv", "a") as out:
+ writer = csv.writer(out)
+ writer.writerow([row["company_name"], result["matches"]])
+Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to examples · SanctionsAI
+ \ No newline at end of file diff --git a/examples/payment-gateway-integration/index.html b/examples/payment-gateway-integration/index.html new file mode 100644 index 0000000..497b538 --- /dev/null +++ b/examples/payment-gateway-integration/index.html @@ -0,0 +1,69 @@ + + + + + +Add real-time sanctions screening before payment authorization.
async function processPayment(payment) {
+ // Step 1: Screen counterparty
+ const screen = await fetch(
+ `https://sanctionsai.dev/sanctions?wallet=${payment.wallet}`
+ );
+ const result = await screen.json();
+
+ // Step 2: Block if sanctioned
+ if (result.blocked) {
+ await logBlock(payment, result.matches);
+ return { status: "blocked", reason: "OFAC_MATCH" };
+ }
+
+ // Step 3: Proceed if clean
+ await logScreen(payment, "clean");
+ return await executePayment(payment);
+}| Step | Action | On failure |
|---|---|---|
| Extract ID | Get wallet/name | Abort |
| Screen | Call API | Fail safe: block |
| Log | Record result | Alert |
| Execute | Proceed if clean | Block if flagged |
Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to examples · SanctionsAI
+ \ No newline at end of file diff --git a/examples/python-wallet-screening/index.html b/examples/python-wallet-screening/index.html new file mode 100644 index 0000000..85643b7 --- /dev/null +++ b/examples/python-wallet-screening/index.html @@ -0,0 +1,76 @@ + + + + + +Screen any crypto wallet against the OFAC SDN list using Python and the SanctionsAI API.
import requests
+
+def check_sanctions(wallet):
+ resp = requests.get(
+ "https://sanctionsai.dev/sanctions",
+ params={"wallet": wallet}, timeout=5
+ )
+ data = resp.json()
+ return data.get("blocked", False), data.get("matches", [])
+
+blocked, matches = check_sanctions("0x098B716B8Aaf21512996dC57EB0615e2383E2f96")
+print(f"Blocked: {blocked}, Matches: {matches}")import requests, time, logging
+
+def check_safe(wallet, retries=3):
+ for attempt in range(retries):
+ try:
+ resp = requests.get("https://sanctionsai.dev/sanctions",
+ params={"wallet": wallet}, timeout=5)
+ resp.raise_for_status()
+ return resp.json()
+ except requests.RequestException:
+ if attempt < retries - 1:
+ time.sleep(2 ** attempt)
+ raise Exception("Screening failed")Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to examples · SanctionsAI
+ \ No newline at end of file diff --git a/examples/rust-wallet-screening/index.html b/examples/rust-wallet-screening/index.html new file mode 100644 index 0000000..05d6944 --- /dev/null +++ b/examples/rust-wallet-screening/index.html @@ -0,0 +1,65 @@ + + + + + +Screen crypto wallets in Rust using reqwest.
use serde::Deserialize;
+
+#[derive(Deserialize)]
+struct ScreenResult {
+ blocked: bool,
+ matches: serde_json::Value,
+}
+
+async fn check_sanctions(wallet: &str) -> Result<ScreenResult, Box<dyn std::error::Error>> {
+ let url = format!("https://sanctionsai.dev/sanctions?wallet={}", wallet);
+ let resp = reqwest::get(&url).await?.json::<ScreenResult>().await?;
+ Ok(resp)
+}
+Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to examples · SanctionsAI
+ \ No newline at end of file diff --git a/examples/smart-contract-pre-check/index.html b/examples/smart-contract-pre-check/index.html new file mode 100644 index 0000000..69f95e2 --- /dev/null +++ b/examples/smart-contract-pre-check/index.html @@ -0,0 +1,67 @@ + + + + + +Add a sanctions screening layer to smart contracts using an oracle.
// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.19;
+
+interface ISanctionsOracle {
+ function isBlocked(address wallet) external view returns (bool);
+}
+
+contract SanctionsGuard {
+ ISanctionsOracle public oracle;
+
+ modifier notSanctioned(address addr) {
+ require(!oracle.isBlocked(addr), "Sanctioned address");
+ _;
+ }
+}Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to examples · SanctionsAI
+ \ No newline at end of file diff --git a/examples/stripe-payment-screening/index.html b/examples/stripe-payment-screening/index.html new file mode 100644 index 0000000..c7ba6ed --- /dev/null +++ b/examples/stripe-payment-screening/index.html @@ -0,0 +1,70 @@ + + + + + +Add sanctions screening to your Stripe payment flow.
const stripe = require('stripe')(process.env.STRIPE_KEY);
+
+async function createChargeWithScreening(amount, currency, customer) {
+ // Screen customer name before charging
+ const resp = await fetch(
+ `https://sanctionsai.dev/sanctions?name=${encodeURIComponent(customer.name)}`
+ );
+ const result = await resp.json();
+
+ if (result.blocked) {
+ throw new Error("Customer matches OFAC SDN list");
+ }
+
+ // Safe to charge
+ return await stripe.paymentIntents.create({
+ amount, currency, customer: customer.id
+ });
+}
+Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to examples · SanctionsAI
+ \ No newline at end of file diff --git a/examples/webhook-alert-setup/index.html b/examples/webhook-alert-setup/index.html new file mode 100644 index 0000000..81f7bb2 --- /dev/null +++ b/examples/webhook-alert-setup/index.html @@ -0,0 +1,71 @@ + + + + + +Get real-time notifications when sanctions matches are detected.
from flask import Flask, request
+import json, smtplib
+
+app = Flask(__name__)
+
+@app.route('/webhook/sanctions-alert', methods=['POST'])
+def handle_alert():
+ alert = request.json
+ if alert.get('blocked'):
+ # Send email to compliance team
+ send_alert_email(alert)
+ # Log to audit system
+ log_to_audit(alert)
+ return {"status": "received"}, 200
+
+def send_alert_email(alert):
+ msg = f"Sanctions match detected!\nWallet: {alert['wallet']}\nMatches: {alert['matches']}"
+ # Send via SMTP or SendGrid
+ pass
+Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to examples · SanctionsAI
+ \ No newline at end of file diff --git a/redflags/ai-agent-payment-red-flags/index.html b/redflags/ai-agent-payment-red-flags/index.html new file mode 100644 index 0000000..662e909 --- /dev/null +++ b/redflags/ai-agent-payment-red-flags/index.html @@ -0,0 +1,53 @@ + + + + + +AI agent red flags. Autonomous transactions without screening, rapid velocity, missing audit trails.
| Red flag | Description | Risk level |
|---|---|---|
| Counterparty in sanctioned jurisdiction | Direct exposure to comprehensively sanctioned country | Critical |
| Name matches SDN list | Fuzzy match to designated person or entity | Critical |
| Wallet interaction with designated address | On-chain history shows contact with SDN wallet | Critical |
| Structured transactions | Payments broken up to avoid thresholds | High |
| Missing screening documentation | No evidence of pre-transaction screening | High |
| Rapid in-and-out fund movement | Funds arrive and leave quickly | Medium |
Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to redflags · SanctionsAI
+ \ No newline at end of file diff --git a/redflags/correspondent-banking-red-flags/index.html b/redflags/correspondent-banking-red-flags/index.html new file mode 100644 index 0000000..948c03c --- /dev/null +++ b/redflags/correspondent-banking-red-flags/index.html @@ -0,0 +1,53 @@ + + + + + +Red flags in correspondent banking. Nested accounts, wire stripping, high-risk respondents.
| Red flag | Description | Risk level |
|---|---|---|
| Counterparty in sanctioned jurisdiction | Direct exposure to comprehensively sanctioned country | Critical |
| Name matches SDN list | Fuzzy match to designated person or entity | Critical |
| Wallet interaction with designated address | On-chain history shows contact with SDN wallet | Critical |
| Structured transactions | Payments broken up to avoid thresholds | High |
| Missing screening documentation | No evidence of pre-transaction screening | High |
| Rapid in-and-out fund movement | Funds arrive and leave quickly | Medium |
Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to redflags · SanctionsAI
+ \ No newline at end of file diff --git a/redflags/crypto-wallet-red-flags/index.html b/redflags/crypto-wallet-red-flags/index.html new file mode 100644 index 0000000..bd3335c --- /dev/null +++ b/redflags/crypto-wallet-red-flags/index.html @@ -0,0 +1,53 @@ + + + + + +Red flags in crypto wallet activity. Mixer interaction, bridge usage, designated address contact.
| Red flag | Description | Risk level |
|---|---|---|
| Counterparty in sanctioned jurisdiction | Direct exposure to comprehensively sanctioned country | Critical |
| Name matches SDN list | Fuzzy match to designated person or entity | Critical |
| Wallet interaction with designated address | On-chain history shows contact with SDN wallet | Critical |
| Structured transactions | Payments broken up to avoid thresholds | High |
| Missing screening documentation | No evidence of pre-transaction screening | High |
| Rapid in-and-out fund movement | Funds arrive and leave quickly | Medium |
Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to redflags · SanctionsAI
+ \ No newline at end of file diff --git a/redflags/defi-protocol-red-flags/index.html b/redflags/defi-protocol-red-flags/index.html new file mode 100644 index 0000000..8ddc667 --- /dev/null +++ b/redflags/defi-protocol-red-flags/index.html @@ -0,0 +1,53 @@ + + + + + +DeFi sanctions red flags. Designated address interaction, mixer integration, governance risks.
| Red flag | Description | Risk level |
|---|---|---|
| Counterparty in sanctioned jurisdiction | Direct exposure to comprehensively sanctioned country | Critical |
| Name matches SDN list | Fuzzy match to designated person or entity | Critical |
| Wallet interaction with designated address | On-chain history shows contact with SDN wallet | Critical |
| Structured transactions | Payments broken up to avoid thresholds | High |
| Missing screening documentation | No evidence of pre-transaction screening | High |
| Rapid in-and-out fund movement | Funds arrive and leave quickly | Medium |
Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to redflags · SanctionsAI
+ \ No newline at end of file diff --git a/redflags/insurance-sanctions-red-flags/index.html b/redflags/insurance-sanctions-red-flags/index.html new file mode 100644 index 0000000..c671171 --- /dev/null +++ b/redflags/insurance-sanctions-red-flags/index.html @@ -0,0 +1,53 @@ + + + + + +Red flags in insurance. High-risk beneficiaries, sanctioned jurisdiction claims.
| Red flag | Description | Risk level |
|---|---|---|
| Counterparty in sanctioned jurisdiction | Direct exposure to comprehensively sanctioned country | Critical |
| Name matches SDN list | Fuzzy match to designated person or entity | Critical |
| Wallet interaction with designated address | On-chain history shows contact with SDN wallet | Critical |
| Structured transactions | Payments broken up to avoid thresholds | High |
| Missing screening documentation | No evidence of pre-transaction screening | High |
| Rapid in-and-out fund movement | Funds arrive and leave quickly | Medium |
Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to redflags · SanctionsAI
+ \ No newline at end of file diff --git a/redflags/nft-marketplace-red-flags/index.html b/redflags/nft-marketplace-red-flags/index.html new file mode 100644 index 0000000..a2789e5 --- /dev/null +++ b/redflags/nft-marketplace-red-flags/index.html @@ -0,0 +1,53 @@ + + + + + +NFT red flags. Wash trading, value transfer, designated wallet interaction.
| Red flag | Description | Risk level |
|---|---|---|
| Counterparty in sanctioned jurisdiction | Direct exposure to comprehensively sanctioned country | Critical |
| Name matches SDN list | Fuzzy match to designated person or entity | Critical |
| Wallet interaction with designated address | On-chain history shows contact with SDN wallet | Critical |
| Structured transactions | Payments broken up to avoid thresholds | High |
| Missing screening documentation | No evidence of pre-transaction screening | High |
| Rapid in-and-out fund movement | Funds arrive and leave quickly | Medium |
Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to redflags · SanctionsAI
+ \ No newline at end of file diff --git a/redflags/payment-processor-red-flags/index.html b/redflags/payment-processor-red-flags/index.html new file mode 100644 index 0000000..598c3b5 --- /dev/null +++ b/redflags/payment-processor-red-flags/index.html @@ -0,0 +1,53 @@ + + + + + +PSP red flags. Merchant in sanctioned jurisdiction, structured payments, screening gaps.
| Red flag | Description | Risk level |
|---|---|---|
| Counterparty in sanctioned jurisdiction | Direct exposure to comprehensively sanctioned country | Critical |
| Name matches SDN list | Fuzzy match to designated person or entity | Critical |
| Wallet interaction with designated address | On-chain history shows contact with SDN wallet | Critical |
| Structured transactions | Payments broken up to avoid thresholds | High |
| Missing screening documentation | No evidence of pre-transaction screening | High |
| Rapid in-and-out fund movement | Funds arrive and leave quickly | Medium |
Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to redflags · SanctionsAI
+ \ No newline at end of file diff --git a/redflags/ppe-sanctions-red-flags/index.html b/redflags/ppe-sanctions-red-flags/index.html new file mode 100644 index 0000000..202d464 --- /dev/null +++ b/redflags/ppe-sanctions-red-flags/index.html @@ -0,0 +1,53 @@ + + + + + +PEP sanctions red flags. Unexplained wealth, proxy accounts, adverse media.
| Red flag | Description | Risk level |
|---|---|---|
| Counterparty in sanctioned jurisdiction | Direct exposure to comprehensively sanctioned country | Critical |
| Name matches SDN list | Fuzzy match to designated person or entity | Critical |
| Wallet interaction with designated address | On-chain history shows contact with SDN wallet | Critical |
| Structured transactions | Payments broken up to avoid thresholds | High |
| Missing screening documentation | No evidence of pre-transaction screening | High |
| Rapid in-and-out fund movement | Funds arrive and leave quickly | Medium |
Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to redflags · SanctionsAI
+ \ No newline at end of file diff --git a/redflags/shipping-trade-red-flags/index.html b/redflags/shipping-trade-red-flags/index.html new file mode 100644 index 0000000..e801359 --- /dev/null +++ b/redflags/shipping-trade-red-flags/index.html @@ -0,0 +1,53 @@ + + + + + +Maritime red flags. AIS disabling, STS transfers, flag hopping, designated vessel contact.
| Red flag | Description | Risk level |
|---|---|---|
| Counterparty in sanctioned jurisdiction | Direct exposure to comprehensively sanctioned country | Critical |
| Name matches SDN list | Fuzzy match to designated person or entity | Critical |
| Wallet interaction with designated address | On-chain history shows contact with SDN wallet | Critical |
| Structured transactions | Payments broken up to avoid thresholds | High |
| Missing screening documentation | No evidence of pre-transaction screening | High |
| Rapid in-and-out fund movement | Funds arrive and leave quickly | Medium |
Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to redflags · SanctionsAI
+ \ No newline at end of file diff --git a/redflags/trade-finance-red-flags/index.html b/redflags/trade-finance-red-flags/index.html new file mode 100644 index 0000000..1b1d0f9 --- /dev/null +++ b/redflags/trade-finance-red-flags/index.html @@ -0,0 +1,53 @@ + + + + + +Sanctions red flags in trade finance. Over-invoicing, phantom shipments, dual-use goods.
| Red flag | Description | Risk level |
|---|---|---|
| Counterparty in sanctioned jurisdiction | Direct exposure to comprehensively sanctioned country | Critical |
| Name matches SDN list | Fuzzy match to designated person or entity | Critical |
| Wallet interaction with designated address | On-chain history shows contact with SDN wallet | Critical |
| Structured transactions | Payments broken up to avoid thresholds | High |
| Missing screening documentation | No evidence of pre-transaction screening | High |
| Rapid in-and-out fund movement | Funds arrive and leave quickly | Medium |
Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to redflags · SanctionsAI
+ \ No newline at end of file diff --git a/redflags/vasp-onboarding-red-flags/index.html b/redflags/vasp-onboarding-red-flags/index.html new file mode 100644 index 0000000..5212780 --- /dev/null +++ b/redflags/vasp-onboarding-red-flags/index.html @@ -0,0 +1,53 @@ + + + + + +VASP onboarding red flags. Anonymous registration, high-risk jurisdiction, incomplete KYC.
| Red flag | Description | Risk level |
|---|---|---|
| Counterparty in sanctioned jurisdiction | Direct exposure to comprehensively sanctioned country | Critical |
| Name matches SDN list | Fuzzy match to designated person or entity | Critical |
| Wallet interaction with designated address | On-chain history shows contact with SDN wallet | Critical |
| Structured transactions | Payments broken up to avoid thresholds | High |
| Missing screening documentation | No evidence of pre-transaction screening | High |
| Rapid in-and-out fund movement | Funds arrive and leave quickly | Medium |
Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker← Back to redflags · SanctionsAI
+ \ No newline at end of file diff --git a/redflags/wire-transfer-red-flags/index.html b/redflags/wire-transfer-red-flags/index.html new file mode 100644 index 0000000..59af5e7 --- /dev/null +++ b/redflags/wire-transfer-red-flags/index.html @@ -0,0 +1,53 @@ + + + + + +Red flags in wire transfers. Structuring, originator data gaps, high-risk routing.
| Red flag | Description | Risk level |
|---|---|---|
| Counterparty in sanctioned jurisdiction | Direct exposure to comprehensively sanctioned country | Critical |
| Name matches SDN list | Fuzzy match to designated person or entity | Critical |
| Wallet interaction with designated address | On-chain history shows contact with SDN wallet | Critical |
| Structured transactions | Payments broken up to avoid thresholds | High |
| Missing screening documentation | No evidence of pre-transaction screening | High |
| Rapid in-and-out fund movement | Funds arrive and leave quickly | Medium |
Check any wallet, name, or entity against OFAC, EU, UN sanctions lists in real time.
+Free wallet checker