---
title: Reason codes: Lorg Check docs
description: Every reason code a Lorg Check answer can carry, by severity, with what it means. The live list is at GET /v1/reasons.
url: https://lorglabs.com/docs-reasons.html
---

# Reason codes

Each reason in an answer has a `code`, a `severity` and a sentence about this token or wallet. Codes are public and permanent: they are only ever added, never renamed. The live list is at `GET /v1/reasons`.

## How they count

- **Critical**: Blocks the trade on its own: a sanctioned address, a sale that fails, a honeypot hook, a hidden mint, a counterfeit token, a sweeper wallet, a planted look-alike.
- **High, medium, low**: Add points to `risk_score`: caution from 30, block from 70. A few never allow on their own (the pool's money can be pulled, there is no real market, a code we can't read).
- **Info**: Context that softens or explains: a well-known token, powers held by a multisig, an established market.
- **CHECK_FAILED**: A check that couldn't finish appears as `CHECK_FAILED:<name>`, and in `checks_failed`. It never counts in a token's favour.

## Blocks the trade critical

| Code | Check | Meaning |
| --- | --- | --- |
| `SANCTIONED` | address, token | On the OFAC SDN list or flagged by the Chainalysis sanctions oracle. |
| `KNOWN_SCAM` | address, token | Matches a scam, drainer, phishing or exploiter label. |
| `SELL_BLOCKED` | token | A simulated sell reverted: you may not be able to sell (honeypot). |
| `COMPROMISED_WALLET` | address | Wallet delegates (EIP-7702) to a known sweeper: anything sent to it is forwarded to an attacker. |
| `ADDRESS_POISONER` | address | Wallet is set up for address poisoning: it imitates other addresses to trick payers. |
| `HONEYPOT_HOOK` | token | The main pool's Uniswap V4 hook is a copy of a known honeypot hook, set to keep 50% or more of what a buyer sells. |
| `COUNTERFEIT_TOKEN` | token | A fake of a major token: its ticker is spelled with look-alike letters, or it passes itself off as money (USDC, USDT, ETH and the like) with no market to sell into. |
| `HIDDEN_MINT` | token | The token's creator or owner can transfer far more tokens than exist (a mint hidden in transfer): they can create tokens at will and sell them into the pool. |

## Serious high

| Code | Check | Meaning |
| --- | --- | --- |
| `HIGH_SELL_TAX` | token | Sell tax above 10% (above 50% always blocks). |
| `OWNER_CAN_MINT` | token | An owner or role can mint new tokens. |
| `OWNER_CAN_BLACKLIST` | token | An owner or role can block specific addresses from transferring. Never allow unless behind a multisig or timelock (or a known issuer). |
| `OWNER_CAN_SET_FEES` | token | An owner or role can change transfer fees (up to taking a whole sale). Never allow unless behind a multisig or timelock (or a known issuer). |
| `UPGRADEABLE_BY_EOA` | token | A single wallet can replace the contract's code at any time (no multisig or timelock); comes with UPGRADEABLE. |
| `UNRESOLVED_PROXY` | token | The contract delegates to code we could not resolve; never allow. |
| `NO_MARKET` | token | Main pool holds under $1,000: there is no real market to sell into. Comes with LOW_LIQUIDITY; never allow. |
| `EXIT_LIQUIDITY_INSUFFICIENT` | token | Your trade size (`amount_usd`) is too large to exit without heavy loss: a buy of that size is priced 10% or more worse than a small one, is more than all the quote a seller can reach in the token's pools, can't be taken whole by the pool, or reverts where a small one goes through. Never allow. |
| `UNKNOWN_HOOK` | token | Uniswap V4 pool with an unrecognised hook (hooks can tax or block sells). |
| `HOOK_OWNER_CAN_SET_TAX` | token | The main pool's Uniswap V4 hook is a copy of a known honeypot hook: its owner can raise the sell tax to 99.99% at any time. |
| `DEPLOYER_PRIOR_RUG` | token | The deployer's earlier tokens were rugged. |
| `DEPLOYER_SANCTIONS_EXPOSURE` | token | The deployer's first funds came directly from a sanctioned address. |
| `DEPLOYER_RUG_FUNDED` | token | The deployer's first funds came from a wallet that funded the creators of rugged tokens. |
| `COPYCAT_TOKEN` | token | Uses the ticker or name of a major token (top ~500 by market cap) at a different address: it may be a fake. |
| `SANCTIONS_EXPOSURE` | address | Wallet's first funds came directly from a sanctioned address. |

## Worth knowing medium

| Code | Check | Meaning |
| --- | --- | --- |
| `HIGH_BUY_TAX` | token | Buy tax above 10%. |
| `OWNER_CAN_PAUSE` | token | An owner or role can pause all transfers. |
| `UPGRADEABLE` | token | Proxy contract: the code can be replaced later. |
| `UNVERIFIED_SOURCE` | token | Source code is not verified on a block explorer. |
| `CONCENTRATED_HOLDERS` | token | Top 10 holders own over 50% (excluding pools and burn). |
| `LOW_LIQUIDITY` | token | Main pool holds under $10k. |
| `LP_NOT_LOCKED` | token | The main pool's liquidity (its LP tokens, or its Uniswap V3/V4 or Aerodrome Slipstream positions) is held by a normal wallet, not burned or locked: it can be withdrawn at any time. Never allow. |
| `SERIAL_DEPLOYER` | token | The deployer launches many short-lived tokens. |
| `DEPLOYER_MIXER_FUNDED` | token | The deployer's first funds came directly from a mixer (e.g. Tornado Cash). |
| `NEW_TOKEN` | token | Token contract created less than 24 hours ago. |
| `MIXER_FUNDED` | address | Wallet's first funds came directly from a mixer (e.g. Tornado Cash). |
| `NEW_WALLET` | address | Wallet first seen less than 7 days ago, or never seen. |

## Minor low

| Code | Check | Meaning |
| --- | --- | --- |
| `LOW_ACTIVITY` | address | Wallet has sent fewer than 3 transactions. |
| `CHECK_FAILED` | address, token | A check timed out or errored (shown as CHECK_FAILED:<name>); see checks_failed. |

## Context info

| Code | Check | Meaning |
| --- | --- | --- |
| `OWNER_RENOUNCED` | token | Owner is the zero address (lowers risk unless upgradeable). |
| `KNOWN_GOOD_TOKEN` | address, token | A well-known token: issuer admin powers are not scored as risk. |
| `ADMIN_SAFEGUARDED` | token | The admin powers need several signatures (multisig) or wait out a delay (timelock of 24 h or more): they weigh less. |
| `ESTABLISHED_TOKEN` | token | Traded for 180+ days with a real market ($1M+ in its main pool, or a CoinGecko top-1,000 market cap for this exact contract), or for 2+ years with $250k+ across its pools: holder and LP concentration aren't scored, and admin powers behind a multisig or timelock weigh less. |
| `ISSUER_CONTROLLED` | address, token | The issuer can freeze or mint (for example USDC). |
| `BONDING_CURVE` | token | Token is still trading on a launchpad bonding curve. |
| `DELEGATED_WALLET` | address | Wallet has delegated its code to a contract (EIP-7702). |
| `CONTRACT_ADDRESS` | address | Address is a smart contract; use `/v1/check/token` for a full token analysis. |
