Responsible Gaming
Velo is designed to support operator-driven responsible gaming controls. As a B2B game provider, Velo integrates with your existing player protection systems through the Seamless Wallet API.
Operator-Side Controls
The following responsible gaming features are managed by the operator and enforced through the Seamless Wallet API:
| Feature | How It Works |
|---|---|
| Deposit / Loss Limits | Your wallet's /wallet/debit endpoint can reject bets that exceed the player's configured limits by returning BET_LIMIT_EXCEEDED |
| Session Time Limits | Track session duration using the game_session created at launch. Sessions expire after 1 hour by default; the operator can set session_token expiry to enforce reality checks |
| Self-Exclusion | Return PLAYER_BLOCKED from /wallet/authenticate or /wallet/debit for self-excluded players |
| Pause / Resume | Send pause or resume via WebSocket to instantly halt or resume gameplay. When paused, all bet attempts return "Game is paused". Use for AML/fraud flags or responsible gaming triggers |
| Reality Check Timeout | Pass reality_check_timeout (minutes) in the Game Launch request to trigger UKGC-compliant reality check dialogs at the specified interval |
| Reality Checks | Use VELO_BALANCE_UPDATE postMessage events to trigger reality check popups in your casino wrapper |
| Cool-Off Periods | Block new game launches via the /wallet/authenticate endpoint during cool-off periods |
Game-Level Protections
Velo enforces the following limits at the game level:
| Protection | Value |
|---|---|
| Maximum bet | $1,000 per bet |
| Maximum payout | $50,000 per bet |
| Maximum odds | 1000× |
| Lock buffer | Last 10 seconds of each round — no new bets accepted |
| Session TTL | Game sessions expire after 1 hour |
Provably Fair Settlement
Every round is settled using a verified Pyth Network oracle price with an on-chain proof URL. Players can independently verify that the settlement price was accurate and untampered.
Audit Trail
All transactions (debits, credits, rollbacks) are recorded in the database with full traceability:
- Every debit (bet) is paired with exactly one credit (settle or cashout)
- Transaction IDs link back to specific bets and rounds
- Pyth verification URLs are stored for every settlement and cashout
postMessage Events for Player Protection
Operators can use iframe postMessage events to monitor player activity in real-time:
javascript
window.addEventListener("message", (e) => {
if (!e.data.type?.startsWith("VELO_")) return;
switch (e.data.type) {
case 'VELO_BET_PLACED':
// Track wager amount for loss limit enforcement
trackWager(e.data.stake);
break;
case 'VELO_BET_SETTLED':
// Update P&L tracking
trackResult(e.data.payout - e.data.stake);
break;
case 'VELO_BALANCE_UPDATE':
// Trigger reality check if session is long
checkSessionDuration(e.data.balance);
break;
}
});Reporting API
Operators can query player activity for compliance reporting via the Reporting API.