Troubleshooting
Debugging stuck rounds, common errors, and how to escalate
When something goes wrong in production, the answer is almost always faster if you have the right identifiers ready. This page tells you what to capture and where to send it.
What to capture before contacting support
Always include all of these:
sessionid— our session identifier, returned from/gamelauncher/playexternalsessionid— your session identifierroundid— the affected round (from your wallet'sdebitcall)operatorandbrandplayerid- Approximate timestamp (UTC) of the issue, with a 5-minute window
mode—REALorDEMO- What you observed — what the player saw, what your wallet recorded, what events fired (or didn't)
For frontend issues, also capture:
- Browser / webview type and version
- Console errors from the iframe (if your container exposes them)
- Network log of requests to our hosts
Common situations
"The round seems stuck. The player bought cards but no win was credited."
Most likely causes, in order:
- The round genuinely had no win. A round can settle to zero. Direct
integrators receive
creditwithcreditamount: 0androundended: truein this case — that's the round closing. Aggregator-path casinos see this as a settled round in the aggregator's reporting. - The wallet
creditwas sent but failed on your side. Check your wallet logs for the round'sroundid. We retrycrediton 5xx with exponential backoff (3 attempts, ~3s span). For a bingo round, if all retries fail we keep resending the same credit about every 5 minutes for about 3 hours, then check the round with you. For a slot spin, we keep retrying the same credit about every 2 minutes until your wallet accepts it. - The player closed the iframe before the round settled. The round still settled on our side and the wallet was credited. The player will see the updated balance next time they launch the game.
"How does the player exit the game?"
The iframe doesn't currently signal "player exited" to your parent page. Provide a close button on your iframe wrapper (outside the iframe itself) so the player can return to your lobby. The game's internal exit flow ends the player's view of the game inside the iframe but does not post a message to your parent window.
"How do I detect that a session has expired?"
We don't currently emit a session-expired signal. The player token the
iframe holds lasts 1 hour, and the session record 24 hours. If a player
reloads or reconnects after their token has expired, the game won't load
cleanly. To launch them again, call /gamelauncher/play for a fresh launch
URL. Once the previous launch code has expired (after 10 minutes), this
creates a new session even if you reuse the same externalsessionid.
"Why does a roundid start with slots:?"
It's a slot spin, not a bingo round. Every spin is its own
round with one debit and one credit. Store round IDs as strings; don't
expect a plain UUID.
"A credit or reverse arrived minutes after the bet."
That's expected. If a slot spin was interrupted on our side, or its credit
failed, a background job finishes it: it reverses spins that stopped before
their result was drawn, and retries unpaid credits about every 2 minutes with
the same transid. A bingo round's failed credit is resent the same way,
about every 5 minutes for about 3 hours. Be idempotent on transid.
"/freebet/give returns No active free cards campaign."
Grants are only accepted while a campaign we set up with you is open for that game and currency. See Free cards.
"Are there rate limits on /gamelauncher/play?"
We don't enforce a per-operator throttle today. If you anticipate sustained traffic above ~20 requests per second per operator, talk to us before go-live so we can provision a dedicated usage plan. See Rate limits.
"Direct integration: our wallet returns CURRENCY_MISMATCH."
The session was launched with a currency that doesn't match what your wallet
holds for that player. We treat it as a generic refusal, so the bet fails.
Either pick a supported currency in /gamelauncher/play or operate
per-currency sub-wallets on your side. We do not convert between currencies.
See Currency mismatch.
"Direct integration: we received a debit for a player who isn't in our system."
Return SESSION_NOT_FOUND (the wallet client treats this as session-expired
and surfaces a clear error to the player). Most often this is an
authentication bug on the casino side (wrong operator or token reused
across environments).
How we'll respond
For production incidents, we monitor session create rate, debit/credit success rate, and round settlement latency on our side. If you flag a stuck round with the identifiers above, expect:
- Acknowledgement within the SLA you signed at onboarding
- Replay link or transaction-log dump for the round
- A clear answer on whether money moved and where it landed
When in doubt, the wallet's credit call is the source of truth. If your
wallet log shows it landed, the player got paid — even if your frontend
didn't render it.