Mixed Payout Tournament
Table of Contents
- Introduction
- Callback Flow
- Endpoint & Authorization
- Prize Types
- Request Structure
- Request Body Examples
- Response Handling
- Display & UX Notes
- Migration / Backward Compatibility
Introduction
The Mixed Payout Tournament feature extends the existing Settle Bet Callback to support multiple prize types. Instead of cash-only payouts, operators can now configure tournaments where winners receive a combination of:
- Cash prizes
- Bet credits
- Open tickets
- Direct (contest-specific) tickets
- Manual (text-only) prizes
This change ensures flexibility for promotions, recurring events, and cross-tournament incentives, while remaining backward-compatible with existing cash-only tournaments.
Below is an example of a prize pool of such a tournament:

Callback Flow
When a tournament ends and results are confirmed, the system triggers the Settle Bet Callback.
The callback sends the full set of participants, including their rank, scores, and any payouts.
All non-manual prizes (cash and tickets) are automatically processed through the callback. That means any fantasy tickets will be given out before the callback fires.
Manual prizes (e.g. freebets or any other manual prize with a descriptive text) must be handled by the operator's own system.
Retries will re-send the full payload if the initial request fails. Your system should remain idempotent and resilient to duplicates.
Endpoint & Authorization
Endpoint:
POST https://{your_server}/winners-
Authorization: Bearer customer {admin_token}
The admin_token is a short-lived JWT generated by our system. It must be validated for authenticity.
Prize Types
The following prize types are supported in mixed payout tournaments:
- Cash
- Standard currency-based payout.
- Works with all supported currencies (€, £, etc.).
- Bet Credits
- Issued as manual-text prizes using a naming convention (e.g.
€10 Bet Credit). - Settled manually, but listed in the callback payload.
- Issued as manual-text prizes using a naming convention (e.g.
- Tickets
- Open Ticket
- Value-based, usable for any tournament with a matching buy-in.
- Default expiration: 30 days.
- Displayed as → Open Ticket with 🎟️ as icon
- Tournament Specific Ticket
- Valid only for a specific tournament.
- Displayed as → €2.30 Weekly Monster Ticket
- Open Ticket
- Manual (Text)
- Free-form descriptive text (e.g., “Custom Promo Reward”).
- Used for promotions and special cases.
Request Structure
The request body remains consistent with the existing Settle Bet Callback, but includes two additional fields in the bet object to represent ticket or non-cash prizes. All existing fields remain unchanged for backward compatibility.
// Ticket object structure in request payload
{
...,
"qualifier_ticket": {
"id": <integer>,
// null for open tickets, integer for tournament specific tickets
"tournament": <integer_or_null>,
"amount": <decimal>,
"currency": <string>
},
...
}
// Manual prize in request payload
{
...,
"payout_text": <string>
...
}
If either qualifier_ticket or payout_text matching manual prizes are present, then payout and base_payout can be disregarded. In these cases, payout should always be of 0 value and base_payout will merely represent the cash equivalent of the manual prize.
Example 1
payout_textwith value5 Bonus Betswill havebase_payoutof5.00andpayoutof0.
Example 2
qualifier_ticketfor open tournament with entry value1.00will havebase_payoutof1.00andpayoutof0.
Request Body Examples
Below we have the request body example for settling a tournament with the following mixed prizes:
- Rank 1: Cash
- Rank 2: Tournament specific fantasy ticket
- Rank 3: Open fantasy ticket
- Rank 4: Freebet credits
{
"pools": [
{
"pool": {
"currency": "EUR",
"overdraw": "17.15",
"overlay": true,
"cost": 0,
"client": "customer",
"tags": [],
"guaranteed": true,
"category": "admin_created",
"name": "Mixed Payouts Tournament",
"gameType": "football",
"distribution": "mixed",
"uid": 89922,
"amount": 0,
"competitions": [
{
"period": 2022,
"sport": "football",
"uid": "61cad74a46cef3b89efbc8fc",
"name": "Example League"
}
],
"game": "fantasy"
},
"bets": [
{
"user": {
"name": "user01",
"uid": "87359",
"client": "customer"
},
"bet": {
"base_payout": "10.00",
"rake": 0,
"uuid": "441055|172dcdc2-8cf6-4052-bf2d-970ce61bb962",
"amount": 0,
"base_amount": 0,
"payout": "10.00",
"rank": 1,
"currency": "EUR",
"uid": 13454743,
"score": 46
}
},
{
"user": {
"name": "user02",
"uid": "87745",
"client": "customer"
},
"bet": {
"rank": 2,
"currency": "GBP",
"score": 37,
"amount": 0,
"uuid": "441355|7de16d45-1b85-4461-990d-bc4096d2cc4f",
"uid": 13454744,
"qualifier_ticket": {
"id": 187179,
"tournament": 89299,
"amount": 1.15,
"currency": "EUR"
},
"base_payout": "1.15",
"payout": "0.00",
"base_amount": 0,
"rake": 0
}
},
{
"user": {
"name": "user03",
"uid": "87743",
"client": "customer"
},
"bet": {
"currency": "EUR",
"score": 37,
"uuid": "441354|b21f4048-2b9d-4ba8-a0cd-d88e9159bd78",
"qualifier_ticket": {
"id": 187180,
"currency": "EUR",
"amount": 1,
"tournament": null
},
"base_payout": "1.00",
"rank": 3,
"payout": "0.00",
"amount": 0,
"rake": 0,
"base_amount": 0,
"uid": 13454747
}
},
{
"user": {
"name": "user04",
"uid": "84958",
"client": "customer"
},
"bet": {
"amount": 0,
"payout": "0.00",
"uid": 13454748,
"uuid": "436365|e111ad64-9e67-40db-b04b-d068440de401",
"score": 35,
"payout_text": "5 Bonus Bets",
"rank": 4,
"base_amount": 0,
"rake": 0,
"base_payout": "5.00",
"currency": "EUR"
}
}
]
}
]
}
Response Handling
- Success → Respond with
200 OKonce all prize processing is complete. - Failure → Respond with a
4xx/5xxerror for the entire batch. The system will retry with the full payload.
Display & UX Notes
- Cash prizes → displayed with currency.
- Tickets → displayed with 🎟️ icon in standings.
- Bet Credits prizes → displayed as text only.
- Manual prizes → displayed as text only.
Migration / Backward Compatibility
- Existing integrations (cash-only payouts) continue to work with no changes.
- Mixed payouts extend the payload with 2 new fields in the
betobject. - Systems must be updated to parse the new prize fields if they need to support mixed tournaments.