system_banker_ways
Goal: Place a ticket with two top-level selections as customer_system_banker (only this customer allows multi top-level selection): a system (size 1) containing nested UF + ways, plus a banker UF → accepted.
How to build the request (Java SDK)
Java example
import com.sportradar.mbs.sdk.entities.channel.Channel;
import com.sportradar.mbs.sdk.entities.common.AcceptanceStatus;
import com.sportradar.mbs.sdk.entities.common.Bet;
import com.sportradar.mbs.sdk.entities.common.EndCustomer;
import com.sportradar.mbs.sdk.entities.common.TicketContext;
import com.sportradar.mbs.sdk.entities.odds.Odds;
import com.sportradar.mbs.sdk.entities.request.TicketRequest;
import com.sportradar.mbs.sdk.entities.response.TicketResponse;
import com.sportradar.mbs.sdk.entities.selection.Selection;
import com.sportradar.mbs.sdk.entities.selection.UfSelection;
import com.sportradar.mbs.sdk.entities.stake.Stake;
import java.math.BigDecimal;
UfSelection s1 = Selection.newUfSelectionBuilder()
.setProductId("3").setEventId("sr:match:15050881")
.setMarketId("m1").setOutcomeId("o2")
.setOdds(Odds.newDecimalOddsBuilder().setValue(new BigDecimal("1.38")).build())
.build();
UfSelection s2 = Selection.newUfSelectionBuilder()
.setProductId("3").setEventId("sr:match:22222222")
.setMarketId("m1").setOutcomeId("o3")
.setOdds(Odds.newDecimalOddsBuilder().setValue(new BigDecimal("1.38")).build())
.build();
UfSelection w1 = Selection.newUfSelectionBuilder()
.setProductId("3").setEventId("sr:match:44444444")
.setMarketId("10").setOutcomeId("o11")
.setOdds(Odds.newDecimalOddsBuilder().setValue(new BigDecimal("1.38")).build())
.build();
UfSelection w2 = Selection.newUfSelectionBuilder()
.setProductId("3").setEventId("sr:match:44444444")
.setMarketId("m1").setOutcomeId("o3")
.setOdds(Odds.newDecimalOddsBuilder().setValue(new BigDecimal("1.38")).build())
.build();
UfSelection banker = Selection.newUfSelectionBuilder()
.setProductId("3").setEventId("sr:match:33333333")
.setMarketId("m1").setOutcomeId("o2")
.setOdds(Odds.newDecimalOddsBuilder().setValue(new BigDecimal("2.30")).build())
.build();
TicketRequest request = TicketRequest.newBuilder()
.setTicketId("tid-s42")
.setContext(TicketContext.newBuilder()
.setLimitId(123L)
.setChannel(Channel.newMobileChannelBuilder()
.setLang("en")
.setIp("127.0.0.1")
.setDeviceId("deviceId123")
.build())
.setEndCustomer(EndCustomer.newBuilder().setId("customer_system_banker").build())
.build())
.setBets(Bet.newBuilder()
.setBetId("bet-1")
.setSelections(
Selection.newSystemSelectionBuilder()
.setSize(1)
.setSelections(s1, s2, Selection.newWaysSelectionBuilder().setSelections(w1, w2).build())
.build(),
banker)
.setStake(Stake.newCashStakeBuilder().setAmount(new BigDecimal("10")).setCurrency("EUR").build())
.build())
.build();
TicketResponse response = mbsSdk.getTicketProtocol().sendTicket(request);
// ACCEPTEDWire JSON (what the SDK sends)
operatorId
9985
Mandatory
integer
Yes
correlationId
"corr-1"
Mandatory
string
No (echoed in reply)
timestampUtc
1710000000000
Mandatory
integer
Yes
operation
"ticket-placement"
Mandatory
string
No
version
"3.0"
Mandatory
string
No (echoed in reply)
content
(object)
Mandatory
object
No
content.type
"ticket"
Mandatory
string
No
content.context
(object)
Mandatory
object
No
content.context.limitId
123
Mandatory
integer
Yes
content.context.channel
(object)
Mandatory
object
Yes
content.context.channel.type
"mobile"
Mandatory
string
Yes
content.context.channel.lang
"en"
Mandatory
string
Yes
content.context.channel.ip
"127.0.0.1"
Optional
string
Yes
content.context.channel.deviceId
"deviceId123"
Optional
string
Yes
content.context.endCustomer
(object)
Mandatory (sandbox)
object
No
content.context.endCustomer.id
"customer_system_banker"
Mandatory (sandbox)
string
No (routing)
content.bets[].selections
(2 top-level selections)
Mandatory
array of object
No
content.bets[].selections[0].type
"system"
Mandatory
string
No (routing)
content.bets[].selections[0].size
[1]
Mandatory
array of integer
No
nested ways / UF
as in wire JSON
Mandatory
object
No
content.bets[].selections[1].type
"uf" (banker)
Mandatory
string
No
content.bets[].stake[].type
"cash"
Mandatory
string
No (routing)
Expected response
getStatus()
AcceptanceStatus.ACCEPTED
getCode()
0
getMessage()
"accepted" (sandbox)
Common mistakes
Multi top-level selection without customer_system_banker
Schema validation error
Missing nested ways / wrong size
Shape mismatch vs intended scenario
Missing sandbox match in nested UF
Route mismatch
See also: Error responses in the parent manual.
Was this helpful?