LivePlay Bingo Integration Docs

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/play
  • externalsessionid — your session identifier
  • roundid — the affected round (from your wallet's debit call)
  • operator and brand
  • playerid
  • Approximate timestamp (UTC) of the issue, with a 5-minute window
  • modeREAL or DEMO
  • 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:

  1. The round genuinely had no win. A round can settle to zero. Direct integrators receive credit with creditamount: 0 and roundended: true in this case — that's the round closing. Aggregator-path casinos see this as a settled round in the aggregator's reporting.
  2. The wallet credit was sent but failed on your side. Check your wallet logs for the round's roundid. We retry credit on 5xx with exponential backoff (3 attempts, ~3s span). If all retries fail, we log and alert; contact support with the roundid.
  3. 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?"

The session has an absolute lifetime (24 hours by default). We don't currently emit a session-expired signal. If a player tries to play after expiry, the iframe will fail to load the game cleanly. To launch them again, call /gamelauncher/play with a new externalsessionid — the old session is dead, so reusing the same externalsessionid would just return the dead session.

"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: we're seeing CURRENCY_MISMATCH."

The session was launched with a currency that doesn't match what your wallet holds for that player. 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.

On this page