Testing
The sandbox
Section titled “The sandbox”The sandbox is the full platform with play money: the demo-embed tenant,
the credentials in the Quick start,
and a match simulator instead of a live data feed. Point the tenant’s wallet
at your test server (in a local stack:
SEAMLESS_WALLET_URL_OVERRIDE=https://your-test-wallet.example/wallet) and
add your test site’s origin to embedOrigins.
Limit (demo-embed) |
|
|---|---|
| Minimum stake | 100 (= $1.00) per line |
| Maximum stake | 500,000 (= $5,000) |
| Maximum payout per bet | 50,000,000 |
| In-play acceptance delay | 3 seconds |
Simulated matches
Section titled “Simulated matches”The simulator schedules football, basketball and tennis around the clock and
plays them live: goals, cards, scores and clock, with in-play repricing and
bet stops. A football match takes about 17 real minutes. When a match ends,
its markets are resulted and settled automatically, so a bet placed on a
live match reaches your credit endpoint without anyone touching it.
For a local stack, SIM_SPEED (match minutes per real second, default 0.1)
and SIM_LIVE_FOOTBALL (simultaneous live matches, default 10) make it faster
or busier.
Settle a bet yourself
Section titled “Settle a bet yourself”To test settlement at once, use the back office (/admin/, staff login):
- Bets shows each bet with its market.
- Manual settlement: pick the market, set each outcome to won, lost,
void, half won or half lost (or void the whole market), give a reason, and
settle. Your wallet receives the
creditcalls: the payout, the stake for a void bet, 0 for a lost bet. - Settle the same market again with different results to test a
resettlement: you receive
resettle:credits or debits for the difference.
The same is available to scripts, with a staff token. Market ids contain /:
percent-encode them in the path.
POST /api/v1/admin/markets/ev_c59b551c6c42%2F1x2/settleAuthorization: Bearer <staff token>Content-Type: application/json
{"results": {"ev_c59b551c6c42/1x2/home": "won", "ev_c59b551c6c42/1x2/draw": "lost", "ev_c59b551c6c42/1x2/away": "lost"}, "void": false, "reason": "sandbox test"}Suspensions and the kill switch
Section titled “Suspensions and the kill switch”- Events & markets in the back office suspends a market: the sportsbook
shows it locked at once, and bets on it are refused (
market_suspended). - Jurisdictions (kill switch), for platform admins, closes betting for a
whole jurisdiction: the sportsbook shows a banner, the bet slip is disabled
and bets are refused (
jurisdiction_closed) before any stake is debited. Settlements of earlier bets still reach your wallet.
Test cases before go-live
Section titled “Test cases before go-live”Run these in the sandbox with your real integration. Keep the request logs.
Sessions and embedding
- A logged-in player opens the sportsbook and sees your wallet balance.
- An anonymous visitor browses; Log in to bet opens your login; after
login the slip is still there and the bet goes through (
set_launch_token). - A launch URL opened twice logs in only once.
- After 60 idle minutes (or after ending the session) the next action
triggers
session_expiredand youronSessionExpiredrestores it. - Logging out of your site logs out of the sportsbook (
logout()). - The sportsbook refuses to render on a page that is not in
embedOrigins. - Phone and desktop: sizing mode, bottom-sheet bet slip, deep links, both locales.
Wallet
- Signature: a valid request passes; a changed body, a wrong secret and a
timestamp older than 300 seconds are refused with
401. - A stake larger than the balance is refused with
insufficient_fundsand the player sees why. - The same
txIdsent twice moves money once and gets the same answer. - A won bet, a lost bet (credit of 0), a void bet (stake back) and a cash-out.
- A resettlement that turns a won bet into a lost one: the correction debit is applied even if the balance goes negative.
- A rollback for a debit you applied returns the money once; a rollback for a debit you never saw is remembered, and the late debit is refused.
- Your wallet down for two minutes: stakes are refused meanwhile, and every pending credit arrives once it is back.
- Your daily totals match the back office Reports.