custom_bet
Goal: Place a uf-custom-bet selection as customer_custom_bet with combined decimal odds ~38.9352 and nested UF legs → accepted.
Use Selection.newUfCustomBetSelectionBuilder(). Wire type "uf-custom-bet".
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 leg1 = Selection.newUfSelectionBuilder()
.setProductId("3").setEventId("sr:match:15050881")
.setMarketId("m1").setOutcomeId("o1")
.setOdds(Odds.newDecimalOddsBuilder().setValue(new BigDecimal("1.38")).build())
.build();
UfSelection leg2 = Selection.newUfSelectionBuilder()
.setProductId("3").setEventId("sr:match:22222222")
.setMarketId("m1").setOutcomeId("o1")
.setOdds(Odds.newDecimalOddsBuilder().setValue(new BigDecimal("1.38")).build())
.build();
UfSelection leg3 = Selection.newUfSelectionBuilder()
.setProductId("3").setEventId("sr:match:33333333")
.setMarketId("m1").setOutcomeId("o1")
.setOdds(Odds.newDecimalOddsBuilder().setValue(new BigDecimal("1.38")).build())
.build();
TicketRequest request = TicketRequest.newBuilder()
.setTicketId("tid-custom")
.setContext(TicketContext.newBuilder()
.setLimitId(123L)
.setChannel(Channel.newMobileChannelBuilder()
.setLang("en")
.setIp("127.0.0.1")
.setDeviceId("deviceId123")
.build())
.setEndCustomer(EndCustomer.newBuilder().setId("customer_custom_bet").build())
.build())
.setBets(Bet.newBuilder()
.setBetId("bet-1")
.setSelections(Selection.newUfCustomBetSelectionBuilder()
.setSelections(leg1, leg2, leg3)
.setOdds(Odds.newDecimalOddsBuilder().setValue(new BigDecimal("38.9352")).build())
.build())
.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_custom_bet"
Mandatory (sandbox)
string
No (routing)
content.bets[].selections[].type
"uf-custom-bet"
Mandatory
string
No (routing)
content.bets[].selections[].odds.value
"38.9352"
Mandatory
string
No (echoed; human decimal, not ×10000)
content.bets[].selections[].selections
nested UF legs
Mandatory
array of object
No
Expected response
getStatus()
AcceptanceStatus.ACCEPTED
getCode()
0
getMessage()
"accepted" (sandbox)
Common mistakes
Wrong selection type / customer
Route mismatch
Scaled odds 389352 on Ticket 3.0 wire
Use human decimal 38.9352
See also: Error responses in the parent manual.
Was this helpful?