Appearance
Wallet & payments
The wallet is the heart of the product. It tracks balances, takes deposits in crypto and fiat, and processes withdrawals. The wallet modal is available from anywhere on the site, so a player never has to leave what they are doing to top up.
How balances work
Internally, everything is denominated in USD. Crypto and fiat amounts are converted to USD for debits and credits, and converted back to a player's chosen currency for display using live exchange rates. This keeps the betting and bonus math in one unit no matter what someone deposited.
Each account actually has two balances:
- a real balance, the player's own money, and
- a bonus balance, which is subject to wagering requirements.
The two are kept apart on purpose. An active bonus with unmet wagering can block real-money withdrawals, which is why the wallet always reports a canWithdrawReal flag alongside the numbers.
Crypto deposits
For crypto, a player generates a static deposit address per currency through CryptoCloud. They can hold several addresses, and the wallet lists each one with a QR code so it is easy to send from a phone.
When funds arrive, CryptoCloud calls back to the API. The webhook is verified with a signed token before anything is credited. On a valid deposit the platform records the blockchain deposit, credits the unified USD balance, fires the deposit bonus trigger, re-evaluates the player's segments, and sends a deposit notification.
Fiat deposits
Fiat runs through Payou (and optionally P2P where configured). The wallet loads cashier methods and deposit presets from the API — methods, limits, and sort order are configured in the admin Payments hub. Up to eight preset amount buttons can appear per currency; the default preset is auto-filled when the player selects a currency. Creating a payment walks the configured provider cascade on decline before redirecting to checkout. Payou notifies the API when the payment settles — that callback is checked against an MD5 signature before the balance moves. Players land back on a success or failure page, and the client can also poll to confirm status.
Withdrawals
A withdrawal is a request, not an instant transfer. The player picks a currency and amount and supplies a destination address; the balance is deducted immediately and the request enters a processing state for an operator to review. The player gets a notification, and they can follow the request — including a back-and-forth message thread with the back office — from its detail page.
Withdrawals only go through when the player can actually withdraw real funds (no blocking bonus), the USD balance covers the amount, and a wallet for that currency exists. The operator side of this flow is documented under Withdrawals.
A note for local development
Because both providers depend on webhooks reaching a public HTTPS endpoint, full deposit and withdrawal flows generally need a tunnel or a staging environment. The wallet UI, balances, and history all work locally regardless.