FAQ
General
Section titled “General”What is the Seamless Wallet pattern?
Section titled “What is the Seamless Wallet pattern?”The Seamless Wallet means Beexar never holds player funds. Instead, we call your server to debit (bet), credit (win), or reverse (rollback) funds. Your platform is the single source of truth for player balances.
Amounts & Currency
Section titled “Amounts & Currency”Why does Beexar use decimal strings?
Section titled “Why does Beexar use decimal strings?”Decimal strings (e.g. "10.50") are human-readable and avoid precision issues with integer conversion, especially for cryptocurrencies with many decimal places (e.g. BTC has 8 decimals, ETH has 18).
How should I handle currency precision?
Section titled “How should I handle currency precision?”Use the ISO 4217 standard for the number of decimal places per currency. Store amounts using a decimal type (not floating-point) in your database. The maximum precision is 18 decimal places.
Rounds & Actions
Section titled “Rounds & Actions”Can a win be matched to a specific bet?
Section titled “Can a win be matched to a specific bet?”Not directly. A win and a bet within the same round share the same round_id, but they have independent id_provider values. In simple games (dice, plinko, crash), there is typically one bet and one win per round. In slots, there can be multiple bets and wins per round.
Can multiple bet/win transactions happen in one round?
Section titled “Can multiple bet/win transactions happen in one round?”Yes. In multi-step games like slots with bonus rounds or free spins, a single round_id can contain multiple bet and win transactions, delivered across one or more /betwin calls. Each transaction has its own id_provider.
What if a rollback arrives before the original action?
Section titled “What if a rollback arrives before the original action?”Create a tombstone — a record that prevents the original action from being processed if it arrives later. Return a successful response (HTTP 200), not an error. This is a critical edge case due to network timing.
Is the /finish endpoint mandatory?
Section titled “Is the /finish endpoint mandatory?”You must implement it, but it is not sent on every round. Beexar sends /finish only when the last /betwin did not set finished: true (for example, a multi-step slots round, or session expiry with an open round). It does not change the balance — respond with the current balance: { "balance": "..." }. Use it for reconciliation and reporting.
What is round_id vs id_provider?
Section titled “What is round_id vs id_provider?”round_id: Identifies a game round. All transactions (bets, wins, rollbacks) in one round share the sameround_id. In multiplayer games (crash), each player bet is settled as its own round, so each bet has its ownround_ideven though the underlying game round is shared.id_provider: Identifies a single transaction within a round, generated by Beexar. Used for idempotency. Each transaction has a uniqueid_provider.
Rollback
Section titled “Rollback”When does Beexar send a rollback?
Section titled “When does Beexar send a rollback?”Beexar sends a rollback when:
- A game error occurs after the bet was confirmed (operator returned HTTP 200) but before the result was determined
- A bonus or free-spins session times out in multi-step games (e.g., slots)
- In crash games, if a win wallet call fails during cashout, or if a bet is stuck in a transitional state for too long
Beexar does not send a rollback after a failed or timed-out bet. If all retries are exhausted without a successful response, the round is considered “not started” and an error is returned to the player.
Should I process a rollback if the player has insufficient funds?
Section titled “Should I process a rollback if the player has insufficient funds?”Yes. Even if rolling back a win would make the player’s balance negative, process the rollback. The financial integrity of the round takes priority.
What if I receive the same rollback twice?
Section titled “What if I receive the same rollback twice?”Return the original response. Like bets and wins, rollbacks are identified by id_provider and must be idempotent.
Sessions & Game Launch
Section titled “Sessions & Game Launch”How long does a session last?
Section titled “How long does a session last?”Sessions use a 30-minute sliding TTL — each player action extends it. When a session expires, open rounds are finalized (pending bets rolled back, /finish sent). The player is redirected to return_url if configured.
Can a player have multiple active sessions?
Section titled “Can a player have multiple active sessions?”A player can have one active session per game. Starting a new session for the same player and game invalidates the previous session.
Do I need to implement gRPC?
Section titled “Do I need to implement gRPC?”No. All operator-facing communication is HTTP/REST. You only need to implement HTTP endpoints.
Security
Section titled “Security”Do I need to whitelist Beexar IPs?
Section titled “Do I need to whitelist Beexar IPs?”Beexar does not require IP whitelisting. All requests are authenticated using HMAC-SHA256 signatures. However, you may optionally whitelist Beexar’s IP ranges for additional security — contact your account manager for the current IP list.
How do I rotate API keys?
Section titled “How do I rotate API keys?”Contact your Beexar account manager to rotate credentials. You can configure a new API key before deactivating the old one to avoid downtime.
Crash Game
Section titled “Crash Game”How does crash multiplayer work from the operator’s perspective?
Section titled “How does crash multiplayer work from the operator’s perspective?”Each player’s bet is treated as an independent round. Even though multiple players share the same crash round, each bet gets its own round_id and its own /betwin (and /finish when needed) calls. The operator does not need to know about the shared underlying round — just process each round_id independently.
Can a player place multiple bets in one crash round?
Section titled “Can a player place multiple bets in one crash round?”Yes. Each player can place up to 2 bets (slot 1 and slot 2) in a single crash round. Each bet gets a separate round_id and is settled independently. You will receive separate wallet callbacks for each bet.
What happens if a player disconnects during a crash round?
Section titled “What happens if a player disconnects during a crash round?”If the player already placed a bet, the round continues normally on the server side. The bet will either be resolved by the crash event (player loses) or by auto-cashout if configured. The operator will still receive all the wallet callbacks (/betwin, and /finish when the round was not already closed).
Does crash use WebSocket?
Section titled “Does crash use WebSocket?”The crash game frontend uses WebSocket for real-time updates (multiplier, round state, other players’ bets). However, operators do not need to implement or interact with WebSocket — all operator communication is standard HTTP callbacks.
Testing
Section titled “Testing”How do I test the integration?
Section titled “How do I test the integration?”Use demo mode and the Integration Test Game. Demo mode exercises the game UI with a virtual balance (no wallet calls); the Integration Test Game drives real callbacks to your wallet against a test operator — no real money involved.
Is there a reference wallet implementation?
Section titled “Is there a reference wallet implementation?”Yes. Beexar provides a reference wallet implementation that covers all 4 wallet endpoints. Contact your account manager for access.