Skip to main content
You return accountId from Player authorization. From that moment it is the identity Zero-Dash uses for everything about that player.

Zero-Dash keys the following on accountId

All bets · all transactions · reporting, telemetry and audits

The four requirements

Unique per player

No two players may ever share an account ID.

Permanent

Stable for the player’s entire lifetime. It is never re-issued and never reused.

No personal data

No email, no name, no username, no document number. Nothing that identifies a human.

One currency each

An account ID maps to exactly one currency, permanently.
Changing a player’s account ID orphans their entire history. Bets, transactions, reports and audit trails all key on it, and there is no migration path. Choose the scheme once and never revisit it.

Choosing an identifier

Opaque, stable, carries no personal data. The third form encodes the currency, which makes multi-wallet players easy to reason about.
Your existing internal player ID is usually the right answer, as long as it is not personal data and not renameable. Prefix it if you want to keep it opaque — acct_ plus the ID is fine.

One currency per account

This is the requirement most likely to bite a multi-currency platform. An account ID may only ever be associated with one currency. A player who holds a USD wallet and a BTC wallet is two account IDs:
Each session launches with its own currency and its own token, and each account ID accumulates its own history.
Returning a different currency for an account ID we have already seen is a hard failure. The ledger is denominated per account; there is no conversion path mid-stream.

Where it appears

Four field names, one identifier. playerId in the money callbacks is the same value you returned as accountId — resolve it the same way everywhere.

Display name

Alongside the account ID you return displayName, shown to other players in shared surfaces such as multiplayer chat and live bet lists.

Do

Matthew S. · Player_4821 · LuckyDuck77Abbreviated, pseudonymous, safe to show publicly.

Do not

matthew.smith@example.com · Matthew SmithFull names and contact details are visible to strangers.
displayName is broadcast to other players in the same game session. Treat it as public.

Sub-operators

Several brands behind a single integration? Return subOperatorId and the games use it to keep shared surfaces separate — for example, one chat room per brand rather than one for everyone.
Optional. Omit it entirely if you run one brand.