Bonus Buy
A bonus buy lets the player pay a fixed multiple of the bet to go straight to a game's bonus — a guaranteed feature round instead of waiting for one to come up in play. Eight games sell one. A buy is a feature you switch on per game (after Slotty Labs has enabled bonus buys for your casino); it is never on by default.
Every bought round is an ordinary, recorded, provably fair round of the same game: one bet (the price), the game's own draws, the game's own payout rules on the base bet. The prices are set by the game maths; see each game's page for the figures behind them.
Games and options
| Game | Option (buy) | Dialog title | Price (× the bet) | What the player gets |
|---|---|---|---|---|
| Slotty Slots | free-spins | Buy Free Spins | 12.45× | 10 free spins on all 20 lines; the price is 12.45× the total bet (every line) |
| Popworks | color-rush | Buy Color Rush | 32.80× / 32.90× / 33.60× / 33.80× (rtp-92 / rtp-94 / rtp-96 / rtp-97) | Color Rush with 10 free spins and no paid spin; the round pays at most 500× the stake |
| 3D City: Neighborhoods | skyline | Buy Skyline Build | 10× | A build that is always the Skyline district or higher |
| Fox'n Flock | golden-flock | Buy Golden Flock | 2.65× | The first catch opens the Golden Flock (4 banked catches at ×3); the rest of the run plays as usual |
| Shatter | extreme-break | Buy Extreme Break | 17× | One Extreme strike that always drops at least one token |
| Strike | blaze-strike | Buy Blaze Strike | 10× | One Long shot strike that always lights at Blaze or higher |
| Overload | breach-surge | Buy Reactor Breach — Surge mode | 36× | A guaranteed Reactor Breach in Surge mode |
| Overload | breach-meltdown | Buy Reactor Breach — Meltdown mode | 94× | A guaranteed Reactor Breach in Meltdown mode |
| Ricochet | special-tight | Buy Special Round — Tight | 5× | One Tight shot that is sure to unlock a special round |
| Ricochet | special-scatter | Buy Special Round — Scatter | 7× | One Scatter shot that is sure to unlock a special round |
| Ricochet | special-wild | Buy Special Round — Wild | 20× | One Wild shot that is sure to unlock a special round |
The prices above are the ones the engines sell (the certification evidence records them per RTP variant, and a test holds this table to it). Only Popworks' price depends on the RTP variant you run. The option ids are what a round request names (buy) and what records and webhooks report.
Who can sell a buy
A buy is sold in a round only when all of these hold:
- Slotty Labs has enabled bonus buys for your casino, and you have switched the buy on for the game (Dashboard → Bonus features; see Operator Dashboard).
- Your licence permits it. Bonus buys are sold only under MT (Malta) or CW (Curaçao) licences — and only when every licence your casino plays under is MT or CW. A casino with any other licence sells none, in any money mode. Never under a GB licence.
- In real money, the player's country is known and permitted. Send the player's
countrywithcreate-token. A real-money session without a country never sells a buy, and a buy is not sold to a player in GB, UK, DE, NL, DK, CA, PT, SE, ES, IT or US (a region code follows its country). This list follows legal advice and can change. - The price fits your limits (below).
- The game can pay what the buy plays for at this bet: an option whose gate is above your maximum-win multiplier is not offered, and a stake at which your maximum win per round would cut the bonus short is refused (the refusals say which).
Play money (demo sessions) follows the same switches and licence rule; the country is checked in real money only. Bonus buys are not yet available through aggregators.
Turning a buy off stops it at the next round start. A bought round already under way finishes, and free spins already bought are still played and paid — also for a player you suspend in the meantime (see Responsible Gaming).
The price and your limits
The price is debited as one bet: ⌈bet × price multiple⌉ in the currency's smallest unit (for Slotty Slots, the bet is the total bet on all 20 lines). The most one bet may debit — the max debit — is, per game and currency:
- your buy limit for the game, if you set one (it may be higher or lower than your max bet), otherwise your max bet for the game;
- lowered to the jurisdiction max bet of your licence when that is lower — a buy limit can never exceed it;
- lowered to a bonus or session bet limit of the player when one applies and is lower.
The largest bet that can buy an option is ⌊max debit ÷ price multiple⌋ (the game info reports it per option as maxBaseBet). A request above it is refused before anything is debited (30701, bonus_buy_max_bet, with maxDebit, maxBaseBet and which limit applied). At the platform default max bet of 1,000.00, for example, a 17× buy accepts bets up to 58.82 and a 10× buy bets up to 100.00.
Slotty Slots also needs your maximum win per round to cover 500× the total bet (each bought free spin pays up to 500× that bet): above ⌊max win ÷ 500⌋ the buy is refused (20001, max_win_cap). Its free-spin wins are ×1.25 and, like every payout, rounded down to the currency's smallest unit; the exact effect of that rounding on the buy's return is published per bet per line in the Slotty Slots page.
A buy is always paid from real funds: it is refused when it would be paid from bonus funds, it never uses a free-spin or free-chip offer, it never contributes to a progressive jackpot, and it never counts toward wagering.
Game info and the buy request
The games' own clients do this for you; it matters only if you build your own client or monitoring.
GET /api/v1/games/:gameId(in the player's session) answersbonusBuy: { allowed, reason, maxDebit, limit, options[] }. Each option hasid,name,description,fine(the complete fine print the buy dialog shows),priceHundredths(1700= 17×),minCapHundredths(the lowest effective cap the option is played at, where it has one),modeorsettingwhere the option belongs to one, andmaxBaseBet. Amounts are minor-unit strings.reason(whenallowedis false) is one ofunsupported,operator,jurisdiction,country,unavailable,cap,limit.POST /api/v1/games/:gameId/roundswith the base bet asbetAmount, the option asbuy, the option'smode/settingwhere it has one, and optionallyexpectBuyPrice(thepriceHundredthsthe player saw) orexpectBuyDebit(the exact debit): if the price changed in between, the request is refused (bonus_buy_price_changed) instead of charging a different price.
The buy dialog shows the price in money, the multiple and the option's fine print. No return, odds or percentage is ever shown to the player.
What a bought round records
| Where | What |
|---|---|
game_rounds.bet_amount, the round's totalBet | the price debited |
bet_details | buy (the option) and the base betAmount; featureDecision — the licence and the player's country the round was sold under, with their sources |
result_data | buy, buyPriceHundredths; the four instant games also buyRules (the hash of the rules the price was set on) and the round's caps (moneyCap / operatorCap100, Shatter maxWin / operatorCap100) |
| Ledger debit | metadata.bonusBuy = { option, priceHundredths, baseBet }, description "Bonus buy on <game>" |
Webhook round.completed | feature: "bonus_buy", bonusBuy: { option, priceHundredths } (Webhooks) |
| Round history | feature: "bonus_buy", boughtOption; the free spins of a bought Slotty Slots bonus are their own rounds, each with bonusTriggerRoundId (the bought round) and boughtOption |
Every round also records the engine that played it (engineVersion, engineBuild).
Verification
Every bought round is verifiable like any other round. The verifier replays it on the base bet at the pinned price and checks that the debit was exactly ⌈bet × price⌉: Shatter, Strike, Overload and Ricochet pin their buy rules by hash (a round recorded under an unknown hash is reported as not reproducible, never guessed), and the four other games replay under the rules they have sold since 3 November 2026. A bought Slotty Slots round lists the free-spin rounds it paid for, each verifiable on its own. Per game, the draws a bought round uses and the fields /verify reports are in Provably Fair → Bought rounds.

