# Ban a member (/docs/use/member-bans)



Ban a member who farms quests, runs a cluster of fake accounts or abuses your program. A ban stops them from taking part from the moment you ban them. You can also take back what they earned, and Domino previews what that would reverse before you confirm.

A ban covers one member in one project and environment. If the same person signs in with another account, that is a different member: ban it too.

## What a ban does [#what-a-ban-does]

While a member is banned:

* **They can't take part.** Domino refuses their quest attempts and completions, including entry quests an app claims at sign-in. Tracker records that would count for them are skipped and aren't counted later, even after an unban. They can still sign in, and your app sees they are not eligible. Domino never shows them your reason.
* **Their waiting attempts are rejected.** Attempts waiting for review or a scheduled check are rejected. An attempt still being evaluated is rejected when it would complete.
* **Leaderboards leave them out.** Every board drops them from its standings, and a settlement that freezes while they are banned leaves them out. A winner banned after a settlement froze gets no prize when you approve it.
* **Referrals stop in both directions.** They earn no rewards or bonuses as an inviter, and their points pay their inviter nothing. Their invitation code stops working for new friends. Friends who already accepted keep their own rewards.
* **Their earnings stop.** Engagement rewards on their content stop, and member imports refuse rows that name them.

The member keeps what they earned unless you also take it back.

## Choose what to take back [#choose-what-to-take-back]

When you ban, you can take back any of these. Each is optional:

| Take back            | What happens                                                                                                                                                                                                                                                                                                                |
| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Completions**      | Every completion is revoked, the way [revoking a completion](/docs/concepts/quests#revoke-a-completion) works: its points and rewards are reversed, and so are the bonuses their inviter earned on those points and the referral qualifications they carry. The occurrences stay used, so the member can't earn them again. |
| **Referral payouts** | The referral rewards and bonuses the member received, as an inviter or as an invited friend, are reversed and written off, so they aren't paid again. This is how a farmer running a cluster loses what their fake friends paid them.                                                                                       |
| **Point awards**     | Manual awards, imported opening balances and engagement payouts are reversed.                                                                                                                                                                                                                                               |

Balances never go negative. Points the member already spent stay with them. For referral payouts, the part they can't repay is kept as a referral correction, which later referral payouts in that point ledger pay off first, as with any [referral correction](/docs/build/referrals#correct-suspend-and-resume).

## Preview, then ban [#preview-then-ban]

Banning needs the **Review** permission. Taking back referral payouts or point awards also needs **Publish**, the permission that corrects referrals today. A ban works in live and in test. Give a reason: it's recorded in the audit history and shown to operators, never to the member.

**In Console:**

1. Open **Members** and select the member.
2. Select **Ban member**.
3. Type the reason and choose what to take back. The preview shows, per point ledger, the points that would be reversed, the points the member already spent, any referral correction that would stay, the attempts that would be rejected, and the bonus their inviter would lose.
4. Select **Ban member** to confirm.

**With the CLI:**

```bash
domino members ban MEMBER --reason "Farming with a cluster" --rollback completions,referral-payouts --dry-run
domino members ban MEMBER --reason "Farming with a cluster" --rollback completions,referral-payouts
```

`--dry-run` shows the preview and changes nothing. The command asks you to confirm; in a script, add `--yes`. In live, a `domino login` session can't ban: use Console or a personal API key (see [what each credential may do in live](/docs/concepts/access#what-each-credential-may-do-in-live)).

> [!DEV]
> `management.members.previewBan(member, { rollback })` is the dry run. `management.members.ban(member, { reason, rollback, actionId })` bans, where `rollback` is `{ completions?, referralPayouts?, pointAwards? }`; replaying the action ID returns the first result. Banning a banned member adds the rollback it names to the ban in force, or answers the ban unchanged. Both are experimental. A refused attempt, completion or invitation answers 403 `member-banned`; a banned inviter's code answers 404 `invitation-not-found`. `relay.me.get()` answers `eligible: false` for a banned member. Tracker outcomes skipped for a ban have code `member-banned`.

## While the rollback runs [#while-the-rollback-runs]

The ban takes effect at once. Taking back runs in the background, one completion or payout at a time, so a member with thousands of completions doesn't hold up anyone else. The member's page shows the rollback as running, then a summary: what was revoked and reversed, per point ledger, what stayed because it was already spent, and any referral correction kept.

If a completion can't be revoked, the rollback moves on and lists it with the reason.

To take back more from a member who is already banned, select **Take back more** on their page and choose what to add. It runs over what is left.

> [!DEV]
> `members.get` answers the member's latest ban as `ban`, with `rollback.status` (`running`, `finished` or `stopped`) and `rollback.outcome`. Member lists answer `bannedAt` on a banned member.

## Unban [#unban]

Unbanning needs the **Review** permission. The member takes part again from then on. What they did while banned stays skipped. If the rollback is still running, it stops.

Choose **Restore the completions the ban revoked** to bring them back, the way [restoring a completion](/docs/concepts/quests#restore-a-revoked-completion) works: their points, rewards and referral qualifications return. A completion that can't be restored stays revoked, and the summary says why. Reversed referral payouts and point awards stay reversed: award them again by hand if you need to.

**In Console:** on the member's page, select **Unban**, type the reason, choose whether to restore their completions, and confirm.

**With the CLI:**

```bash
domino members unban MEMBER --reason "Appeal accepted" --restore-completions
```

> [!DEV]
> `management.members.unban(member, { reason, restoreCompletions, actionId })` answers the ban with `unban` set, and `unban.restore` while it restores. Unbanning a member who isn't banned answers 409 `member-not-banned`. Banning again while an earlier unban is still restoring completions answers 409 `member-ban-restoring`. Bans, rollbacks, unbans and restores each record an event in the `reviews` audit category.
