How wallet screening works in stablecoin payments: exposure, risk scores, and frozen addresses

How wallet screening works: OFAC-listed addresses, direct and indirect exposure, risk scores, issuer freezes, and what to do when an address is flagged.

Wallet screening checks a blockchain address against sanctions lists and blockchain analytics before funds go to it, and after funds arrive from it. The list check catches addresses regulators have published. The analytics check scores how close an address sits to sanctioned parties or illicit activity, which matters because published lists are incomplete.

A wallet address is a new kind of counterparty. It carries its own history, it can belong to someone other than your customer, and once tokens move to it they don't come back on request. Screening is how a payments team decides, before money moves, whether it should.

This article is for information only and is not legal advice.

Key takeaways

  • Screen the address, not only the customer. A verified customer can still send to, or receive from, a sanctioned or high-risk address.
  • OFAC publishes some digital currency addresses on the SDN List, and says itself that those listings are not likely to be exhaustive.
  • Blockchain analytics fills the gap by scoring direct and indirect exposure to risky addresses. Hops and thresholds are a policy choice.
  • You can't refuse an inbound onchain transfer. Write the rule for what happens to funds that land from a flagged address before it happens.
  • USDC and USDT issuers can block addresses. A frozen balance stays stuck until the issuer lifts the block.

If you're mapping where screening fits in the wider payment system, start with what stablecoin infrastructure is. Wallet screening is one control inside its compliance layer.

What is wallet screening?

Wallet screening is the check a payments team runs on a blockchain address before it sends funds to that address or accepts funds from it. It has two parts, and they answer different questions.

List screening asks: is this exact address on a sanctions list? It's a lookup. Either the address appears in a published entry or it doesn't.

Exposure screening asks: how close is this address to risky activity? It uses blockchain analytics, which clusters addresses that likely belong to the same entity and labels clusters by type (exchange, mixer, scam, darknet market, sanctioned entity). The tool then traces where an address's funds came from and went to, and returns a risk score.

Customer screening, covered in ongoing sanctions screening, checks names. Wallet screening checks identifiers that names can't reach. Both feed the same alert queue.

Which wallet addresses appear on sanctions lists?

The US Treasury's Office of Foreign Assets Control (OFAC) adds digital currency addresses to some entries on the Specially Designated Nationals (SDN) List. OFAC first did this on November 28, 2018, for two individuals tied to Iran.

The listings are useful and incomplete at the same time. OFAC's FAQ 562 says its digital currency address listings are "not likely to be exhaustive." The same answer says that anyone who identifies an address they believe belongs to or is associated with an SDN, and who holds property in it, should block it and report it to OFAC.

Two practical consequences follow:

  1. An address not on the list can still be prohibited. If you know or have reason to know a wallet belongs to a listed person, the absence of the address from the SDN entry doesn't help you.
  2. One entity often controls many addresses. A sanctioned party can open new addresses in seconds. List screening catches the ones already published; exposure screening is how the rest get caught.

How does blockchain analytics score a wallet?

Blockchain analytics scores a wallet by tracing its transaction history and measuring how much of its activity touches labeled risky entities. The output is usually a score or a risk tier, plus the categories behind it.

The scoring rests on two kinds of exposure:

Exposure typeWhat it meansExampleHow strong a signal
Direct exposureThe address transacted with a risky address in one transferReceived USDT straight from a sanctioned addressStrong. Usually triggers review or a block
Indirect exposure, one hopFunds passed through one intermediate addressSanctioned address to an unlabeled wallet to your counterpartyModerate. Depends on amount and timing
Indirect exposure, several hopsFunds passed through two or more addressesMixer output routed through a chain of fresh walletsWeaker with each hop, unless the pattern looks deliberate
Ownership attributionThe address is clustered with an entity that is itself riskyAn address controlled by a listed exchangeStrong. Treat like direct exposure
No exposure foundNo labeled risky activity in the traced historyNew wallet, or one only used with regulated exchangesClean for now. Not a guarantee

Two settings decide how noisy this gets. The hop limit sets how far back the trace goes. The threshold sets what share or amount of exposure counts. Set them too wide and every wallet that ever touched an exchange looks risky. Set them too narrow and layering through a few fresh wallets walks right past you.

Neither setting has an industry standard number. Write down what you chose and why, and tune it the way you'd tune any monitoring rule. The transaction monitoring red flags list shows how the same rule-tuning discipline works for amounts and velocity.

When should you screen: before or after the transfer?

Screen outbound transfers before they're signed, and screen inbound transfers as soon as they land. The timing differs because blockchains let anyone send to any address, but nobody can pull a confirmed transfer back.

Outbound (pre-transaction). You control the send. Screen the destination address, and the customer behind it, before the transaction is broadcast. A match stops the payment. Nothing has moved yet, so nothing needs unwinding.

Inbound (post-transaction). You don't control the send. A stranger can push tokens to your deposit address at any time, including from a sanctioned wallet. Screening happens on arrival, and the decision is about the funds you now hold: credit them, hold them for review, return them, or block and report them.

Stored addresses (periodic). A wallet that passed at registration can be listed later, or start receiving from risky sources. Rescreen saved addresses when lists or analytics data change, and before each outbound payment, not only once.

