Player Accounts & Notifications
Registration and sign-in
Players register with email and password, or sign in with Google or Telegram. Social sign-in is switched on per deployment by supplying that provider's OAuth credentials; without them the button does not appear. A Telegram-only account can exist with no password and no email address. Passwords are hashed with a modern memory-hard algorithm, never stored recoverably. A closed (deleted) account is refused at every sign-in route.
Email verification is real: registration sends a verification link, and the token is single-use. Password reset works the same way. Both routes are rate-limited by IP, and the mail transport is refused at boot in production if it is set to the developer console mode — because that mode prints reset links into the server log.
One mailbox, one player. Registration, adding an email and Google sign-up
refuse an address that reaches a mailbox another player already holds: case
differences, a +tag, Gmail's ignored dots and its googlemail.com twin, and
Proton's ignored separators and four domains all fold to one address. Emails are
matched case-insensitively and new ones are stored lowercased. Disposable-inbox
domains and "hide my email" relay services (SimpleLogin, Proton Pass, Firefox
Relay, DuckDuckGo, addy.io and similar) are refused at registration and when
adding an email, with a message that explains why. A registration with an address that already
has an account says so plainly rather than hedging.
Sessions slide their expiry on use: a player session lasts 14 days from the last use, with a hard ceiling of 30 days from sign-in, so an active player is not logged out mid-session but a stolen cookie cannot live forever. Session tokens are stored hashed. A lapsed session never throws the player into a forced re-login: browsing, and the lobbies, keep working signed out, and only a money action (placing a bet, launching a game, depositing, withdrawing) asks the player to sign in, then resumes where they were. A wallet dialog left open when the session ends turns into a You're signed out state with a sign-in button instead of a failed request.
Region. A new player's region is taken from their IP at registration and again at every sign-in, passkey sign-in included (which also refuses VPN and anonymizer connections). It decides, among other things, the starting marketing-email consent (below) and which jurisdiction rules apply. Staff can set a player's region by hand, with a written reason; later sign-ins then no longer overwrite it, and a region confirmed by an approved identity document always wins over both.
Account security
Players can strengthen their account beyond a password, all optional:
| Control | What it does |
|---|---|
| Passkeys | Sign in with the device's biometric or security key (WebAuthn) |
| Authenticator app (TOTP) | Six-digit codes from any standard authenticator app |
| Recovery codes | One-time codes that prove identity when other factors are unavailable |
| Connected accounts | Link or unlink Google and Telegram identities |
| Password sign-in off | A player with a passkey and unused recovery codes can turn password sign-in off entirely |
Sensitive changes — adding a passkey, enrolling or removing an authenticator, generating recovery codes, unlinking an identity, adding an email — and a crypto withdrawal to a first-time destination address require the player to have re-proved their identity within the last 15 minutes (password, passkey, authenticator code or recovery code). A player can never remove their last way of signing in.
The authenticator app is a re-verification method for those sensitive actions; it is not demanded at every sign-in.
Account settings
The player's settings area covers:
| Section | Contains |
|---|---|
| Account | Username and name, and the email address: a player without an email can add one, but changing an existing address goes through support |
| Security | Password, passkeys, authenticator app, recovery codes, connected accounts, and Delete account |
| Verification | Identity and address verification status, and the document upload flow — see KYC & Identity Verification |
| Preferences | Appearance (theme, corner roundness, the colour used for live events), language and display currency, lead wallet, date and time format, odds format, communications, privacy |
| Affiliate | The player's own referral portal, if they are also an affiliate |
Communications. Preferences carry two real switches, marketing emails and product updates, saved the moment they flip. New players in the EU, the EEA and the UK start with marketing emails off; everyone else starts on. Consent, the public unsubscribe page and suppression are covered in Player Cohorts & Email Campaigns. Transactional mail (verification, password reset, security notices) is not governed by these switches and carries no personal greeting.
Preferences also show privacy rows (hide profile, bets, wins), which are marked coming soon and do not yet do anything.
Odds format. Players choose how odds are written everywhere in the app: decimal (the default), fractional, American, Hong Kong, Malay or Indonesian. The choice is saved on the profile, so it follows the player across devices.
Display currency. From the account menu a player can choose to see their balances in USD or EUR. The header total and the wallet page then show each balance converted at the live rate, marked as approximate; the money itself stays in each wallet's own currency. See Wallet & Payments.
Account menu and setup checklist. The avatar opens the account menu (a dropdown on desktop, a bottom sheet on phones) with balance, deposit and withdraw, settings, language and display currency. While a player has setup steps left, a progress bar at the top of the menu opens a short checklist: confirm or add an email address, then the identity and address checks. Which verification steps appear, and why each matters (for example "needed to withdraw past $10,000"), come from the player's own region rules, so a change a compliance team makes shows up with no release. A step the player can never complete, such as a level closed by a rejection, drops out of the count, and the bar disappears once nothing is left to do.
Home lobby welcome. A signed-out visitor sees the registration banner at the top of the home lobby, with Google and Telegram shortcuts where those are switched on; a signed-in player does not.
Delete account. Last on the Security page. The player types their email address (or username, or a confirmation word if they have neither) back to confirm. The account is closed, not erased: every session ends at once and the player can no longer sign in, deposit, withdraw or play. Bets, casino rounds and withdrawals already in progress still settle, and the data stays for audit and ledger integrity. Because a closed account cannot withdraw, the dialog shows any remaining balance first, including balances in a currency that cannot be converted for the total, with a Withdraw shortcut; deletion waits until the balances have loaded so that warning is never missed.
Notifications
Players have an in-app notification feed fed by a live stream — settled bets (won, lost, refunded), deposits and withdrawals (succeeded or failed), tips received, verification decisions (a level approved, rejected, or sent back for a resubmission), operator messages and the welcome arrive without a page refresh. A verification notice names only the level, never a reason, and a case that cannot be resubmitted (a sanctions or fraud hit) sends no invitation to retry. There is no notification when a followed match goes live. Each entry leads with a picture that says what it is about (both club crests for a settled bet, a type icon for payments and messages) with an outcome badge; credited amounts are signed and shown in green; unread entries carry a dot. The feed opens on Unread with an Unread / All switch, filtered on the server so the Unread view is complete rather than a filtered first page, and a Mark all read action. The whole entry links to the bet or the wallet.
Short-lived confirmations appear as toasts in four kinds — success, info, warning and error — which can carry a timestamp and up to two actions; a toast with actions stays until the player acts on it.
Responsible gaming in the account
Player-protection controls have their own dedicated area, covered in Responsible Gaming.
Localization and accessibility
The player site is built on a full internationalization framework: seventeen content namespaces, browser language detection, a language picker, dates rendered in the player's language, and layout written throughout in direction-neutral CSS so a right-to-left language works without a rewrite.
Five languages ship: English, Simplified Chinese, Italian, German and Russian, each covering every namespace. Adding another is a matter of supplying translated content, not engineering.
The four non-English languages are machine-translated and have not been reviewed by native speakers. Before real money, the money, legal and safety copy — wallet, bets, responsible gaming, terms, errors and the blocked-access screen — needs a native review in every language you intend to offer.
Accessibility is handled deliberately rather than incidentally: custom widgets carry proper roles and labels, live regions announce updates, and animation respects the operating system's reduced-motion setting throughout.
Scope & Roadmap
Implemented. Email/password registration and login; Google and Telegram sign-in; passkeys, authenticator-app codes and recovery codes; recent-login re-verification for sensitive changes and first-time crypto withdrawal addresses; sliding sessions; email verification; password reset; email and password change; profile management; one-mailbox-per-player email rules with disposable and relay refusal; real marketing and product-update email switches with region-aware defaults and a public unsubscribe page; a live notification feed with unread filtering; USD/EUR display currency; theme, default-wallet and date-format preferences including odds format; account deletion (close, with in-flight activity settling); the account setup checklist; notifications for verification decisions and tips; staff-set player region; five player languages; reduced-motion and screen-reader support.
Partial. German, Russian, Italian and Chinese are machine translations awaiting native review. The privacy preferences (hide profile, bets, wins) are shown as coming soon placeholders. The display currency list is USD and EUR only.
Not built. A second factor is never required at sign-in — the authenticator app guards sensitive changes, not every login. There is no phone verification. Backoffice staff multi-factor authentication is a per-role requirement an operator turns on (off by default); see the Backoffice Console. In-product support is covered in Customer Support.