Stablecoin compliance for brokers accepting USDT and USDC

Almost every crypto-funded broker is in practice a stablecoin-funded broker. Clients deposit USDT on Tron or Ethereum, sometimes USDC on Base or Polygon, and expect the balance in minutes. Stablecoin compliance comes down to four questions banks never had to ask, and a compliance stack built for wires answers none of them.

sanctionsCOMPLETEissuer freezeCOMPLETEtx integrityCOMPLETEprocessor evidenceMISSINGwallet ownershipPARTIALbehaviourCOMPLETEactor attributionNOT AVAILABLEsource of fundsNOT AVAILABLEtravel ruleMISSINGone status per dimension, never a single score

Start free sandboxTalk to us50 screenings a month free, no card.

On this page

1. Has the issuer frozen this address?

A free, real-time read of the official USDT / USDC contracts. FROZEN is a hard signal. Binance-pegged tokens have no blacklist and are excluded.

Tether and Circle keep blacklists inside their token contracts. A blacklisted address cannot move the tokens it holds. Issuers add addresses at law-enforcement request, after hacks and for sanctions compliance, frequently before any government list changes. The check is a free, real-time, on-chain read of the official contracts: isBlackListed(address) for Tether on Ethereum and Tron, isBlocked(address) on Tether's newer Avalanche contract, and isBlacklisted(address) for Circle. KYTGate runs it for every deposit (USDT on Ethereum, Tron and Avalanche, USDC on Ethereum, Base, Arbitrum, Polygon, Avalanche and Optimism) and treats a FROZEN answer as a hard signal. Binance-pegged tokens are excluded. Their contracts expose no blacklist function, so there is no answer to read, and no read is made on BNB Chain.

2. Is it real USDT?

Look-alike tokens carry the right symbol; only a canonical Transfer log from the official contract passes integrity.

Anyone can deploy a token called "USDT". A transfer of a look-alike token to your deposit address appears in explorers with the right symbol and amount, and a processor that keys off the symbol will credit it. KYTGate verifies a deposit transaction by reading the receipt and requiring a canonical Transfer log from the official contract address for that network. Anything else fails transaction integrity, and the decision is REVIEW, never a credit.

3. Did the transfer happen as the webhook says?

Checked on-chain: the hash exists, succeeded and is confirmed, the token is canonical, the recipient is yours and the amount matches. The token-log sender is screened.

Your processor sends the notification, but the chain is the record that counts. Transaction integrity checks that the hash exists, the transaction succeeded, it has enough confirmations, the token is canonical, the recipient is yours and the amount matches. The address that gets sanctions-screened is the sender resolved from the token log. The transaction signer is not used, because it can be a contract. These checks close the "same hash credited twice" and "amount edited in transit" gaps.

4. Does settlement match the ledger?

Ledger credit, processor settlement and the on-chain transfer must agree within tolerance; a mismatch opens a case.

Three numbers must agree for every deposit: what you credited the client (ledger), what the processor says it settled to you (their report), and what moved on-chain (the transfer log, in the token's own decimals). KYTGate's reconciliation compares all three within a tolerance you set and opens a case on a mismatch, with the discrepancy described in words. This is the control auditors ask for first when a broker takes crypto, and the one most firms do in a spreadsheet.

Withdrawals are the riskier leg

Paying out makes you the sender. The whitelist has the client prove ownership, and the gate allows only approved, ALLOW-screened wallets.

Paying USDT out to a client-typed address makes you the sender of a possibly sanctioned or frozen transfer, permanently, on-chain. KYTGate's wallet whitelist has the client prove ownership of the destination (EIP-191 signature on EVM chains), screens it, and the withdrawal gate returns allowed only for an approved wallet whose pre-withdrawal screening returns ALLOW. Prop firms paying out challenge profits depend on this control.

What a regulator or bank expects to see

A per-deposit record of freeze status, canonical-token check, integrity, list version and human decision, signed, replayable, exportable.

They expect a per-deposit record of the issuer freeze status at the time, the canonical-token check, the integrity of the transfer, the sanctions list version and the human decision. The record should be signed, replayable and exportable. KYTGate's Decision Receipt and evidence pack provide it, and the monthly report summarises freezes, matches, mismatches and overrides for the board.

Check an address now

Free USDT and USDC blacklist checks read the issuer contracts live.

The free USDT blacklist check and USDC blacklist check read the issuer contracts live and show the contract, method and explorer link for your own verification.

Two guides go deeper: why USDT gets frozen and what a broker must do when a client's deposit is frozen, and the official USDT and USDC contract addresses with how to verify a deposit is the real token. The withdrawal side is covered in wallet ownership verification.

Run these checks on every deposit, automatically

KYTGate screens each crypto deposit and withdrawal against the OFAC, UK and EU lists and the USDT/USDC issuer freezes, decides under your written policy, and keeps a signed record an auditor can check without us.

Start free sandboxTalk to usSee pricing

API key in two minutes, 50 screenings a month free, no card. Security · Live status · Methodology