**Fraud -> Blocklist**

The things your firm refuses to let in, whatever any detector thinks of them.
A detector weighs signals and gives a trader a score. The blocklist does not
weigh anything: what is on it is refused.

You need the `view_fraud` permission to open the list and `manage_fraud` to add,
change or remove an entry.

## What an entry refuses

Each entry has a type and a value. The value is stored the way the platform
compares it, so `John@Example.com ` becomes `john@example.com`.

| Type | What it refuses |
| --- | --- |
| Email address | Signing up with it, changing an account's address to it, and signing in to an account that has it. |
| Email domain | The same for every address at that domain and its subdomains. `example.com` also covers `mail.example.com`. |
| IP address or range | Signing up and signing in from it. A range is written as CIDR, such as `203.0.113.0/24`, and may be no wider than `/8`. |
| Device | Every session on that device. Only a signed in browser reports its device, so a match signs that session out again, on every sign in from there. |
| Card | A purchase with that card. A card is only known once the payment went through, so the purchase stands and the buyer is restricted through a flag instead. |
| Phone number | Signing in to an account with that number. Only the digits count, so `+31 6 1234 5678` and `0031612345678` are the same number. |

Only traders are held to the blocklist. Members of your team, the owner and
Propper's staff pass, so an entry for your own office network cannot lock you
out.

When an existing account is refused, the platform raises a flag with the
detector **Blocklist** against it, so the account shows up in the
[Review queue](/docs/platform/admin/fraud) with the entry that caught it.
A sign up that is refused has no account yet and raises nothing. Every entry
counts how often it refused something and when it last did.

## Adding an entry

**Add** in the header opens the form beside the list: the type, the value, a
reason for the team and, if you want, an end date. An entry with an end date
stops refusing at the end of that day in your own timezone. Without one it stays
until somebody removes it.

The same form opens filled in from the Review queue: the trader's address or
domain from their case, or the IP address of a flag. The entry then remembers
which trader it came from, and that trader's timeline says it was added.

An entry that already exists is refused with a message, and so is a value that
does not fit its type, such as `999.1.1.1` as an IP address.

## One entry

Pick an entry to see it beside the list: its type and value, how often it
refused something and when it last did, who added it and when, and when it
ends. **Who it reaches now** lists the traders of your firm the entry matches
today, the ones it would refuse at their next sign in.

The reason and the end date can be changed and are saved with the save dock at
the bottom. The type and the value cannot: remove the entry and add another.
Removing asks first.

## The list

Every entry, newest first, searched by value, reason, who added it and the
trader it came from, and filtered by type and by whether it still refuses
(active) or has passed its end date (ended). Sort by newest, most refusals or
the most recent refusal. J and K walk the list, and a right click on a row
copies its value or removes it.

## In the older designs

Propper - OG and Tactical have no Blocklist. A firm on one of those designs has
no entries, so nothing is refused on account of one.