The inbound case is where programs get caught out. A small deposit from a listed address (sometimes called dusting) can land in a clean customer's wallet without their involvement. Your policy should say whether that triggers a block, a review, or just a note on file, and the answer can depend on amount and direct versus indirect exposure.

What can a stablecoin issuer freeze?

Stablecoin issuers can block addresses at the token contract level, which freezes every unit of their token held by that address. This is a separate control from your own screening, and it can hit you even when you did everything right.

Circle (USDC). Circle's Stablecoin Access Denial Policy says that when an address is denied access, it can no longer send or receive Circle's stablecoin, and all of the stablecoin it controls is blocked onchain. Circle says it blocks addresses to comply with a law, regulation, or legal order, may block in response to urgent law enforcement or sanctions-related government requests, and may reverse a block once the authority confirms the obligation has lifted. The USDC terms reserve the same right.

Tether (USDT). Tether's terms of service reserve the right to blacklist any address holding Tether tokens for suspected prohibited uses, to freeze tokens, and to bar transactions to or from sanctioned persons.

What this means in a payment flow:

  • A frozen counterparty can't receive. A payout to a blocked address fails onchain. Screening first saves you the failed transaction and the alert.
  • Funds received from a soon-to-be-frozen address aren't affected by that freeze. The block applies to the address, not to tokens that already left it. Your own screening still decides whether you accept them.
  • Your own address can be frozen. If an issuer blocks an address you control, the balance sits there until the block is reversed. Keep operating balances spread across addresses you can explain to an issuer, and keep records that show where funds came from.

How issuers decide is also part of the depeg and issuer risk picture for any payment flow that holds stablecoins.

What should happen when an address is flagged?

When an address is flagged, stop the money first and decide second. The workflow below works for both list matches and high exposure scores, with the outcome changing by severity.

  1. Freeze the flow, not the customer. Put the payout on hold before broadcast, or keep inbound funds uncredited. Don't tell the counterparty why.
  2. Confirm the match. For a list hit, compare the exact address and network to the SDN entry. For an analytics score, open the trace and look at the actual hops and amounts.
  3. Check the customer side. Is the address registered to a verified customer? Does the activity fit the customer's stated business? Pull the KYC or KYB file.
  4. Ask, if the risk is indirect. A request for information on the relationship and purpose of the payment often clears a one-hop exposure in a day.
  5. Decide and record it. Clear, return, reject, or block. Write who decided, why, and what evidence they used.
  6. Block and report confirmed sanctions matches. OFAC's FAQ 646 says a US person holding virtual currency that must be blocked has to deny all parties access to it, isn't required to convert it to fiat, and must report it to OFAC within 10 business days and annually after that.
  7. Feed the result back. Add the address to an internal deny list, or note a cleared false positive so the same trace doesn't re-alert next week.

Steps 4 and 5 mirror how Travel Rule exceptions are handled: hold, ask, then decide with a written reason.

What are the limits of wallet screening?

Wallet screening reduces risk. It doesn't remove it, and a few limits are worth stating plainly.

  • Lists lag. An address is listed after the activity, not before. Screening on day one says nothing about day ninety.
  • Attribution is probabilistic. Clustering and labels are a vendor's model of who controls what. They can be wrong in both directions.
  • Fresh wallets look clean. A brand-new address has no history, so it scores low even when its owner is not. Customer due diligence carries that case.
  • Cross-chain hops break traces. Bridges and swaps can split a trail across networks, and not every tool follows every chain equally well.
  • Unhosted wallets have no counterparty provider. There's nobody to send Travel Rule data to or ask for records, so the customer relationship has to carry the evidence.

None of this is a reason to skip screening. It's a reason to pair it with identity checks, monitoring, and a clear hold-and-review process.

How does BlindPay handle wallet risk?

BlindPay runs KYC, KYB, sanctions screening, and transaction monitoring inside the API flow, before money moves. Customers are verified before their first transaction, and entities or individuals on OFAC, EU, UN, or other sanctions lists are not supported, per the prohibited activities list.

External wallets are registered per customer as blockchain wallets. On EVM networks, the customer can sign a message and BlindPay recovers the address from the signature, so the address is proven to be under the customer's control instead of pasted in. These wallets are non-custodial: BlindPay never holds their keys and cannot access, freeze, or recover funds in them. For Brazilian customers, each external wallet is also declared as self-custodied or not, as explained in self-custody wallets.

A sanctions or watchlist screening match is one of the documented compliance hold triggers. The payin or payout moves to on_hold, and the compliance team reviews it. If the flag can't be cleared internally, BlindPay sends a request for information about the parties and the purpose of the payment, and an unanswered request may lead to a refund to the sender after 24 hours, as described in on-hold transactions. A hold can last up to 30 days; a timeout without a decision fails the transaction. If prohibited activity is identified, funds may be frozen pending investigation.

Payouts run over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO) from USDC or USDT on supported networks, with these checks applied to each one.

What to do next

Write your inbound rule first: what happens to funds that arrive from a listed address, a high-score address, and a one-hop exposure. Then set your hop limit and threshold, and test both on a sample of real deposits before you turn on automatic blocks.

Sources and further reading

FAQ