reoffer
Goal: Two-step reoffer flow.
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.stake.Stake;
import java.math.BigDecimal;
import com.sportradar.mbs.sdk.entities.ref.TicketRef;
TicketRef reofferRef = TicketRef.newReofferTicketRefBuilder()
.setTicketId("prior-ticket-id")
.setTicketSignature("prior-signature")
.build();
// Step 1
TicketRequest step1 = TicketRequest.newBuilder()
.setTicketId("tid-reoffer-rej")
.setContext(TicketContext.newBuilder()
.setLimitId(123L)
.setChannel(Channel.newMobileChannelBuilder()
.setLang("en")
.setIp("127.0.0.1")
.setDeviceId("deviceId123")
.build())
.setEndCustomer(EndCustomer.newBuilder().setId("customer_reoffer_rejected").build())
.setRef(reofferRef)
.build())
.setBets(Bet.newBuilder()
.setBetId("bet-1")
.setSelections(Selection.newUfSelectionBuilder()
.setProductId("3").setEventId("sr:match:15050881")
.setMarketId("m1").setOutcomeId("o1")
.setOdds(Odds.newDecimalOddsBuilder().setValue(new BigDecimal("2.0")).build())
.build())
.setStake(Stake.newCashStakeBuilder().setAmount(new BigDecimal("10")).setCurrency("EUR").build())
.build())
.build();
TicketResponse r1 = mbsSdk.getTicketProtocol().sendTicket(step1);
// REJECTED -430; suggestion type reoffer, mode automatic, cash 1000 EUR
// Step 2 — same ref shape, accepted customer
TicketRequest step2 = TicketRequest.newBuilder()
.setTicketId("tid-reoffer-acc")
.setContext(TicketContext.newBuilder()
.setLimitId(123L)
.setChannel(Channel.newMobileChannelBuilder()
.setLang("en")
.setIp("127.0.0.1")
.setDeviceId("deviceId123")
.build())
.setEndCustomer(EndCustomer.newBuilder().setId("customer_reoffer_accepted").build())
.setRef(reofferRef)
.build())
.setBets(Bet.newBuilder()
.setBetId("bet-1")
.setSelections(Selection.newUfSelectionBuilder()
.setProductId("3").setEventId("sr:match:15050881")
.setMarketId("m1").setOutcomeId("o1")
.setOdds(Odds.newDecimalOddsBuilder().setValue(new BigDecimal("2.0")).build())
.build())
.setStake(Stake.newCashStakeBuilder().setAmount(new BigDecimal("1000")).setCurrency("EUR").build())
.build())
.build();
TicketResponse r2 = mbsSdk.getTicketProtocol().sendTicket(step2);
// ACCEPTEDWire JSON — Step 1
Step 2 is identical except endCustomer.id = "customer_reoffer_accepted", ticketId = "tid-reoffer-acc", and typically stake "1000".
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.endCustomer.id
customer_reoffer_rejected / customer_reoffer_accepted
Mandatory (sandbox)
string
No (routing)
content.context.ref.type
"reoffer"
Mandatory (sandbox)
string
No (routing)
content.context.ref.ticketId
prior ticket id
Mandatory when ref present
string
Yes (demo)
content.context.ref.ticketSignature
prior signature
Mandatory when ref present
string
Yes (demo)
content.bets[].stake
(1 stake)
Mandatory
array of object
No
content.bets[].stake[].type
"cash"
Mandatory
string
No (routing)
content.bets[].stake[].amount
"10"
Mandatory
string
Yes
content.bets[].stake[].currency
"EUR"
Mandatory
string
Yes
Expected response
Step 1
getStatus()
AcceptanceStatus.REJECTED
getCode()
-430
getMessage()
"Reoffer required"
Suggestion
type reoffer, mode "automatic", cash "1000" EUR
Step 2
getStatus()
AcceptanceStatus.ACCEPTED
getCode()
0
getMessage()
"accepted" (sandbox)
Common mistakes
Missing ref.type reoffer
Does not match reoffer routes
Using rejected customer on step 2
Still rejected -430
Omitting ref entirely
Fallback / wrong scenario
See also: Error responses in the parent manual.
Was this helpful?