Skip to content

Jurisdictions and responsible gambling

A jurisdiction defines the rules that apply to a product and player. The frontend must apply the resolved session settings.

A jurisdiction preset is a platform configuration. It is not a game certificate. Supported deployment markets can also lack a preset. Confirm the game's approval, operator integration, and applicable product classification before release.

Platform preset inventory

This table records all 13 named Hizi presets on 15 September 2026. It describes code defaults, not a complete statement of local law. Source revisions appear in the contract audit.

Amounts below are authoring values in 1/100 of the base currency. The RGS converts them before returning session settings. Do not copy these amounts into a frontend currency table.

Preset codeSettings pinned by the preset
jurisdiction-agccmaxStake=5000; minSpinTime=3000; reality checks on; stop, turbo, autoplay, and multiple instances off; autoplay loss limit required.
jurisdiction-atminSpinTime=2000; autoplay off; maxPackageStake=5000.
jurisdiction-brGamble off; show maxWin odds; hide demo balance; translate errors; do not store autoplay; show total autoplay stake; inactivity timeout 1800 seconds; show paytable on entry.
jurisdiction-bgminSpinTime=3000; stop off.
jurisdiction-demaxStake=100; minSpinTime=5000; show RTP, jackpot odds, and both win odds; XRTP and coins off; stop, turbo, autoplay, package buy, and multiple instances off; dynamic timing on.
jurisdiction-grmaxStake=2000; maxExposure=14000000; minSpinTime=2000; stop off; maxPackageStake=2000.
jurisdiction-ltminSpinTime=1000; stop, gamble, and autoplay off; package buy on.
jurisdiction-mgaReality checks and win/loss display on; autoplay loss limit required.
jurisdiction-nlTurbo, autoplay, and package buy off; defaultStakeIndex=0; force default stake.
jurisdiction-caonminSpinTime=2500; stop, turbo, and autoplay off; show both win odds and net position; inactivity timeout 1200 seconds.
jurisdiction-ptminSpinTime=3000; package buy off.
jurisdiction-seminSpinTime=3000; stop, turbo, and autoplay off.
jurisdiction-ukgcmaxStake=500; minSpinTime=2500; reality checks on; stop, turbo, autoplay, package buy, and multiple instances off; show net position and session timer; require autoplay loss limit; suppress celebrations for returns no greater than stake.

jurisdiction-not-set has no pinned settings. It does not select a permissive jurisdiction. Unlisted fields still require resolved values from the operator profile.

South Africa is an example of a deployment market without a dedicated Hizi preset. Use the approved operator configuration and certificate for such markets. Do not substitute jurisdiction-not-set as evidence of compliance.

UKGC requirements and preset gaps

UKGC means the United Kingdom Gambling Commission. Its online-slot cap is £5 for players aged 25 or older. The cap is £2 for ages 18–24. It applies to total stakes within a game cycle. The preset's 500 cannot identify a player's age. Require the correct player-specific cap from the operator. Do not derive age from locale or a client preference. UKGC stake guidance.

For slots, enforce at least 2.5 seconds between cycle starts. Require a new press after release. Prevent held-button repeat and simultaneous games. Disable turbo and early reveal controls. Do not celebrate a return that is no greater than total stakes. For casino games outside slots and peer-to-peer poker, the minimum cycle interval is 5 seconds. The shared 2500 ms preset does not implement that distinction. UKGC RTS 14.

Casino games require an individual commitment to each cycle. Disable autoplay through every input route. UKGC RTS 8.

Display elapsed session time for casino play outside peer-to-peer poker. Keep reality checks available through the agreed operator integration. UKGC RTS 13.

Display the session's net position in account currency. Preserve its accounting across session refresh. UKGC RTS 2.

Do not implement a universal rule that every bonus choice is a gamble. An awarded free feature and an elective wager need different controls. Classify the supplied options before applying restrictions.

Timing, turbo, and stop

