USDT source-of-funds check · TRON · BSC · Ethereum

Will the USDT you receive get you frozen?

KYTScore is a USDT source-of-funds checker that traces where an address's USDT came from — up to 2 hops back over the last 90 days on TRON, BNB Smart Chain and Ethereum — and flags links to OFAC-sanctioned, Tether / Circle-frozen, hacked or scam addresses, with the evidence path, amounts and dates.

Paste the address that paid you and see whether that USDT could get you frozen or flagged by an exchange.

Try:

How the check works

  1. Take the address's USDT inflows over the last 90 days (up to 400 transfers); drop transfers under $1 (dust and address poisoning).
  2. Look up every sender: sanctions, issuer freezes, hack / scam lists, and exchange wallets. Exchanges and big hubs are treated as end points.
  3. Expand the largest unidentified senders (up to 8, until 80% of the inflow is covered) and repeat one more hop.
  4. Exposure = the product of the amount shares along each path; hop 2 counts half. The score follows the table below.
SituationScore
The address itself is sanctioned, frozen or a known hack address100 Severe
Hop 1: ≥ 10% or ≥ $1k from sanctioned / frozen / hack addresses85 High
Hop 1: ≥ 1%60 Moderate
Hop 1: any; or hop 2: ≥ 10%45–55 Moderate
Otherwise (small hop-2 exposure raises it within Low)5–30 Low
The address is a known exchange wallet and not listed itself≤ 30 Low
Where labels come from

Local label OFAC SDN, current Tether / Circle freezes, FBI notices, exchanges' own proof-of-reserves address lists.

Inferred Rules on the address's own flows: very high volume or transfer count → hub; ≥ $10M from ≤ 10 senders → likely exchange hot wallet; forwards most funds to one known exchange → likely that exchange's deposit address.

External API For the top 3 TRON addresses we still can't name, the public tag from TRONSCAN, attributed and linked to its TRONSCAN page. Cached for 24 hours, not stored as our label.

Key facts

Status
Prototype to test demand. Free, no account, no SLA. The paid API is not live yet.
Chains and asset
USDT only, on TRON (TRC-20), BNB Smart Chain (BEP-20) and Ethereum (ERC-20).
Window and depth
The last 90 days, up to 2 hops back. Up to 400 incoming transfers of the checked address and 200 for each expanded sender; transfers under $1 are ignored.
Lists and labels
OFAC SDN list; addresses currently frozen by Tether and Circle; FBI public notices; exchanges' own proof-of-reserves address lists (Binance, OKX, Bitfinex, HTX, Bybit, KuCoin, Crypto.com); inferred labels; TRONSCAN public tags for unidentified TRON addresses.
Data snapshot
Tether / Circle freezes and OFAC SDN: · public labels: · exchange PoR: . Every result shows the snapshot times it used.
Chain data
Fetched live at check time from TronGrid (TRON) and Alchemy (BSC, Ethereum). A result is cached for 24 hours.
Usage limits
10 checks per hour per IP address and 200 per day in total; at most 30 upstream data calls per check. Cached results don't count.
Limitations

API preview

Not live yet. Field names follow the common risk_score shape (score / risk_level / risk_detail), plus an evidence path.

The rate-limited demo endpoint behind this page is described in /openapi.json.

Request
POST /v1/risk/address
Authorization: Bearer <key>

{ "chain": "tron", "address": "TQ4k…9fWm", "asset": "USDT" }
Response
{
  "score": 85,
  "risk_level": "High",
  "risk_detail": [
    {
      "entity": "Frozen by Tether (USDT_TRC20)",
      "risk_type": "frozen_by_issuer",
      "exposure_type": "direct",
      "hop_num": 1,
      "volume": 4200.00,
      "percent": 12.4,
      "path": [
        { "address": "TQ4k…9fWm" },
        { "address": "TFz8…2kLx", "usd": 4200.00, "ts": 1792310400000,
          "tx": "9c1e…a07b", "entity": "Frozen by Tether (USDT_TRC20)" }
      ]
    }
  ],
  "exchanges": [ { "entity": "Binance", "hop": 1, "percent": 61.2, "source": "por-binance" } ],
  "coverage": { "inflow_usd": 33870.5, "labeled_pct": 73.6, "traced_pct": 18.1 }
}

Pricing

Preview · may change 100 checks / month free then $0.02–0.05 per check
  • TRON, BSC, Ethereum USDT
  • Evidence path with every score
  • Batch checks and alerts when a past sender gets frozen

Want the API? Leave an email and we'll tell you when it opens.

No spam. One email when it opens.

FAQ

What is KYTScore?

KYTScore is a free prototype that checks the source of funds of a USDT address. It traces the address's USDT inflows up to 2 hops back over the last 90 days and reports how much is linked to OFAC-sanctioned, Tether / Circle-frozen, hacked or scam addresses, with the transactions that prove it.

Which blockchains and tokens are covered?

Only USDT, on TRON (TRC-20), BNB Smart Chain (BEP-20) and Ethereum (ERC-20). Other tokens, other chains and cross-chain bridges are not traced.

How far back does a check look?

90 days. It reads up to 400 incoming USDT transfers of the checked address, ignores transfers under $1, then expands the largest unidentified senders (up to 8, until 80% of the inflow is covered) by one more hop, reading up to 200 transfers each.

What do the score and risk levels mean?

The score runs from 0 to 100: Low is 0–30, Moderate 31–70, High 71–90 and Severe 91–100. Severe means the address itself is on an official list. High means at least 10% or $1,000 of its inflow came directly from sanctioned, frozen or hacked addresses. Hop-2 exposure counts half.

Where do the labels come from?

OFAC's SDN list, the addresses Tether and Circle currently have frozen, FBI public notices, and the proof-of-reserves address lists that exchanges publish. Some labels are inferred from flow patterns and marked as inferred. For the top unidentified TRON addresses, public tags from TRONSCAN are shown with attribution and cached for 24 hours.

Does a high score mean the address owner did something wrong?

No. The score describes on-chain fund flows only. It does not say who controls an address or that anyone broke a rule, except where an official list names the address itself. Inferred labels can be wrong.

Why is an exchange wallet not flagged when funds came from a frozen exchange wallet?

Exchanges move funds between their own wallets all the time. If a known exchange wallet is later frozen, the freeze counts as Severe only for that wallet. Wallets it paid are treated as receiving from an exchange and get a note instead of a risk score, and a known exchange wallet that is not listed itself is capped at Low.

Is there an API and what will it cost?

The demo endpoint POST /api/kyt/check is public but rate-limited (10 checks per hour per IP address, 200 per day in total) and described at /openapi.json. A paid API is planned; preview pricing is 100 checks a month free, then $0.02–0.05 per check, and may change.

Submit a label or correction

Know who an address belongs to, or think a result is wrong? Tell us. Submissions are reviewed by a person before they affect any result.