For the complete documentation index, see llms.txt. This page is also available as Markdown.

fallback

Goal: Show what happens when no sandbox route matches — a successful protocol round-trip with a rejected reply, code -999, message No matching sandbox scenario found.

Sandbox module name: fallback (fallback_scenario).

When this fires

Any supported operation whose facet tuple does not match a ROUTING_TABLE row (after wildcard / trailing-None relaxation) lands here. That includes:

Operation (SDK)
Reply content type

sendTicket

ticket-reply

sendCancel

cancel-reply

sendCashoutInform / sendCashout

cashout-inform-reply / cashout-reply

sendMaxStake

max-stake-reply

sendTicketInform

ticket-inform-reply

sendExtSettlement

ext-settlement-reply

Handle with if on the typed response (getCode() == -999), not try/catch. Transport / schema failures are different — see parent Error responses.

Example: wrong placement customer + event

A ticket that looks like single_accepted but uses an unknown customer and/or wrong event does not match any placement row.

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;

TicketRequest request = TicketRequest.newBuilder()
    .setTicketId("tid-unknown")
    .setContext(TicketContext.newBuilder()
        .setLimitId(123L)
        .setChannel(Channel.newMobileChannelBuilder()
            .setLang("en")
            .setIp("127.0.0.1")
            .setDeviceId("deviceId123")
            .build())
        .setEndCustomer(EndCustomer.newBuilder()
            .setId("customer_does_not_exist")
            .build())
        .build())
    .setBets(Bet.newBuilder()
        .setBetId("bet-1")
        .setSelections(Selection.newUfSelectionBuilder()
            .setProductId("3")
            .setEventId("sr:match:99999999")
            .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 response = mbsSdk.getTicketProtocol().sendTicket(request);
// expect: REJECTED, getCode() == -999,
// getMessage() == "No matching sandbox scenario found"

Wire JSON (request)

Field name
Value
Mandatory / Optional
Data type
Ignored by sandbox

content.context.endCustomer.id

"customer_does_not_exist"

Present

string

No (routing — no match)

content.bets[].selections[].eventId

"sr:match:99999999"

Present

string

No (routing — no match)

Other ticket fields

as in single_accepted

as usual

as usual

Expected response (placement)

Java getter
Expected value

getStatus()

AcceptanceStatus.REJECTED

getCode()

-999

getMessage()

"No matching sandbox scenario found"

getTicketId()

"tid-unknown" (echo)

Same fallback on other operations

Examples that also yield -999 / No matching sandbox scenario found on the matching reply type:

Call
Example mismatch

sendCancel

Non-magic ticketId and punter not in customer_cancel_*

sendCashoutInform

Non-magic ticketId and punter not in customer_cashout_*

sendMaxStake

Nested event not sr:match:15050881

sendTicketInform

customer_inform but betValidations[0].code3

sendExtSettlement

meta.punter.idcustomer_external

Common mistakes

Mistake
Result

Treating -999 as ServerErrorResponseException

Wrong — it is a rejected content reply on a successful round-trip

Confusing multi-bet schema error-reply with fallback

Multi-bet without a special customer can be error-reply / exception; unmatched routes are -999

Wrong customer or wrong event on placement

Either alone can fail the facet match

See also: Error responses in the parent manual.

Was this helpful?