Start a monotonic timer when accepting a new game cycle. Include network time and animation time in that interval. Enable the next cycle only after all these conditions hold:

  • The minimum interval has elapsed.
  • The required result presentation has finished.
  • The server state permits a new cycle.
  • Required animation reports have succeeded.
  • No operator pause, reminder, error, or session block remains.

Recheck the clock when a timer wakes. Background tabs throttle timers. A timer callback alone does not prove that input can resume.

Use the stricter reviewed interval where product rules exceed the returned preset. The slot example applies the interval to each presented bet step. This conservative policy can make a free feature slower.

dynamicMinSpinTime does not specify a complete algorithm. A fixed minimum is the safe default until an approved dynamic policy exists. Do not use a fast earlier spin to justify an unapproved short later spin.

Stop and turbo affect presentation only. They cannot change a result, cancel an accepted debit, or start a new cycle early. Stop-autoplay must always prevent another automatic paid start, even when early reel stopping is disabled.

Germany: additional integration requirements

The German regulator describes manual starts, a five-second interval, and disclosure of return and maximum-win probability. It also describes a five-minute break after acknowledgement at 60 minutes of continuous play. GGL player-protection requirements.

The Hizi preset does not define the complete break state or its persistence. Agree which component owns the reminder and break. Preserve that state through reload. Keep new play disabled until the authoritative break ends.

Do not infer permission for a product from the preset's name. Confirm approved text, game classification, stake exceptions, and the applicable certificate with the operator.

Messages and session displays

The SDK provides no universal ukgcMessages bundle. Supply approved localized text for these states:

StateRequired frontend behavior
Loading noticeDisplay loadMsg for the configured minimum.
Rules on entryDisplay current rules before accepting play.
Reality checkDisplay elapsed time. Include confirmed win/loss when required. Offer Continue, Exit, and History as applicable.
Required breakState that play is paused. Show the remaining break time when available. Prevent new bets.
Financial or responsible-gambling limitShow the supplied restriction and permitted actions. Do not offer a retry that bypasses it.
Session expired or inactiveStop play. Offer the approved exit or reconnect flow.
Interrupted roundExplain that the frontend restores the existing round.
Insufficient balanceShow the error. Offer the operator's cashier action when available.
Result no greater than stakeDisplay the returned amount without a win celebration.

Use the player's language. Keep required text readable in both orientations. Preserve keyboard focus in dialogs. A close icon or Escape key must not bypass required acknowledgement.

Reality checks

rcInterval is in milliseconds. The Operator API spec states this, and the SDK's IGameSettings.rcInterval comment incorrectly says seconds. No spec states the unit of gameVariables.rcElapsed. It is compared against rcInterval, so treat it as milliseconds, and confirm the unit with hizi.io support before a certified release.

text
elapsedTowardsReminder = initialRcElapsed + elapsedSinceConnection
reminderDue = elapsedTowardsReminder >= rcInterval

After acknowledgement, reset the reminder interval according to the operator contract. Do not reset the overall session timer. An expired reminder blocks the next paid action. A long feature must not make the reminder disappear.

Coordinate client timers with pauseRequested, continueRequested, and server error REALITYCHECK. Use OperatorInterface.realityCheck only for the agreed owner. It does not create a generic in-game dialog.

Some operators require OperatorInterface.sendRealityCheckResponse(backendURL, token, continued). That method belongs to @hoelle/operator-interface, not to the engine SDK. Check that response before continuing. Do not resend the rejected bet. See Operator Interface.

Autoplay where permitted

Require a finite round count and an explicit start. Show total cost when requested. Require the configured loss limit. Provide a persistent stop control.

Stop before the next paid bet after an error, limit, insufficient balance, stake change, bonus entry, player choice, or operator stop. Recheck permissions and limits for every iteration. Do not restart automatically after recovery or a reminder.

Preserve original choice indexes when hiding disallowed options. Never automatically choose the first available gamble or bonus award.

Release evidence

Test the resolved settings for each supported market, currency, player tier, and vertical. Presets are useful fixtures, but they are only one input. Record the approved messages, timing, restrictions, recovery behavior, and certificate version. Use the release checklist.